diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2026-05-20 10:16:50 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2026-05-20 10:16:50 +0200 |
| commit | 44445734ba4a0f05564f808c2fd34a7f23c6fafb (patch) | |
| tree | 3bd22add718620cbf931286f55137bcc666100be /src/routes/api/image | |
| parent | 95ae9f15e1db335a7f8358d811ea37e2c89dd10f (diff) | |
Let's do a rewrite!
Created project structure and changed `build.zig` and added licence.
Diffstat (limited to 'src/routes/api/image')
| -rw-r--r-- | src/routes/api/image/list.zig | 42 | ||||
| -rw-r--r-- | src/routes/api/image/load.zig | 15 | ||||
| -rw-r--r-- | src/routes/api/image/query.zig | 0 | ||||
| -rw-r--r-- | src/routes/api/image/remove.zig | 14 | ||||
| -rw-r--r-- | src/routes/api/image/root.zig | 6 | ||||
| -rw-r--r-- | src/routes/api/image/upload.zig | 17 |
6 files changed, 0 insertions, 94 deletions
diff --git a/src/routes/api/image/list.zig b/src/routes/api/image/list.zig deleted file mode 100644 index 5d2eace..0000000 --- a/src/routes/api/image/list.zig +++ /dev/null @@ -1,42 +0,0 @@ -const std = @import("std"); -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -pub const access = .users; - -const ImageInfo = struct { - id: []const u8, - timestamp: ?i64, -}; - -const Result = struct { - images: []ImageInfo, -}; - -pub fn get(ctx: *Context) !Result { - var images: std.ArrayList(ImageInfo) = .empty; - - var images_list = ctx.storage.images.list(); - defer images_list.unlock(); - - var locked = ctx.storage.images.first_by_timestamp(); - defer locked.unlock(); - - var current = locked.value; - - while (current) |c| { - const image = ctx.storage.images.items.items[c.index]; - - try images.append(ctx.allocator, .{ - .id = try ctx.allocator.dupe(u8, image.id), - .timestamp = image.timestamp, - }); - - current = c.next(); - } - - return .{ - .images = try images.toOwnedSlice(ctx.allocator), - }; -} diff --git a/src/routes/api/image/load.zig b/src/routes/api/image/load.zig deleted file mode 100644 index 3ef25d6..0000000 --- a/src/routes/api/image/load.zig +++ /dev/null @@ -1,15 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; -const mime = @import("../../../mime.zig"); - -pub const access = .users; - -pub fn get(ctx: *Context) !memora.Stream { - const id = ctx.request.head.target["/api/image/load/".len..]; - var image = Storage.Image { .id = id, .timestamp = null }; - ctx.response.headers.content_type = comptime mime.content_types.get(".jpeg") orelse unreachable; - return .from_file(try image.file(ctx.storage)); -} diff --git a/src/routes/api/image/query.zig b/src/routes/api/image/query.zig deleted file mode 100644 index e69de29..0000000 --- a/src/routes/api/image/query.zig +++ /dev/null diff --git a/src/routes/api/image/remove.zig b/src/routes/api/image/remove.zig deleted file mode 100644 index d99cbb4..0000000 --- a/src/routes/api/image/remove.zig +++ /dev/null @@ -1,14 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; - -pub const access = .users; - -const Body = struct { - id: []const u8, -}; - -pub fn post(ctx: *Context, body: Body) anyerror!void { - return ctx.storage.images.delete(ctx.storage, body.id); -} diff --git a/src/routes/api/image/root.zig b/src/routes/api/image/root.zig deleted file mode 100644 index 931bb06..0000000 --- a/src/routes/api/image/root.zig +++ /dev/null @@ -1,6 +0,0 @@ -const HandlerInfo = @import("../../handler-info.zig"); - -pub const upload: HandlerInfo = .from_type(@import("upload.zig")); -pub const list: HandlerInfo = .from_type(@import("list.zig")); -pub const load: HandlerInfo = .from_type(@import("load.zig")); -pub const remove: HandlerInfo = .from_type(@import("remove.zig")); diff --git a/src/routes/api/image/upload.zig b/src/routes/api/image/upload.zig deleted file mode 100644 index 72c8a2d..0000000 --- a/src/routes/api/image/upload.zig +++ /dev/null @@ -1,17 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -const log = std.log.scoped(.image_upload); - -pub const access = .users; - -pub fn post(ctx: *Context) !void { - if (ctx.request.head.content_length) |length| { - var buffer: [1024]u8 = undefined; - const reader = try ctx.request.readerExpectContinue(&buffer); - try ctx.storage.images.save(ctx.storage, reader, length); - } -} |