const std = @import("std");
const httpz = @import("httpz");
const Err = error{
Missing,
Empty,
MismatchedValue,
};
pub fn Or(req: *httpz.Request, form_name: []const u8, default: []const u8) []const u8 {
const fd = req.formData() catch {
return default;
};
const val = fd.get(form_name);
if (val == null) {
return default;
}
return val.?;
}
pub fn Req(req: *httpz.Request, res: *httpz.Response, form_name: []const u8) ![]const u8 {
const fd = req.formData() catch |e| {
res.status = 400;
res.body = try std.fmt.allocPrint(res.arena, "bad form value for {s}", .{form_name});
return e;
};
const val = fd.get(form_name);
if (val == null) {
res.status = 400;
res.body = try std.fmt.allocPrint(res.arena, "bad form value for {s}", .{form_name});
return Err.Missing;
}
if (std.mem.eql(u8, val.?, "")) {
return Err.Empty;
}
return val.?;
}