1
0
Fork 0
mirror of https://github.com/zigzap/zap.git synced 2025-10-20 15:14:08 +00:00

on_request fallback for SimpleHttpListener

This commit is contained in:
Rene Schallner 2023-05-16 03:28:45 +02:00
parent 2c93e1ef94
commit 5e349a9224
3 changed files with 16 additions and 3 deletions

View file

@ -1,6 +1,6 @@
.{ .{
.name = "zap", .name = "zap",
.version = "0.0.19", .version = "0.0.20",
.dependencies = .{ .dependencies = .{
.@"facil.io" = .{ .@"facil.io" = .{

View file

@ -2,6 +2,15 @@ const std = @import("std");
const zap = @import("zap"); const zap = @import("zap");
const Endpoint = @import("endpoint.zig"); const Endpoint = @import("endpoint.zig");
// this is just to demo that we can catch arbitrary slugs
fn on_request(r: zap.SimpleRequest) void {
if (r.path) |the_path| {
std.debug.print("REQUESTED PATH: {s}\n", .{the_path});
}
r.sendBody("<html><body><h1>Hello from ZAP!!!</h1></body></html>") catch return;
}
pub fn main() !void { pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{ var gpa = std.heap.GeneralPurposeAllocator(.{
.thread_safe = true, .thread_safe = true,
@ -13,7 +22,7 @@ pub fn main() !void {
allocator, allocator,
.{ .{
.port = 3000, .port = 3000,
.on_request = null, .on_request = on_request,
.log = true, .log = true,
.public_folder = "examples/endpoint/html", .public_folder = "examples/endpoint/html",
.max_clients = 100000, .max_clients = 100000,

View file

@ -178,13 +178,14 @@ pub const SimpleEndpointListener = struct {
/// static struct member endpoints /// static struct member endpoints
var endpoints: std.ArrayList(*SimpleEndpoint) = undefined; var endpoints: std.ArrayList(*SimpleEndpoint) = undefined;
var on_request: ?zap.SimpleHttpRequestFn = null;
pub fn init(a: std.mem.Allocator, l: ListenerSettings) Self { pub fn init(a: std.mem.Allocator, l: ListenerSettings) Self {
endpoints = std.ArrayList(*SimpleEndpoint).init(a); endpoints = std.ArrayList(*SimpleEndpoint).init(a);
var ls = l; // take copy of listener settings var ls = l; // take copy of listener settings
ls.on_request = onRequest; ls.on_request = onRequest;
on_request = l.on_request;
return .{ return .{
.listener = Listener.init(ls), .listener = Listener.init(ls),
.allocator = a, .allocator = a,
@ -227,5 +228,8 @@ pub const SimpleEndpointListener = struct {
} }
} }
} }
if (on_request) |foo| {
foo(r);
}
} }
}; };