From 65837b1e34719968f99edef28d02467c370f25da Mon Sep 17 00:00:00 2001 From: Jose Quintana Date: Tue, 18 May 2021 16:08:38 +0200 Subject: [PATCH] feat: directories and files counter --- src/static_files.rs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/static_files.rs b/src/static_files.rs index 9e4e375..2337a0b 100644 --- a/src/static_files.rs +++ b/src/static_files.rs @@ -162,10 +162,13 @@ async fn read_directory_entries( if base_path != "/" { entries_str = String::from(r#"../"#); } + let mut dirs_count: usize = 0; + let mut files_count: usize = 0; while let Some(entry) = entries.next_entry().await? { let meta = entry.metadata().await?; - let mut filesize = meta - .len() + let filesize = meta.len(); + + let mut filesize_str = filesize .file_size(file_size_opts::DECIMAL) .map_err(anyhow::Error::msg)?; @@ -176,7 +179,10 @@ async fn read_directory_entries( if meta.is_dir() { name = format!("{}/", name); - filesize = String::from("-") + filesize_str = String::from("-"); + dirs_count = dirs_count + 1; + } else { + files_count = files_count + 1; } let uri = format!("{}{}", base_path, name); @@ -189,16 +195,26 @@ async fn read_directory_entries( name, name, modified.to_local().strftime("%F %T").unwrap(), - filesize + filesize_str ); } let current_path = percent_decode_str(&base_path).decode_utf8()?.to_string(); - let style_str = r#""#; + let dirs_str = if dirs_count == 1 { + "directory" + } else { + "directories" + }; + let files_str = if files_count > 1 { "files" } else { "file" }; + let summary_str = format!( + "
{} {}, {} {}
", + dirs_count, dirs_str, files_count, files_str + ); + let style_str = r#""#; let footer_str = r#""#; let page_str = format!( - "Index of {}{}

Index of {}

{}


{}", current_path, style_str, current_path, entries_str, footer_str + "Index of {}{}

Index of {}

{}{}


{}", current_path, style_str, current_path, summary_str, entries_str, footer_str ); let mut resp = Response::new(Body::empty()); -- libgit2 1.7.2