aboutsummaryrefslogtreecommitdiffstats
path: root/src/listing.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/listing.rs25
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()
}