From a49131f6bf16e3a0553a349bfffcaf2354b23c22 Mon Sep 17 00:00:00 2001 From: jaina heartles Date: Tue, 13 Dec 2022 02:05:37 -0800 Subject: [PATCH] Basic drive folder page --- src/main/controllers/web.zig | 24 +++++++++++++++++++ .../controllers/web/drive/directory.tmpl.html | 18 ++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/controllers/web/drive/directory.tmpl.html diff --git a/src/main/controllers/web.zig b/src/main/controllers/web.zig index 7e5d23d..eed3e5f 100644 --- a/src/main/controllers/web.zig +++ b/src/main/controllers/web.zig @@ -17,6 +17,7 @@ pub const routes = .{ controllers.apiEndpoint(cluster.overview), controllers.apiEndpoint(cluster.communities.create.page), controllers.apiEndpoint(cluster.communities.create.submit), + controllers.apiEndpoint(drive.details), }; const static = struct { @@ -229,6 +230,29 @@ const user_details = struct { } }; +const drive = struct { + const details = struct { + pub const path = "/drive/:path*"; + pub const method = .GET; + + pub const Args = struct { + path: []const u8, + }; + + pub const dir_tmpl = @embedFile("./web/drive/directory.tmpl.html"); + + pub fn handler(req: anytype, res: anytype, srv: anytype) !void { + const info = try srv.driveGet(req.args.path); + defer util.deepFree(srv.allocator, info); + + switch (info) { + .dir => |dir| try res.template(.ok, srv, dir_tmpl, .{ .dir = dir }), + else => unreachable, + } + } + }; +}; + const cluster = struct { const overview = struct { pub const path = "/cluster/overview"; diff --git a/src/main/controllers/web/drive/directory.tmpl.html b/src/main/controllers/web/drive/directory.tmpl.html new file mode 100644 index 0000000..7eb3621 --- /dev/null +++ b/src/main/controllers/web/drive/directory.tmpl.html @@ -0,0 +1,18 @@ +
+ + {#for .dir.children.? |$child| =} + + {#switch $child case dir |$dir| =} + + + {#case file |$file| =} + + + + + + {/switch =} + + {/for=} +
{$dir.name.?}{$file.name.?}{#if $file.meta.content_type |$t|}{$t}{/if}{$file.meta.size}{$file.meta.created_at}
+