aboutsummaryrefslogtreecommitdiff
path: root/src/routes/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/api')
-rw-r--r--src/routes/api/auth/first-login.zig15
-rw-r--r--src/routes/api/auth/login.zig34
-rw-r--r--src/routes/api/auth/root.zig4
-rw-r--r--src/routes/api/image/list.zig42
-rw-r--r--src/routes/api/image/load.zig15
-rw-r--r--src/routes/api/image/query.zig0
-rw-r--r--src/routes/api/image/remove.zig14
-rw-r--r--src/routes/api/image/root.zig6
-rw-r--r--src/routes/api/image/upload.zig17
-rw-r--r--src/routes/api/profile/create.zig29
-rw-r--r--src/routes/api/profile/image/load.zig17
-rw-r--r--src/routes/api/profile/image/root.zig5
-rw-r--r--src/routes/api/profile/image/upload.zig19
-rw-r--r--src/routes/api/profile/list.zig17
-rw-r--r--src/routes/api/profile/root.zig8
-rw-r--r--src/routes/api/profile/set.zig26
-rw-r--r--src/routes/api/profile/update-password.zig37
-rw-r--r--src/routes/api/root.zig4
-rw-r--r--src/routes/api/session/current.zig27
-rw-r--r--src/routes/api/session/drop.zig9
-rw-r--r--src/routes/api/session/is-online.zig15
-rw-r--r--src/routes/api/session/is-valid.zig21
-rw-r--r--src/routes/api/session/renew.zig9
-rw-r--r--src/routes/api/session/root.zig7
24 files changed, 0 insertions, 397 deletions
diff --git a/src/routes/api/auth/first-login.zig b/src/routes/api/auth/first-login.zig
deleted file mode 100644
index 523fdf4..0000000
--- a/src/routes/api/auth/first-login.zig
+++ /dev/null
@@ -1,15 +0,0 @@
-const std = @import("std");
-
-const memora = @import("memora");
-const Context = memora.Context;
-
-pub const access = .everyone;
-
-const Result = struct {
- is_first: bool,
-};
-
-pub fn post(ctx: *Context) anyerror!Result {
- _ = ctx;
- return .{ .is_first = false };
-}
diff --git a/src/routes/api/auth/login.zig b/src/routes/api/auth/login.zig
deleted file mode 100644
index 8a33082..0000000
--- a/src/routes/api/auth/login.zig
+++ /dev/null
@@ -1,34 +0,0 @@
-const std = @import("std");
-
-const memora = @import("memora");
-const Context = memora.Context;
-const Storage = memora.Storage;
-
-const Body = struct {
- user: []const u8,
- password: []const u8,
-};
-
-const Result = struct {
- success: bool,
-};
-
-pub const access = .everyone;
-
-pub fn post(ctx: *Context, body: Body) anyerror!Result {
- var user = Storage.User.open(ctx.storage, body.user) catch return .{
- .success = false
- };
- defer user.deinit();
-
- const result = Result {
- .success = user.check_password(body.password)
- };
-
- if (result.success) {
- const session = try ctx.storage.sessions.add(ctx.storage, user.info);
- ctx.response.headers.fingerprint = session.fingerprint;
- }
-
- return result;
-}
diff --git a/src/routes/api/auth/root.zig b/src/routes/api/auth/root.zig
deleted file mode 100644
index 5f45891..0000000
--- a/src/routes/api/auth/root.zig
+++ /dev/null
@@ -1,4 +0,0 @@
-const HandlerInfo = @import("../../handler-info.zig");
-
-pub const login: HandlerInfo = .from_type(@import("login.zig"));
-pub const @"first-login": HandlerInfo = .from_type(@import("first-login.zig"));
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);
- }
-}
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;
- }
-}
diff --git a/src/routes/api/root.zig b/src/routes/api/root.zig
deleted file mode 100644
index 5f731c3..0000000
--- a/src/routes/api/root.zig
+++ /dev/null
@@ -1,4 +0,0 @@
-pub const auth = @import("auth/root.zig");
-pub const session = @import("session/root.zig");
-pub const image = @import("image/root.zig");
-pub const profile = @import("profile/root.zig");
diff --git a/src/routes/api/session/current.zig b/src/routes/api/session/current.zig
deleted file mode 100644
index 897d01c..0000000
--- a/src/routes/api/session/current.zig
+++ /dev/null
@@ -1,27 +0,0 @@
-const std = @import("std");
-
-const memora = @import("memora");
-const Context = memora.Context;
-
-pub const access = .users;
-
-const Result = struct {
- name: []const u8,
- full_name: []const u8,
- birthday: []const u8,
- is_admin: bool,
-};
-
-pub fn get(ctx: *Context) !Result {
- const session = ctx.storage.sessions.get(
- ctx.storage,
- ctx.fingerprint,
- ) orelse return error.UserDoesNotExist;
-
- return .{
- .name = session.info.name,
- .full_name = session.info.full_name,
- .birthday = session.info.birthday,
- .is_admin = session.info.is_admin,
- };
-}
diff --git a/src/routes/api/session/drop.zig b/src/routes/api/session/drop.zig
deleted file mode 100644
index 4b193e0..0000000
--- a/src/routes/api/session/drop.zig
+++ /dev/null
@@ -1,9 +0,0 @@
-const memora = @import("memora");
-const Context = memora.Context;
-
-pub const access = .users;
-
-pub fn get(ctx: *Context) !void {
- ctx.storage.sessions.remove(ctx.storage, ctx.fingerprint);
- ctx.response.headers.fingerprint = "";
-}
diff --git a/src/routes/api/session/is-online.zig b/src/routes/api/session/is-online.zig
deleted file mode 100644
index f5ebaee..0000000
--- a/src/routes/api/session/is-online.zig
+++ /dev/null
@@ -1,15 +0,0 @@
-const std = @import("std");
-
-const memora = @import("memora");
-const Context = memora.Context;
-
-pub const access = .everyone;
-
-const Result = struct {
- is_online: bool,
-};
-
-pub fn get(ctx: *Context) !Result {
- _ = ctx;
- return .{ .is_online = true };
-}
diff --git a/src/routes/api/session/is-valid.zig b/src/routes/api/session/is-valid.zig
deleted file mode 100644
index 8cf6794..0000000
--- a/src/routes/api/session/is-valid.zig
+++ /dev/null
@@ -1,21 +0,0 @@
-const std = @import("std");
-const config = @import("config");
-
-const memora = @import("memora");
-const Context = memora.Context;
-
-pub const access = .everyone;
-
-const Result = struct {
- is_valid: bool
-};
-
-pub fn get(ctx: *Context) !Result {
- if (comptime config.disable_auth) {
- return .{ .is_valid = true };
- }
-
- return .{
- .is_valid = ctx.storage.sessions.get(ctx.storage, ctx.fingerprint) != null
- };
-}
diff --git a/src/routes/api/session/renew.zig b/src/routes/api/session/renew.zig
deleted file mode 100644
index c13e27e..0000000
--- a/src/routes/api/session/renew.zig
+++ /dev/null
@@ -1,9 +0,0 @@
-const memora = @import("memora");
-const Context = memora.Context;
-
-pub const access = .users;
-
-pub fn get(ctx: *Context) !void {
- const new = try ctx.storage.sessions.renew(ctx.storage, ctx.fingerprint);
- ctx.response.headers.fingerprint = new.fingerprint;
-}
diff --git a/src/routes/api/session/root.zig b/src/routes/api/session/root.zig
deleted file mode 100644
index a889869..0000000
--- a/src/routes/api/session/root.zig
+++ /dev/null
@@ -1,7 +0,0 @@
-const HandlerInfo = @import("../../handler-info.zig");
-
-pub const current: HandlerInfo = .from_type(@import("current.zig"));
-pub const drop: HandlerInfo = .from_type(@import("drop.zig"));
-pub const renew: HandlerInfo = .from_type(@import("renew.zig"));
-pub const @"is-valid": HandlerInfo = .from_type(@import("is-valid.zig"));
-pub const @"is-online": HandlerInfo = .from_type(@import("is-online.zig"));