From 4ad695eed6c2a3fa7fb164c4a0e4972dab2691d2 Mon Sep 17 00:00:00 2001 From: Lukas Stabe Date: Fri, 25 Sep 2020 05:23:23 +0200 Subject: [wip] client-side color-scheme handling --- src/main.rs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 1830a70..ffb393b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -284,7 +284,6 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { let no_symlinks = conf.no_symlinks; let random_route = conf.random_route.clone(); let favicon_route = conf.favicon_route.clone(); - let default_color_scheme = conf.default_color_scheme; let show_qrcode = conf.show_qrcode; let file_upload = conf.file_upload; let tar_enabled = conf.tar_enabled; @@ -314,7 +313,6 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { file_upload, random_route.clone(), favicon_route.clone(), - default_color_scheme, show_qrcode, u_r.clone(), tar_enabled, @@ -330,17 +328,10 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { let favicon_route = conf.favicon_route.clone(); if let Some(serve_path) = serve_path { if conf.file_upload { - let default_color_scheme = conf.default_color_scheme; // Allow file upload app.service( web::resource(&upload_route).route(web::post().to(move |req, payload| { - file_upload::upload_file( - req, - payload, - default_color_scheme, - uses_random_route, - favicon_route.clone(), - ) + file_upload::upload_file(req, payload, uses_random_route, favicon_route.clone()) })), ) // Handle directories @@ -358,11 +349,9 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { async fn error_404(req: HttpRequest) -> HttpResponse { let err_404 = ContextualError::RouteNotFoundError(req.path().to_string()); let conf = req.app_data::().unwrap(); - let default_color_scheme = conf.default_color_scheme; let uses_random_route = conf.random_route.is_some(); let favicon_route = conf.favicon_route.clone(); 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()); @@ -373,8 +362,6 @@ async fn error_404(req: HttpRequest) -> HttpResponse { "/", query_params.sort, query_params.order, - color_scheme, - default_color_scheme, false, !uses_random_route, &favicon_route, -- cgit v1.2.3 From dab13c9bb3336aac4e44171f3074c4ce973b9782 Mon Sep 17 00:00:00 2001 From: Lukas Stabe Date: Sat, 26 Sep 2020 04:45:31 +0200 Subject: move css out of html into its own route --- src/main.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index ffb393b..5b53070 100644 --- a/src/main.rs +++ b/src/main.rs @@ -56,6 +56,9 @@ pub struct MiniserveConfig { /// Randomly generated favicon route pub favicon_route: String, + /// Randomly generated css route + pub css_route: String, + /// Default color scheme pub default_color_scheme: themes::ColorScheme, @@ -252,6 +255,10 @@ async fn run() -> Result<(), ContextualError> { &format!("/{}", inside_config.favicon_route), web::get().to(favicon), ) + .route( + &format!("/{}", inside_config.css_route), + web::get().to(css), + ) .configure(|c| configure_app(c, &inside_config)) .default_service(web::get().to(error_404)) }) @@ -284,6 +291,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { let no_symlinks = conf.no_symlinks; let random_route = conf.random_route.clone(); let favicon_route = conf.favicon_route.clone(); + let css_route = conf.css_route.clone(); let show_qrcode = conf.show_qrcode; let file_upload = conf.file_upload; let tar_enabled = conf.tar_enabled; @@ -313,6 +321,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { file_upload, random_route.clone(), favicon_route.clone(), + css_route.clone(), show_qrcode, u_r.clone(), tar_enabled, @@ -326,12 +335,13 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { }; let favicon_route = conf.favicon_route.clone(); + let css_route = conf.css_route.clone(); if let Some(serve_path) = serve_path { if conf.file_upload { // Allow file upload app.service( web::resource(&upload_route).route(web::post().to(move |req, payload| { - file_upload::upload_file(req, payload, uses_random_route, favicon_route.clone()) + file_upload::upload_file(req, payload, uses_random_route, favicon_route.clone(), css_route.clone()) })), ) // Handle directories @@ -351,6 +361,7 @@ async fn error_404(req: HttpRequest) -> HttpResponse { let conf = req.app_data::().unwrap(); let uses_random_route = conf.random_route.is_some(); let favicon_route = conf.favicon_route.clone(); + let css_route = conf.css_route.clone(); let query_params = listing::extract_query_parameters(&req); errors::log_error_chain(err_404.to_string()); @@ -365,6 +376,7 @@ async fn error_404(req: HttpRequest) -> HttpResponse { false, !uses_random_route, &favicon_route, + &css_route, ) .into_string(), ) @@ -376,3 +388,13 @@ async fn favicon() -> impl Responder { .set(ContentType(mime::IMAGE_SVG)) .message_body(logo.into()) } + +lazy_static::lazy_static! { + static ref CSS_TEXT: String = grass::from_string(include_str!("../data/style.scss").to_string(), &grass::Options::default()).unwrap(); +} + +async fn css() -> impl Responder { + web::HttpResponse::Ok() + .set(ContentType(mime::TEXT_CSS)) + .body(&*CSS_TEXT) +} -- cgit v1.2.3 From a4d227d34ad2bbf40ff5d542dcc8821ccb090ac7 Mon Sep 17 00:00:00 2001 From: Lukas Stabe Date: Sat, 26 Sep 2020 05:39:52 +0200 Subject: remove default color scheme cli argument --- src/main.rs | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 5b53070..1f63e10 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,7 +22,6 @@ mod file_upload; mod listing; mod pipe; mod renderer; -mod themes; use crate::errors::ContextualError; @@ -59,9 +58,6 @@ pub struct MiniserveConfig { /// Randomly generated css route pub css_route: String, - /// Default color scheme - pub default_color_scheme: themes::ColorScheme, - /// The name of a directory index file to serve, like "index.html" /// /// Normally, when miniserve serves a directory, it creates a listing for that directory. -- cgit v1.2.3 From ab7ef2285520f31ea9b173939312982b387f4e15 Mon Sep 17 00:00:00 2001 From: Lukas Stabe Date: Sat, 26 Sep 2020 06:28:57 +0200 Subject: appease cargo fmt --- src/main.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 1f63e10..22d5f6a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -251,10 +251,7 @@ async fn run() -> Result<(), ContextualError> { &format!("/{}", inside_config.favicon_route), web::get().to(favicon), ) - .route( - &format!("/{}", inside_config.css_route), - web::get().to(css), - ) + .route(&format!("/{}", inside_config.css_route), web::get().to(css)) .configure(|c| configure_app(c, &inside_config)) .default_service(web::get().to(error_404)) }) @@ -337,7 +334,13 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { // Allow file upload app.service( web::resource(&upload_route).route(web::post().to(move |req, payload| { - file_upload::upload_file(req, payload, uses_random_route, favicon_route.clone(), css_route.clone()) + file_upload::upload_file( + req, + payload, + uses_random_route, + favicon_route.clone(), + css_route.clone(), + ) })), ) // Handle directories -- cgit v1.2.3 From f8b74203b7457fbf0482ec9e10266b370b1bfeab Mon Sep 17 00:00:00 2001 From: Lukas Stabe Date: Sat, 26 Sep 2020 23:07:24 +0200 Subject: compile scss at build time --- src/main.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 22d5f6a..2886a2c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -388,12 +388,9 @@ async fn favicon() -> impl Responder { .message_body(logo.into()) } -lazy_static::lazy_static! { - static ref CSS_TEXT: String = grass::from_string(include_str!("../data/style.scss").to_string(), &grass::Options::default()).unwrap(); -} - async fn css() -> impl Responder { + let css = include_str!(concat!(env!("OUT_DIR"), "/style.css")); web::HttpResponse::Ok() .set(ContentType(mime::TEXT_CSS)) - .body(&*CSS_TEXT) + .message_body(css.into()) } -- cgit v1.2.3 From 47895cad827180787a8f305ddac0372d2dbd266a Mon Sep 17 00:00:00 2001 From: Lukas Stabe Date: Thu, 1 Oct 2020 18:08:05 +0200 Subject: restore default theme cli option and add default theme dark option --- src/main.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 2886a2c..b947004 100644 --- a/src/main.rs +++ b/src/main.rs @@ -58,6 +58,12 @@ pub struct MiniserveConfig { /// Randomly generated css route pub css_route: String, + /// Default color scheme + pub default_color_scheme: String, + + /// Default dark mode color scheme + pub default_color_scheme_dark: String, + /// The name of a directory index file to serve, like "index.html" /// /// Normally, when miniserve serves a directory, it creates a listing for that directory. @@ -285,6 +291,8 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { let random_route = conf.random_route.clone(); let favicon_route = conf.favicon_route.clone(); let css_route = conf.css_route.clone(); + let default_color_scheme = conf.default_color_scheme.clone(); + let default_color_scheme_dark = conf.default_color_scheme_dark.clone(); let show_qrcode = conf.show_qrcode; let file_upload = conf.file_upload; let tar_enabled = conf.tar_enabled; @@ -315,6 +323,8 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { random_route.clone(), favicon_route.clone(), css_route.clone(), + &default_color_scheme, + &default_color_scheme_dark, show_qrcode, u_r.clone(), tar_enabled, @@ -329,6 +339,10 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { let favicon_route = conf.favicon_route.clone(); let css_route = conf.css_route.clone(); + + let default_color_scheme = conf.default_color_scheme.clone(); + let default_color_scheme_dark = conf.default_color_scheme_dark.clone(); + if let Some(serve_path) = serve_path { if conf.file_upload { // Allow file upload @@ -340,6 +354,8 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { uses_random_route, favicon_route.clone(), css_route.clone(), + &default_color_scheme, + &default_color_scheme_dark, ) })), ) @@ -376,6 +392,8 @@ async fn error_404(req: HttpRequest) -> HttpResponse { !uses_random_route, &favicon_route, &css_route, + &conf.default_color_scheme, + &conf.default_color_scheme_dark, ) .into_string(), ) -- cgit v1.2.3