htzx/src/routes/index.zig
2023-11-14 09:38:12 -07:00

45 lines
1.3 KiB
Zig

const std = @import("std");
const http = std.http;
const zx = @import("../zx.zig");
const log = std.log.scoped(.index);
pub fn getZig(ctz: *zx.ZxContext) zx.ZxError!void {
ctz.html(
\\<ul>
\\<li>Zig is awesome</li>
\\<li>Zig runs everywhere</li>
\\<li>Zig has a cool name</li>
\\</ul>
, .ok) catch |err| {
log.err("Got error {any}\n", .{err});
return zx.ZxError.Unexpected;
};
return;
}
const ZigPost = struct {
id: u32,
name: []const u8,
};
pub fn postZig(ctz: *zx.ZxContext) zx.ZxError!void {
if (ctz.req_body.len > 0) {
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
defer arena.deinit();
var json_body = std.json.parseFromSliceLeaky(ZigPost, arena.allocator(), ctz.req_body, .{}) catch |err| {
log.err("Error while parsing json: {any}", .{err});
return zx.ZxError.Unexpected;
};
log.info("Got id {d} name {s}", .{ json_body.id, json_body.name });
try ctz.json(.{ .success = true }, .ok);
} else {
ctz.json(.{ .success = false, .message = "Invalid request" }, .bad_request) catch |err| {
log.err("Got error {any}\n", .{err});
return zx.ZxError.Unexpected;
};
}
return;
}