From 0572de2ad0da905b9e2c2a2b241119a75e40387c Mon Sep 17 00:00:00 2001
From: _ <>
Date: Sat, 31 Oct 2020 15:28:27 +0000
Subject: [PATCH] :lipstick: Make directory indexes prettier
---
ptth_handlebars/file_server_dir.html | 41 +++++++++++++++++----
ptth_handlebars/test_file_server_dir.html | 43 +++++++++++++++++++++++
src/server/file_server.rs | 9 +++--
3 files changed, 85 insertions(+), 8 deletions(-)
create mode 100644 ptth_handlebars/test_file_server_dir.html
diff --git a/ptth_handlebars/file_server_dir.html b/ptth_handlebars/file_server_dir.html
index cc75253..d95a06b 100644
--- a/ptth_handlebars/file_server_dir.html
+++ b/ptth_handlebars/file_server_dir.html
@@ -1,10 +1,39 @@
-
-- ..
+
+
+
+
+
+{{path}}
+
+
+
+
+
+
+
{{#each entries}}
-
-
-
+
{{/each}}
-
+
+
+
+
+
diff --git a/ptth_handlebars/test_file_server_dir.html b/ptth_handlebars/test_file_server_dir.html
new file mode 100644
index 0000000..b7dcab5
--- /dev/null
+++ b/ptth_handlebars/test_file_server_dir.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+/home/user/stuff
+
+
+
+
+
+
+
diff --git a/src/server/file_server.rs b/src/server/file_server.rs
index 7c9b9fd..7b4723b 100644
--- a/src/server/file_server.rs
+++ b/src/server/file_server.rs
@@ -95,8 +95,11 @@ async fn read_dir_entry (entry: DirEntry) -> TemplateDirEntry
}
}
+use std::borrow::Cow;
+
async fn serve_dir (
handlebars: Arc >,
+ path: Cow <'_, str>,
mut dir: ReadDir
) -> http_serde::Response
{
@@ -107,11 +110,13 @@ async fn serve_dir (
}
#[derive (Serialize)]
- struct TemplateDirPage {
+ struct TemplateDirPage <'a> {
+ path: Cow <'a, str>,
entries: Vec ,
}
let s = handlebars.render ("file_server_dir", &TemplateDirPage {
+ path,
entries,
}).unwrap ();
@@ -258,7 +263,7 @@ pub async fn serve_all (
full_path.push (&*path);
if let Ok (dir) = read_dir (&full_path).await {
- serve_dir (handlebars, dir).await
+ serve_dir (handlebars, full_path.to_string_lossy (), dir).await
}
else if let Ok (file) = File::open (&full_path).await {
serve_file (