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/profile | |
| parent | 95ae9f15e1db335a7f8358d811ea37e2c89dd10f (diff) | |
Let's do a rewrite!
Created project structure and changed `build.zig` and added licence.
Diffstat (limited to 'src/routes/api/profile')
| -rw-r--r-- | src/routes/api/profile/create.zig | 29 | ||||
| -rw-r--r-- | src/routes/api/profile/image/load.zig | 17 | ||||
| -rw-r--r-- | src/routes/api/profile/image/root.zig | 5 | ||||
| -rw-r--r-- | src/routes/api/profile/image/upload.zig | 19 | ||||
| -rw-r--r-- | src/routes/api/profile/list.zig | 17 | ||||
| -rw-r--r-- | src/routes/api/profile/root.zig | 8 | ||||
| -rw-r--r-- | src/routes/api/profile/set.zig | 26 | ||||
| -rw-r--r-- | src/routes/api/profile/update-password.zig | 37 |
8 files changed, 0 insertions, 158 deletions
diff --git a/src/routes/api/profile/create.zig b/src/routes/api/profile/create.zig deleted file mode 100644 index 68f32ec..0000000 --- a/src/routes/api/profile/create.zig +++ /dev/null @@ -1,29 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -pub const access = .admins; - -const Body = struct { - name: []const u8, - full_name: []const u8, - birthday: []const u8, - password: []const u8, -}; - -pub fn post(ctx: *Context, body: Body) !void { - var user = try Storage.User.new( - ctx.storage, - body.name, - body.full_name, - body.birthday, - body.password, - true, - ctx.storage.allocator, - ); - defer user.deinit(); - - try user.sync(); -} diff --git a/src/routes/api/profile/image/load.zig b/src/routes/api/profile/image/load.zig deleted file mode 100644 index 4b696ce..0000000 --- a/src/routes/api/profile/image/load.zig +++ /dev/null @@ -1,17 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -pub const access = .users; - -pub fn get(ctx: *Context) !memora.Stream { - const name = ctx.request.head.target["/api/profile/image/load/".len..]; - if (Storage.User.image(ctx.storage, name)) |file| { - ctx.response.headers.content_type = "image/jpeg"; - return .from_file(file); - } - - return error.NotFound; -} diff --git a/src/routes/api/profile/image/root.zig b/src/routes/api/profile/image/root.zig deleted file mode 100644 index d6b77f2..0000000 --- a/src/routes/api/profile/image/root.zig +++ /dev/null @@ -1,5 +0,0 @@ -const memora = @import("memora"); -const HandlerInfo = memora.routes.HandlerInfo; - -pub const upload: HandlerInfo = .from_type(@import("upload.zig")); -pub const load: HandlerInfo = .from_type(@import("load.zig")); diff --git a/src/routes/api/profile/image/upload.zig b/src/routes/api/profile/image/upload.zig deleted file mode 100644 index db140d4..0000000 --- a/src/routes/api/profile/image/upload.zig +++ /dev/null @@ -1,19 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -pub const access = .users; - -pub fn post(ctx: *Context) !void { - const name = ctx.request.head.target["/api/profile/image/upload/".len..]; - if (ctx.request.head.content_length) |length| { - var buffer: [1024]u8 = undefined; - const reader = try ctx.request.readerExpectContinue(&buffer); - - try Storage.User.set_image(ctx.storage, name, reader, length); - - ctx.response.headers.content_type = "image/jpeg"; - } -} diff --git a/src/routes/api/profile/list.zig b/src/routes/api/profile/list.zig deleted file mode 100644 index 59d4684..0000000 --- a/src/routes/api/profile/list.zig +++ /dev/null @@ -1,17 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -pub const access = .admins; - -const Response = struct { - users: [][]const u8, -}; - -pub fn get(ctx: *Context) !Response { - return .{ - .users = try Storage.User.list(ctx.storage, ctx.allocator) - }; -} diff --git a/src/routes/api/profile/root.zig b/src/routes/api/profile/root.zig deleted file mode 100644 index 45dec8e..0000000 --- a/src/routes/api/profile/root.zig +++ /dev/null @@ -1,8 +0,0 @@ -const memora = @import("memora"); -const HandlerInfo = memora.routes.HandlerInfo; - -pub const image = @import("image/root.zig"); -pub const set: HandlerInfo = .from_type(@import("set.zig")); -pub const @"update-password": HandlerInfo = .from_type(@import("update-password.zig")); -pub const create: HandlerInfo = .from_type(@import("create.zig")); -pub const list: HandlerInfo = .from_type(@import("list.zig")); diff --git a/src/routes/api/profile/set.zig b/src/routes/api/profile/set.zig deleted file mode 100644 index a007b23..0000000 --- a/src/routes/api/profile/set.zig +++ /dev/null @@ -1,26 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -pub const access = .users; - -const Body = struct { - full_name: []const u8, - birthday: []const u8, -}; - -pub fn post(ctx: *Context, body: Body) !void { - if (ctx.storage.sessions.get(ctx.storage, ctx.fingerprint)) |session| { - var user = try Storage.User.open(ctx.storage, session.info.name); - defer user.deinit(); - - user.info.full_name = body.full_name; - user.info.birthday = body.birthday; - - try user.sync(); - } else { - return error.UnknownSession; - } -} diff --git a/src/routes/api/profile/update-password.zig b/src/routes/api/profile/update-password.zig deleted file mode 100644 index ac6ceed..0000000 --- a/src/routes/api/profile/update-password.zig +++ /dev/null @@ -1,37 +0,0 @@ -const std = @import("std"); - -const memora = @import("memora"); -const Context = memora.Context; -const Storage = memora.Storage; - -pub const access = .users; - -const Body = struct { - current_password: []const u8, - new_password: []const u8, -}; - -const Response = struct { - success: bool, -}; - -pub fn post(ctx: *Context, body: Body) !Response { - if (ctx.storage.sessions.get(ctx.storage, ctx.fingerprint)) |session| { - var user = try Storage.User.open(ctx.storage, session.info.name); - defer user.deinit(); - - const result = Response { - .success = user.check_password(body.current_password) - }; - - if (result.success) { - try user.set_password(body.new_password); - try user.sync(); - } - - return result; - - } else { - return error.UnknownSession; - } -} |