diff options
Diffstat (limited to 'src/listing.rs')
-rw-r--r-- | src/listing.rs | 40 |
1 files changed, 29 insertions, 11 deletions
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<PathBuf>, pub sort: Option<SortingMethod>, pub order: Option<SortingOrder>, - pub theme: Option<themes::ColorScheme>, - download: Option<archive::CompressionMethod>, + pub theme: Option<ColorScheme>, + download: Option<CompressionMethod>, } /// Available sorting methods @@ -131,7 +131,7 @@ pub fn directory_listing<S>( skip_symlinks: bool, file_upload: bool, random_route: Option<String>, - default_color_scheme: themes::ColorScheme, + default_color_scheme: ColorScheme, upload_route: String, ) -> Result<HttpResponse, io::Error> { let serve_path = req.path(); @@ -144,12 +144,7 @@ pub fn directory_listing<S>( Err(_) => base.to_path_buf(), }; - let (sort_method, sort_order, download, color_scheme) = - if let Ok(query) = Query::<QueryParameters>::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<Entry> = Vec::new(); @@ -273,6 +268,7 @@ pub fn directory_listing<S>( color_scheme, default_color_scheme, false, + true, ) .into_string(), )) @@ -299,3 +295,25 @@ pub fn directory_listing<S>( )) } } + +pub fn extract_query_parameters<S>( + req: &HttpRequest<S>, +) -> ( + Option<SortingMethod>, + Option<SortingOrder>, + Option<CompressionMethod>, + Option<ColorScheme>, + Option<PathBuf>, +) { + if let Ok(query) = Query::<QueryParameters>::extract(req) { + ( + query.sort, + query.order, + query.download.clone(), + query.theme, + query.path.clone(), + ) + } else { + (None, None, None, None, None) + } +} |