aboutsummaryrefslogtreecommitdiffstats
path: root/src/listing.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/listing.rs')
-rw-r--r--src/listing.rs50
1 files changed, 24 insertions, 26 deletions
diff --git a/src/listing.rs b/src/listing.rs
index b3c21ae..49802bc 100644
--- a/src/listing.rs
+++ b/src/listing.rs
@@ -145,7 +145,7 @@ pub fn directory_listing<S>(
Err(_) => base.to_path_buf(),
};
- let (sort_method, sort_order, download, color_scheme, _) = extract_query_parameters(req);
+ let query_params = extract_query_parameters(req);
let mut entries: Vec<Entry> = Vec::new();
@@ -203,7 +203,7 @@ pub fn directory_listing<S>(
}
}
- if let Some(sorting_method) = sort_method {
+ if let Some(sorting_method) = query_params.sort {
match sorting_method {
SortingMethod::Name => entries
.sort_by(|e1, e2| alphanumeric_sort::compare_str(e1.name.clone(), e2.name.clone())),
@@ -227,15 +227,15 @@ pub fn directory_listing<S>(
entries.sort_by(|e1, e2| alphanumeric_sort::compare_str(e1.name.clone(), e2.name.clone()))
}
- if let Some(sorting_order) = sort_order {
+ if let Some(sorting_order) = query_params.order {
if let SortingOrder::Descending = sorting_order {
entries.reverse()
}
}
- let color_scheme = color_scheme.unwrap_or_else(|| default_color_scheme);
+ let color_scheme = query_params.theme.unwrap_or(default_color_scheme);
- if let Some(compression_method) = &download {
+ if let Some(compression_method) = &query_params.download {
log::info!(
"Creating an archive ({extension}) of {path}...",
extension = compression_method.extension(),
@@ -264,8 +264,8 @@ pub fn directory_listing<S>(
&err.to_string(),
StatusCode::INTERNAL_SERVER_ERROR,
serve_path,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
color_scheme,
default_color_scheme,
false,
@@ -284,8 +284,8 @@ pub fn directory_listing<S>(
entries,
is_root,
page_parent,
- sort_method,
- sort_order,
+ query_params.sort,
+ query_params.order,
default_color_scheme,
color_scheme,
file_upload,
@@ -297,27 +297,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>,
-) {
+pub fn extract_query_parameters<S>(req: &HttpRequest<S>) -> QueryParameters {
match Query::<QueryParameters>::extract(req) {
- Ok(query) => (
- query.sort,
- query.order,
- query.download.clone(),
- query.theme,
- query.path.clone(),
- ),
+ Ok(query) => QueryParameters {
+ sort: query.sort,
+ order: query.order,
+ download: query.download.clone(),
+ theme: query.theme,
+ path: query.path.clone(),
+ },
Err(e) => {
let err = ContextualError::ParseError("query parameters".to_string(), e.to_string());
errors::log_error_chain(err.to_string());
- (None, None, None, None, None)
+ QueryParameters {
+ sort: None,
+ order: None,
+ download: None,
+ theme: None,
+ path: None,
+ }
}
}
}