34 lines
1.1 KiB
Zig
34 lines
1.1 KiB
Zig
|
const root = @import("root");
|
||
|
const http = @import("http");
|
||
|
|
||
|
const utils = @import("../controllers.zig").utils;
|
||
|
|
||
|
const RequestServer = root.RequestServer;
|
||
|
const RouteArgs = http.RouteArgs;
|
||
|
|
||
|
pub const create = struct {
|
||
|
pub const method = .GET;
|
||
|
pub const path = "/communities";
|
||
|
pub fn handler(srv: *RequestServer, ctx: *http.server.Context, _: RouteArgs) !void {
|
||
|
const opt = try utils.parseRequestBody(struct { origin: []const u8 }, ctx);
|
||
|
defer utils.freeRequestBody(opt, ctx.alloc);
|
||
|
|
||
|
var api = try utils.getApiConn(srv, ctx);
|
||
|
defer api.close();
|
||
|
|
||
|
const invite = try api.createCommunity(opt.origin);
|
||
|
|
||
|
try utils.respondJson(ctx, .created, invite);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
pub fn get(srv: *RequestServer, ctx: *http.server.Context, args: RouteArgs) !void {
|
||
|
const host = args.get("host") orelse return error.NotFound;
|
||
|
var api = try utils.getApiConn(srv, ctx);
|
||
|
defer api.close();
|
||
|
|
||
|
const invite = (try api.getCommunity(host)) orelse return utils.respondError(ctx, .not_found, "Community not found");
|
||
|
|
||
|
try utils.respondJson(ctx, .ok, invite);
|
||
|
}
|