diff options
author | Sven-Hendrik Haase <svenstaro@gmail.com> | 2025-03-07 10:00:48 +0000 |
---|---|---|
committer | Sven-Hendrik Haase <svenstaro@gmail.com> | 2025-03-07 11:14:03 +0000 |
commit | 11ea8a19d1481b0660e5a2765da6e67d3e8aa72c (patch) | |
tree | 341cb7ac4bd5915deb8fe58947b3cc352687556d /src/listing.rs | |
parent | Reformat style.scss (diff) | |
download | miniserve-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.rs | 16 |
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(), |