aboutsummaryrefslogtreecommitdiffstats
path: root/src/listing.rs
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2025-03-07 10:00:48 +0000
committerSven-Hendrik Haase <svenstaro@gmail.com>2025-03-07 11:14:03 +0000
commit11ea8a19d1481b0660e5a2765da6e67d3e8aa72c (patch)
tree341cb7ac4bd5915deb8fe58947b3cc352687556d /src/listing.rs
parentReformat style.scss (diff)
downloadminiserve-11ea8a19d1481b0660e5a2765da6e67d3e8aa72c.tar.gz
miniserve-11ea8a19d1481b0660e5a2765da6e67d3e8aa72c.zip
Add asynchronous directory size counting
This is enabled by default and without an option to toggle it off as it's asynchronous and shouldn't block the server thread.
Diffstat (limited to '')
-rw-r--r--src/listing.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/listing.rs b/src/listing.rs
index 025ae86..6e50ba1 100644
--- a/src/listing.rs
+++ b/src/listing.rs
@@ -4,7 +4,7 @@ use std::path::{Component, Path};
use std::time::SystemTime;
use actix_web::{
- HttpMessage, HttpRequest, HttpResponse, dev::ServiceResponse, http::Uri, web::Query,
+ HttpMessage, HttpRequest, HttpResponse, dev::ServiceResponse, http::Uri, web, web::Query,
};
use bytesize::ByteSize;
use clap::ValueEnum;
@@ -51,7 +51,7 @@ pub struct ListingQueryParameters {
}
/// Available sorting methods
-#[derive(Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)]
+#[derive(Debug, Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)]
#[serde(rename_all = "snake_case")]
#[strum(serialize_all = "snake_case")]
pub enum SortingMethod {
@@ -67,7 +67,7 @@ pub enum SortingMethod {
}
/// Available sorting orders
-#[derive(Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)]
+#[derive(Debug, Deserialize, Default, Clone, EnumString, Display, Copy, ValueEnum)]
pub enum SortingOrder {
/// Ascending order
#[serde(alias = "asc")]
@@ -81,8 +81,9 @@ pub enum SortingOrder {
Desc,
}
-#[derive(PartialEq, Eq)]
/// Possible entry types
+#[derive(PartialEq, Clone, Display, Eq)]
+#[strum(serialize_all = "snake_case")]
pub enum EntryType {
/// Entry is a directory
Directory,
@@ -158,7 +159,10 @@ impl Breadcrumb {
}
pub async fn file_handler(req: HttpRequest) -> actix_web::Result<actix_files::NamedFile> {
- let path = &req.app_data::<crate::MiniserveConfig>().unwrap().path;
+ let path = &req
+ .app_data::<web::Data<crate::MiniserveConfig>>()
+ .unwrap()
+ .path;
actix_files::NamedFile::open(path).map_err(Into::into)
}
@@ -171,7 +175,7 @@ pub fn directory_listing(
let extensions = req.extensions();
let current_user: Option<&CurrentUser> = extensions.get::<CurrentUser>();
- let conf = req.app_data::<crate::MiniserveConfig>().unwrap();
+ let conf = req.app_data::<web::Data<crate::MiniserveConfig>>().unwrap();
if conf.disable_indexing {
return Ok(ServiceResponse::new(
req.clone(),