diff options
author | boastful-squirrel <boastful.squirrel@gmail.com> | 2019-05-01 16:23:29 +0000 |
---|---|---|
committer | boastful-squirrel <boastful.squirrel@gmail.com> | 2019-05-01 16:23:29 +0000 |
commit | fa0c2865366b1bb65a2977c4b9608c9a92fc5889 (patch) | |
tree | efdaab480316866824abbf7557458cb877db2993 /src | |
parent | Fix return link when random_route is set (diff) | |
download | miniserve-fa0c2865366b1bb65a2977c4b9608c9a92fc5889.tar.gz miniserve-fa0c2865366b1bb65a2977c4b9608c9a92fc5889.zip |
Use HTTP StatusCode for error title
Diffstat (limited to 'src')
-rw-r--r-- | src/auth.rs | 8 | ||||
-rw-r--r-- | src/file_upload.rs | 9 | ||||
-rw-r--r-- | src/listing.rs | 2 | ||||
-rw-r--r-- | src/main.rs | 5 | ||||
-rw-r--r-- | src/renderer.rs | 6 |
5 files changed, 23 insertions, 7 deletions
diff --git a/src/auth.rs b/src/auth.rs index 889498e..dbb501d 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -1,4 +1,4 @@ -use actix_web::http::header; +use actix_web::http::{header, StatusCode}; use actix_web::middleware::{Middleware, Response}; use actix_web::{HttpRequest, HttpResponse, Result}; use sha2::{Digest, Sha256, Sha512}; @@ -98,7 +98,7 @@ impl Middleware<crate::MiniserveConfig> for Auth { let auth_err = ContextualError::HTTPAuthenticationError(Box::new(err)); return Ok(Response::Done( HttpResponse::BadRequest() - .body(build_unauthorized_response(&req, auth_err, true)), + .body(build_unauthorized_response(&req, auth_err, true, StatusCode::BAD_REQUEST)), )); } }; @@ -108,6 +108,7 @@ impl Middleware<crate::MiniserveConfig> for Auth { &req, ContextualError::InvalidHTTPCredentials, true, + StatusCode::UNAUTHORIZED, ), ))); } @@ -121,6 +122,7 @@ impl Middleware<crate::MiniserveConfig> for Auth { &req, ContextualError::InvalidHTTPCredentials, false, + StatusCode::UNAUTHORIZED, )); return Ok(Response::Done(new_resp)); } @@ -136,6 +138,7 @@ fn build_unauthorized_response( req: &HttpRequest<crate::MiniserveConfig>, error: ContextualError, log_error_chain: bool, + error_code: StatusCode, ) -> String { let error = ContextualError::HTTPAuthenticationError(Box::new(error)); @@ -149,6 +152,7 @@ fn build_unauthorized_response( renderer::render_error( &error.to_string(), + error_code, &return_path, None, None, diff --git a/src/file_upload.rs b/src/file_upload.rs index 46a3a1f..1d854bf 100644 --- a/src/file_upload.rs +++ b/src/file_upload.rs @@ -1,5 +1,5 @@ use actix_web::{ - dev, http::header, multipart, FromRequest, FutureResponse, HttpMessage, HttpRequest, + dev, http::{header, StatusCode}, multipart, FromRequest, FutureResponse, HttpMessage, HttpRequest, HttpResponse, Query, }; use futures::{future, future::FutureResult, Future, Stream}; @@ -150,6 +150,7 @@ pub fn upload_file( ); return Box::new(create_error_response( &err.to_string(), + StatusCode::BAD_REQUEST, &return_path, sort_param, order_param, @@ -162,6 +163,7 @@ pub fn upload_file( let err = ContextualError::InvalidHTTPRequestError(e.to_string()); return Box::new(create_error_response( &err.to_string(), + StatusCode::BAD_REQUEST, &return_path, None, None, @@ -180,6 +182,7 @@ pub fn upload_file( ); return Box::new(create_error_response( &err.to_string(), + StatusCode::INTERNAL_SERVER_ERROR, &return_path, sort_method, sort_order, @@ -198,6 +201,7 @@ pub fn upload_file( ); return Box::new(create_error_response( &err.to_string(), + StatusCode::BAD_REQUEST, &return_path, sort_method, sort_order, @@ -221,6 +225,7 @@ pub fn upload_file( ), Err(e) => create_error_response( &e.to_string(), + StatusCode::INTERNAL_SERVER_ERROR, &return_path, sort_method, sort_order, @@ -234,6 +239,7 @@ pub fn upload_file( /// Convenience method for creating response errors, if file upload fails. fn create_error_response( description: &str, + error_code: StatusCode, return_path: &str, sorting_method: Option<SortingMethod>, sorting_order: Option<SortingOrder>, @@ -247,6 +253,7 @@ fn create_error_response( .body( renderer::render_error( description, + error_code, return_path, sorting_method, sorting_order, diff --git a/src/listing.rs b/src/listing.rs index cadbb99..a37563b 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -1,4 +1,5 @@ use actix_web::{fs, http, Body, FromRequest, HttpRequest, HttpResponse, Query, Result}; +use actix_web::http::StatusCode; use bytesize::ByteSize; use futures::stream::once; use htmlescape::encode_minimal as escape_html_entity; @@ -265,6 +266,7 @@ pub fn directory_listing<S>( .body( renderer::render_error( &err.to_string(), + StatusCode::INTERNAL_SERVER_ERROR, serve_path, sort_method, sort_order, diff --git a/src/main.rs b/src/main.rs index f0c23cc..46f22c5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ #![feature(proc_macro_hygiene)] -use actix_web::http::Method; +use actix_web::http::{Method, StatusCode}; use actix_web::{fs, middleware, server, App, HttpRequest, HttpResponse}; use clap::crate_version; use simplelog::{Config, LevelFilter, TermLogger}; @@ -284,7 +284,7 @@ fn p404(req: &HttpRequest<crate::MiniserveConfig>) -> Result<HttpResponse, io::E let default_color_scheme = req.state().default_color_scheme; let return_address = match &req.state().random_route { Some(random_route) => format!("/{}", random_route), - None => req.path().to_string(), + None => "/".to_string(), }; errors::log_error_chain(err_404.to_string()); @@ -292,6 +292,7 @@ fn p404(req: &HttpRequest<crate::MiniserveConfig>) -> Result<HttpResponse, io::E Ok(actix_web::HttpResponse::NotFound().body( renderer::render_error( &err_404.to_string(), + StatusCode::NOT_FOUND, &return_address, None, None, diff --git a/src/renderer.rs b/src/renderer.rs index 03c46d8..acef208 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -1,3 +1,4 @@ +use actix_web::http::StatusCode; use chrono::{DateTime, Duration, Utc}; use chrono_humanize::{Accuracy, HumanTime, Tense}; use maud::{html, Markup, PreEscaped, DOCTYPE}; @@ -846,6 +847,7 @@ fn humanize_systemtime(src_time: Option<SystemTime>) -> Option<String> { /// Renders an error on the webpage pub fn render_error( error_description: &str, + error_code: StatusCode, return_address: &str, sort_method: Option<SortingMethod>, sort_order: Option<SortingOrder>, @@ -867,9 +869,9 @@ pub fn render_error( html! { body { - (page_header("Error", color_scheme, false, true)) + (page_header(&error_code.to_string(), color_scheme, false, true)) div.error { - p { "Error" } + p { (error_code.to_string()) } @for error in error_description.lines() { p { (error) } } |