From 11ea8a19d1481b0660e5a2765da6e67d3e8aa72c Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Fri, 7 Mar 2025 11:00:48 +0100 Subject: 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. --- src/listing.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/listing.rs') 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 { - let path = &req.app_data::().unwrap().path; + let path = &req + .app_data::>() + .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::(); - let conf = req.app_data::().unwrap(); + let conf = req.app_data::>().unwrap(); if conf.disable_indexing { return Ok(ServiceResponse::new( req.clone(), -- cgit v1.2.3