From 4a9711b71674c6b62512dd6286869690d4497bcc Mon Sep 17 00:00:00 2001 From: boastful-squirrel Date: Fri, 26 Apr 2019 20:08:16 +0200 Subject: Made ColorScheme, SortingMethod and SortingOrder enums derive Copy --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index bc8f3f0..a9d44df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -239,7 +239,7 @@ fn configure_app(app: App) -> App { let path = &app.state().path; let no_symlinks = app.state().no_symlinks; let random_route = app.state().random_route.clone(); - let default_color_scheme = app.state().default_color_scheme.clone(); + let default_color_scheme = app.state().default_color_scheme; let file_upload = app.state().file_upload; upload_route = if let Some(random_route) = app.state().random_route.clone() { format!("/{}/upload", random_route) @@ -261,7 +261,7 @@ fn configure_app(app: App) -> App { no_symlinks, file_upload, random_route.clone(), - default_color_scheme.clone(), + default_color_scheme, u_r.clone(), ) }), -- cgit v1.2.3 From fd3392636ce013cf8193a0881fa08680a8239698 Mon Sep 17 00:00:00 2001 From: boastful-squirrel Date: Sat, 27 Apr 2019 12:12:42 +0200 Subject: Themed errors --- src/main.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index a9d44df..bd71763 100644 --- a/src/main.rs +++ b/src/main.rs @@ -274,9 +274,11 @@ fn configure_app(app: App) -> App { if let Some(s) = s { if app.state().file_upload { + let default_color_scheme = app.state().default_color_scheme; // Allow file upload - app.resource(&upload_route, |r| { - r.method(Method::POST).f(file_upload::upload_file) + app.resource(&upload_route, move |r| { + r.method(Method::POST) + .f(move |file| file_upload::upload_file(file, default_color_scheme)) }) // Handle directories .handler(&full_route, s) -- cgit v1.2.3 From e4bb38b17db665a8167feab9347494445385ebb3 Mon Sep 17 00:00:00 2001 From: boastful-squirrel Date: Wed, 1 May 2019 17:01:41 +0200 Subject: Display 404 error --- src/main.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index c5c81f2..4b2118c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ #![feature(proc_macro_hygiene)] use actix_web::http::Method; -use actix_web::{fs, middleware, server, App}; +use actix_web::{fs, middleware, server, App, HttpRequest, HttpResponse}; use clap::crate_version; use simplelog::{Config, LevelFilter, TermLogger}; use std::io::{self, Write}; @@ -247,7 +247,8 @@ fn configure_app(app: App) -> App { default_color_scheme, u_r.clone(), ) - }), + }) + .default_handler(p404), ) } }; @@ -274,3 +275,23 @@ fn configure_app(app: App) -> App { app.resource(&full_route, |r| r.f(listing::file_handler)) } } + +fn p404(req: &HttpRequest) -> Result { + let err_404 = ContextualError::RouteNotFoundError(req.uri().to_string()); + let default_color_scheme = req.state().default_color_scheme; + + errors::log_error_chain(err_404.to_string()); + + Ok(actix_web::HttpResponse::NotFound().body( + renderer::render_error( + &err_404.to_string(), + "/", + None, + None, + default_color_scheme, + default_color_scheme, + false, + ) + .into_string(), + )) +} -- cgit v1.2.3 From 506a95319c35c5d744ca29726bafe2bff1b70221 Mon Sep 17 00:00:00 2001 From: boastful-squirrel Date: Wed, 1 May 2019 17:54:28 +0200 Subject: Fix return link when random_route is set --- src/main.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 4b2118c..f0c23cc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -266,26 +266,33 @@ fn configure_app(app: App) -> App { }) // Handle directories .handler(&full_route, s) + .default_resource(|r| r.method(Method::GET).f(p404)) } else { // Handle directories app.handler(&full_route, s) + .default_resource(|r| r.method(Method::GET).f(p404)) } } else { // Handle single files app.resource(&full_route, |r| r.f(listing::file_handler)) + .default_resource(|r| r.method(Method::GET).f(p404)) } } fn p404(req: &HttpRequest) -> Result { let err_404 = ContextualError::RouteNotFoundError(req.uri().to_string()); 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(), + }; errors::log_error_chain(err_404.to_string()); Ok(actix_web::HttpResponse::NotFound().body( renderer::render_error( &err_404.to_string(), - "/", + &return_address, None, None, default_color_scheme, -- cgit v1.2.3 From fa0c2865366b1bb65a2977c4b9608c9a92fc5889 Mon Sep 17 00:00:00 2001 From: boastful-squirrel Date: Wed, 1 May 2019 18:23:29 +0200 Subject: Use HTTP StatusCode for error title --- src/main.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main.rs') 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) -> Result 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) -> Result Date: Thu, 2 May 2019 07:18:03 +0200 Subject: Rename p404 --- src/main.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 46f22c5..22b91cb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -248,7 +248,7 @@ fn configure_app(app: App) -> App { u_r.clone(), ) }) - .default_handler(p404), + .default_handler(error_404), ) } }; @@ -266,20 +266,20 @@ fn configure_app(app: App) -> App { }) // Handle directories .handler(&full_route, s) - .default_resource(|r| r.method(Method::GET).f(p404)) + .default_resource(|r| r.method(Method::GET).f(error_404)) } else { // Handle directories app.handler(&full_route, s) - .default_resource(|r| r.method(Method::GET).f(p404)) + .default_resource(|r| r.method(Method::GET).f(error_404)) } } else { // Handle single files app.resource(&full_route, |r| r.f(listing::file_handler)) - .default_resource(|r| r.method(Method::GET).f(p404)) + .default_resource(|r| r.method(Method::GET).f(error_404)) } } -fn p404(req: &HttpRequest) -> Result { +fn error_404(req: &HttpRequest) -> Result { let err_404 = ContextualError::RouteNotFoundError(req.uri().to_string()); let default_color_scheme = req.state().default_color_scheme; let return_address = match &req.state().random_route { -- cgit v1.2.3 From dd8d11c698435217c370b940b41d060a614892c1 Mon Sep 17 00:00:00 2001 From: boastful-squirrel Date: Thu, 2 May 2019 21:36:47 +0200 Subject: Read query params to handle error back link --- src/main.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 22b91cb..3bac14d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -287,6 +287,9 @@ fn error_404(req: &HttpRequest) -> Result "/".to_string(), }; + let (sort_method, sort_order, _, color_scheme, _) = listing::extract_query_parameters(req); + let color_scheme = color_scheme.unwrap_or(default_color_scheme); + errors::log_error_chain(err_404.to_string()); Ok(actix_web::HttpResponse::NotFound().body( @@ -294,11 +297,12 @@ fn error_404(req: &HttpRequest) -> Result Date: Thu, 2 May 2019 21:44:06 +0200 Subject: Display path instead of uri in 404 error --- src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 3bac14d..5c0edb7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -280,7 +280,7 @@ fn configure_app(app: App) -> App { } fn error_404(req: &HttpRequest) -> Result { - let err_404 = ContextualError::RouteNotFoundError(req.uri().to_string()); + let err_404 = ContextualError::RouteNotFoundError(req.path().to_string()); let default_color_scheme = req.state().default_color_scheme; let return_address = match &req.state().random_route { Some(random_route) => format!("/{}", random_route), -- cgit v1.2.3 From a73a74283f64986ff6a0b6da4c234a828bc52522 Mon Sep 17 00:00:00 2001 From: boastful-squirrel Date: Fri, 3 May 2019 19:32:51 +0200 Subject: Return QueryParameters struct instead of tuple --- src/main.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 07827c0..bcfda09 100644 --- a/src/main.rs +++ b/src/main.rs @@ -83,7 +83,9 @@ fn run() -> Result<(), ContextualError> { && miniserve_config .path .symlink_metadata() - .map_err(|e| ContextualError::IOError("Failed to retrieve symlink's metadata".to_string(), e))? + .map_err(|e| { + ContextualError::IOError("Failed to retrieve symlink's metadata".to_string(), e) + })? .file_type() .is_symlink() { @@ -285,8 +287,8 @@ fn error_404(req: &HttpRequest) -> Result "/".to_string(), }; - let (sort_method, sort_order, _, color_scheme, _) = listing::extract_query_parameters(req); - let color_scheme = color_scheme.unwrap_or(default_color_scheme); + let query_params = listing::extract_query_parameters(req); + let color_scheme = query_params.theme.unwrap_or(default_color_scheme); errors::log_error_chain(err_404.to_string()); @@ -295,8 +297,8 @@ fn error_404(req: &HttpRequest) -> Result Date: Fri, 10 May 2019 18:38:23 +0200 Subject: Fix clippy --- src/main.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index bcfda09..bb61edc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -83,9 +83,7 @@ fn run() -> Result<(), ContextualError> { && miniserve_config .path .symlink_metadata() - .map_err(|e| { - ContextualError::IOError("Failed to retrieve symlink's metadata".to_string(), e) - })? + .map_err(|e| ContextualError::IOError("Failed to retrieve symlink's metadata".to_string(), e))? .file_type() .is_symlink() { -- cgit v1.2.3