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/listing.rs | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) (limited to 'src/listing.rs') diff --git a/src/listing.rs b/src/listing.rs index 22e43f0..2e3093d 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -10,10 +10,10 @@ use std::path::{Path, PathBuf}; use std::time::SystemTime; use strum_macros::{Display, EnumString}; -use crate::archive; +use crate::archive::{self, CompressionMethod}; use crate::errors; use crate::renderer; -use crate::themes; +use crate::themes::ColorScheme; /// Query parameters #[derive(Deserialize)] @@ -21,8 +21,8 @@ pub struct QueryParameters { pub path: Option, pub sort: Option, pub order: Option, - pub theme: Option, - download: Option, + pub theme: Option, + download: Option, } /// Available sorting methods @@ -131,7 +131,7 @@ pub fn directory_listing( skip_symlinks: bool, file_upload: bool, random_route: Option, - default_color_scheme: themes::ColorScheme, + default_color_scheme: ColorScheme, upload_route: String, ) -> Result { let serve_path = req.path(); @@ -144,12 +144,7 @@ pub fn directory_listing( Err(_) => base.to_path_buf(), }; - let (sort_method, sort_order, download, color_scheme) = - if let Ok(query) = Query::::extract(req) { - (query.sort, query.order, query.download.clone(), query.theme) - } else { - (None, None, None, None) - }; + let (sort_method, sort_order, download, color_scheme, _) = extract_query_parameters(req); let mut entries: Vec = Vec::new(); @@ -273,6 +268,7 @@ pub fn directory_listing( color_scheme, default_color_scheme, false, + true, ) .into_string(), )) @@ -299,3 +295,25 @@ pub fn directory_listing( )) } } + +pub fn extract_query_parameters( + req: &HttpRequest, +) -> ( + Option, + Option, + Option, + Option, + Option, +) { + if let Ok(query) = Query::::extract(req) { + ( + query.sort, + query.order, + query.download.clone(), + query.theme, + query.path.clone(), + ) + } else { + (None, None, None, None, None) + } +} -- cgit v1.2.3