Skip to content

Commit

Permalink
for NamedFile process etag and last modified only if status code is 200
Browse files Browse the repository at this point in the history
  • Loading branch information
fafhrd91 committed Apr 10, 2018
1 parent 5e6a0aa commit be288fa
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/application.rs
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,8 @@ impl<S> App<S> where S: 'static {
/// let app = App::new()
/// .prefix("/app")
/// .resource("/test", |r| {
/// r.method(http::Method::GET).f(|_| HttpResponse::Ok());
/// r.method(http::Method::HEAD).f(|_| HttpResponse::MethodNotAllowed());
/// r.get().f(|_| HttpResponse::Ok());
/// r.head().f(|_| HttpResponse::MethodNotAllowed());
/// })
/// .finish();
/// }
Expand Down Expand Up @@ -309,8 +309,8 @@ impl<S> App<S> where S: 'static {
/// fn main() {
/// let app = App::new()
/// .resource("/test", |r| {
/// r.method(http::Method::GET).f(|_| HttpResponse::Ok());
/// r.method(http::Method::HEAD).f(|_| HttpResponse::MethodNotAllowed());
/// r.get().f(|_| HttpResponse::Ok());
/// r.head().f(|_| HttpResponse::MethodNotAllowed());
/// });
/// }
/// ```
Expand Down Expand Up @@ -377,7 +377,7 @@ impl<S> App<S> where S: 'static {
///
/// fn main() {
/// let app = App::new()
/// .resource("/index.html", |r| r.f(index))
/// .resource("/index.html", |r| r.get().f(index))
/// .external_resource("youtube", "https://youtube.com/watch/{video_id}")
/// .finish();
/// }
Expand Down Expand Up @@ -449,14 +449,14 @@ impl<S> App<S> where S: 'static {
///
/// ```rust
/// # extern crate actix_web;
/// use actix_web::{App, HttpResponse, http, fs, middleware};
/// use actix_web::{App, HttpResponse, fs, middleware};
///
/// // this function could be located in different module
/// fn config(app: App) -> App {
/// app
/// .resource("/test", |r| {
/// r.method(http::Method::GET).f(|_| HttpResponse::Ok());
/// r.method(http::Method::HEAD).f(|_| HttpResponse::MethodNotAllowed());
/// r.get().f(|_| HttpResponse::Ok());
/// r.head().f(|_| HttpResponse::MethodNotAllowed());
/// })
/// }
///
Expand Down
15 changes: 15 additions & 0 deletions src/fs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,21 @@ impl Responder for NamedFile {
type Error = io::Error;

fn respond_to(self, req: HttpRequest) -> Result<HttpResponse, io::Error> {
if self.status_code != StatusCode::OK {
let mut resp = HttpResponse::build(self.status_code);
resp.if_some(self.path().extension(), |ext, resp| {
resp.set(header::ContentType(get_mime_type(&ext.to_string_lossy())));
});
let reader = ChunkedReadFile {
size: self.md.len(),
offset: 0,
cpu_pool: self.cpu_pool.unwrap_or_else(|| req.cpu_pool().clone()),
file: Some(self.file),
fut: None,
};
return Ok(resp.streaming(reader))
}

if self.only_get && *req.method() != Method::GET && *req.method() != Method::HEAD {
return Ok(HttpResponse::MethodNotAllowed()
.header(header::CONTENT_TYPE, "text/plain")
Expand Down
30 changes: 30 additions & 0 deletions src/resource.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,36 @@ impl<S: 'static> ResourceHandler<S> {
self.routes.last_mut().unwrap()
}

/// Register a new `GET` route.
pub fn get(&mut self) -> &mut Route<S> {
self.routes.push(Route::default());
self.routes.last_mut().unwrap().filter(pred::Get())
}

/// Register a new `POST` route.
pub fn post(&mut self) -> &mut Route<S> {
self.routes.push(Route::default());
self.routes.last_mut().unwrap().filter(pred::Post())
}

/// Register a new `PUT` route.
pub fn put(&mut self) -> &mut Route<S> {
self.routes.push(Route::default());
self.routes.last_mut().unwrap().filter(pred::Put())
}

/// Register a new `DELETE` route.
pub fn delete(&mut self) -> &mut Route<S> {
self.routes.push(Route::default());
self.routes.last_mut().unwrap().filter(pred::Delete())
}

/// Register a new `HEAD` route.
pub fn head(&mut self) -> &mut Route<S> {
self.routes.push(Route::default());
self.routes.last_mut().unwrap().filter(pred::Head())
}

/// Register a new route and add method check to route.
///
/// This is shortcut for:
Expand Down

0 comments on commit be288fa

Please sign in to comment.