diff options
Diffstat (limited to '')
-rw-r--r-- | src/listing.rs | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/listing.rs b/src/listing.rs index 40c5a77..3cd131e 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -5,6 +5,7 @@ use std::time::SystemTime; use actix_web::{dev::ServiceResponse, web::Query, HttpMessage, HttpRequest, HttpResponse}; use bytesize::ByteSize; +use clap::ValueEnum; use comrak::{markdown_to_html, ComrakOptions}; use percent_encoding::{percent_decode_str, utf8_percent_encode}; use regex::Regex; @@ -39,10 +40,11 @@ pub struct ListingQueryParameters { } /// Available sorting methods -#[derive(Deserialize, Clone, EnumString, Display, Copy)] +#[derive(Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)] #[serde(rename_all = "snake_case")] #[strum(serialize_all = "snake_case")] pub enum SortingMethod { + #[default] /// Sort by name Name, @@ -54,17 +56,18 @@ pub enum SortingMethod { } /// Available sorting orders -#[derive(Deserialize, Clone, EnumString, Display, Copy)] +#[derive(Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)] pub enum SortingOrder { /// Ascending order #[serde(alias = "asc")] #[strum(serialize = "asc")] - Ascending, + Asc, /// Descending order + #[default] #[serde(alias = "desc")] #[strum(serialize = "desc")] - Descending, + Desc, } #[derive(PartialEq, Eq)] @@ -223,7 +226,7 @@ pub fn directory_listing( res }; - let mut query_params = extract_query_parameters(req); + let query_params = extract_query_parameters(req); let mut entries: Vec<Entry> = Vec::new(); let mut readme: Option<(String, String)> = None; @@ -299,15 +302,7 @@ pub fn directory_listing( } } - if query_params.sort.is_none() { - query_params.sort = conf.default_sorting_method - } - - if query_params.order.is_none() { - query_params.order = conf.default_sorting_order - } - - match query_params.sort.unwrap_or(SortingMethod::Name) { + match query_params.sort.unwrap_or(conf.default_sorting_method) { SortingMethod::Name => entries.sort_by(|e1, e2| { alphanumeric_sort::compare_str(e1.name.to_lowercase(), e2.name.to_lowercase()) }), @@ -327,7 +322,7 @@ pub fn directory_listing( }), }; - if let Some(SortingOrder::Ascending) = query_params.order { + if let SortingOrder::Asc = query_params.order.unwrap_or(conf.default_sorting_order) { entries.reverse() } |