diff --git a/src/main.rs b/src/main.rs index 9b4f451..d9150fa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,32 +40,41 @@ fn handle_directory<'a, 'b>( dir: &'a fs::Directory, req: &'b HttpRequest, ) -> std::io::Result { - let mut s = String::from(format!(" - Index of {index} - -

Index of {index}

-
../ - \n", index=req.path())); + let mut paths: Vec<_> = std::fs::read_dir(&dir.path).unwrap() .filter(|r| dir.is_visible(r)) .filter_map(|r| r.ok()) .collect(); paths.sort_by_key(|r| (!r.metadata().unwrap().file_type().is_dir(), r.file_name())); + let mut t = String::from("
+ \n"); for entry in paths { let meta = entry.metadata()?; let file_url = utf8_percent_encode(&entry.file_name().to_string_lossy(), DEFAULT_ENCODE_SET).to_string(); - // " -- " & -- & ' -- ' < -- < > -- > let file_name = escape_html_entity(&entry.file_name().to_string_lossy()); - let size = meta.len(); + + t.push_str(""); if meta.file_type().is_dir() { - s.push_str(&format!("\n", file_name=file_name, file_url=file_url)); + t.push_str(&format!("", file_name=file_name, file_url=file_url)); + t.push_str(&format!("\n", file_url=file_url)); } else { - s.push_str(&format!("\n", file_name=file_name, file_url=file_url, size=size)); + t.push_str(&format!("", file_name=file_name, file_url=file_url)); + t.push_str(&format!("", size=size)); } + t.push_str("\n"); } - s.push_str("
📁 ../Size
{file_name}/ (tar)
📂 {file_name}/[.tar]
{file_name} (size: {size})
🗎 {file_name}{size}

"); - Ok(HttpResponse::Ok().content_type("text/html; charset=utf-8").body(s)) + t.push_str(""); + let mut body = String::from(format!(" + + Index of {index} + + + +

Index of {index}


\n", index=req.path())); + body.push_str(t.as_str()); + body.push_str("
\n"); + Ok(HttpResponse::Ok().content_type("text/html; charset=utf-8").body(body)) } fn handle_tar(req: &HttpRequest) -> Result {