45 lines
1.3 KiB
Zig
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;
|
|
}
|