pub const Hook = struct {
auth: *auth_api.Request = &auth_api.disabled,
db: Database,
cache: Cache = .{},
jobs: Jobs,
notifications: Notifications,
storage: Storage,
logger: *const Logger,
request_id: Request.Id,
headers: Headers,
cookies: Cookies,
locals: @FieldType(Request, "locals"),
session: *@FieldType(Request, "session"),
io: std.Io,
arena: std.mem.Allocator,
method: @FieldType(Request, "method"),
method_string: []const u8,
url: @FieldType(Request, "url"),
content_type: ?MediaType,
formats: []const Request.Format,
pub const Format = Request.Format;
pub const Authorization = Request.Authorization;
pub const QueryParameters = Request.QueryParameters;
pub const InvalidPayloadDetail = Request.InvalidPayloadDetail;
pub const InvalidPayloadDetails = Request.InvalidPayloadDetails;
pub const Raw = Action.Raw;
pub fn text(self: *Hook, body_bytes: []const u8, options: Response.Options) !Response;
pub fn html(self: *Hook, body_bytes: []const u8, options: Response.Options) !Response;
pub fn xml(self: *Hook, body_bytes: []const u8, options: Response.Options) !Response;
pub fn markdown(self: *Hook, body_bytes: []const u8, options: Response.Options) !Response;
pub fn ics(self: *Hook, body_bytes: []const u8, options: Response.Options) !Response;
pub fn csv(self: *Hook, body_bytes: []const u8, options: Response.Options) !Response;
pub fn svg(self: *Hook, body_bytes: []const u8, options: Response.Options) !Response;
pub fn bytes(self: *Hook, body_bytes: []const u8, options: Response.BytesOptions) !Response;
pub fn empty(self: *Hook, options: Response.Options) !Response;
pub fn redirect(self: *Hook, status: std.http.Status, location: []const u8) !Response;
pub fn challenge(
self: *Hook,
comptime scheme: Response.ChallengeScheme,
options: switch (scheme) {
.basic => Response.BasicChallengeOptions,
.bearer => Response.BearerChallengeOptions,
},
) !Response;
pub fn body(self: *const Hook) ?[]const u8;
pub fn authorization(self: *Hook) !Authorization;
pub fn param(self: *const Hook, key: []const u8) []const u8;
pub fn query(self: *Hook) !QueryParameters;
pub fn expect_payload(self: *Hook, comptime T: type) !T;
pub fn invalid_payload_details(self: *const Hook) ?InvalidPayloadDetails;
pub fn payload(self: *Hook) !?std.json.ObjectMap;
pub fn render(
self: *Hook,
comptime template_name: []const u8,
params: anytype,
options: Response.Options,
) !Response;
pub fn json(self: *Hook, value: anytype, options: Response.Options) !Response;
pub fn writer(self: *Hook, options: Response.WriterOptions) !?*std.Io.Writer;
pub fn raw(self: *Hook) *Raw;
pub fn next(self: *Hook) !void;
pub fn respond(self: *Hook, response: Response) !void;
};