aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorboastful-squirrel <boastful.squirrel@gmail.com>2019-05-01 16:23:29 +0000
committerboastful-squirrel <boastful.squirrel@gmail.com>2019-05-01 16:23:29 +0000
commitfa0c2865366b1bb65a2977c4b9608c9a92fc5889 (patch)
treeefdaab480316866824abbf7557458cb877db2993
parentFix return link when random_route is set (diff)
downloadminiserve-fa0c2865366b1bb65a2977c4b9608c9a92fc5889.tar.gz
miniserve-fa0c2865366b1bb65a2977c4b9608c9a92fc5889.zip
Use HTTP StatusCode for error title
-rw-r--r--src/auth.rs8
-rw-r--r--src/file_upload.rs9
-rw-r--r--src/listing.rs2
-rw-r--r--src/main.rs5
-rw-r--r--src/renderer.rs6
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) }
}