From cfebedb20d149d6da149972be6c32ba09c1aadc1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 23 Feb 2018 02:10:01 +0100 Subject: [PATCH] Ranges Support #60 --- src/error.rs | 6 ------ src/fs.rs | 26 -------------------------- 2 files changed, 32 deletions(-) diff --git a/src/error.rs b/src/error.rs index f9bbca241..084249217 100644 --- a/src/error.rs +++ b/src/error.rs @@ -627,12 +627,6 @@ pub fn ErrorPreconditionFailed(err: T) -> InternalError { InternalError::new(err, StatusCode::PRECONDITION_FAILED) } -/// Helper function that creates wrapper of any error and generate *RANGE NOT SATISFIABLE* response. -#[allow(non_snake_case)] -pub fn ErrorRangeNotSatisfiable(err: T) -> InternalError { - InternalError::new(err, StatusCode::RANGE_NOT_SATISFIABLE) -} - /// Helper function that creates wrapper of any error and generate *EXPECTATION FAILED* response. #[allow(non_snake_case)] pub fn ErrorExpectationFailed(err: T) -> InternalError { diff --git a/src/fs.rs b/src/fs.rs index 28a35aa4c..d92ad1e73 100644 --- a/src/fs.rs +++ b/src/fs.rs @@ -85,23 +85,13 @@ impl Responder for NamedFile { type Error = io::Error; fn respond_to(mut self, req: HttpRequest) -> Result { -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> 9e9ae13... Add content-range and accept-ranges header if let Some(rangeheader) = req.headers().get(header::RANGE) { let file_metadata = metadata(self.0)?; if let Ok(ranges) = HttpRange::parse(try!(rangeheader.to_str()), file_metadata.len()) { -======= - if let Ok(rangeheader) = req.headers().get("range").unwrap().to_str() { - let file_metadata = metadata(self.0)?; - if let Ok(ranges) = HttpRange::parse(rangeheader, file_metadata.len()) { ->>>>>>> de7c05c... #60: Basic Ranges header support let mut resp = HTTPPartialContent.build(); let length: usize = ranges[0].length as usize; let mut data: Vec = vec![0u8; length]; let _ = &self.1.seek(SeekFrom::Start(ranges[0].start))?; -<<<<<<< HEAD let _ = self.1.read_exact(&mut data)?; Ok(resp .header(header::CONTENT_RANGE, format!("bytes {}-{}/{}", ranges[0].start, ranges[0].start + ranges[0].length, file_metadata.len()).as_str()) @@ -118,22 +108,6 @@ impl Responder for NamedFile { resp.content_encoding(ContentEncoding::Identity); if let Some(ext) = self.path().extension() { let mime = get_mime_type(&ext.to_string_lossy()); -======= - let _ = self.1.read_exact(&mut data); - Ok(resp.body(data).unwrap()) - } else { - Ok(HTTPRangeNotSatisfiable.build() - .header(header::CONTENT_RANGE, format!("0-{}", file_metadata.len()).as_str()) - .body("").unwrap()) - } - } else { - //let file_metadata = metadata(self.0)?; - let mut resp = HTTPOk.build(); - resp.header(header::ACCEPT_RANGES, "bytes"); - resp.content_encoding(ContentEncoding::Identity); - if let Some(ext) = self.path().extension() { - let mime = get_mime_type(&ext.to_string_lossy()); ->>>>>>> de7c05c... #60: Basic Ranges header support resp.content_type(format!("{}", mime).as_str()); } let mut data = Vec::new();