diff --git a/build.zig b/build.zig index 3642a97..a486a18 100644 --- a/build.zig +++ b/build.zig @@ -20,7 +20,7 @@ pub fn build(b: *std.build.Builder) !void { }{ .{ .name = "hello", .src = "examples/hello/hello.zig" }, .{ .name = "routes", .src = "examples/routes/routes.zig" }, - // .{ .name = "serve", .src = "examples/serve/serve.zig" }, + .{ .name = "serve", .src = "examples/serve/serve.zig" }, }) |excfg| { const ex_name = excfg.name; const ex_src = excfg.src; diff --git a/examples/serve/index.html b/examples/serve/index.html new file mode 100644 index 0000000..c09bc21 --- /dev/null +++ b/examples/serve/index.html @@ -0,0 +1,11 @@ + + +
+ +My first page.
+ + + + diff --git a/examples/serve/serve.zig b/examples/serve/serve.zig new file mode 100644 index 0000000..4bf32d0 --- /dev/null +++ b/examples/serve/serve.zig @@ -0,0 +1,25 @@ +const std = @import("std"); +const zap = @import("zap"); + +fn on_request(r: zap.SimpleRequest) void { + // TODO: send 404 response + _ = r.sendBody("My second page.
+ + + + diff --git a/src/deps/zap.zig b/src/deps/zap.zig index d6d38dd..8da4199 100644 --- a/src/deps/zap.zig +++ b/src/deps/zap.zig @@ -44,8 +44,8 @@ pub const SimpleHttpRequestFn = *const fn (SimpleRequest) void; pub const SimpleHttpListenerSettings = struct { port: usize, interface: [*c]const u8 = null, - on_request: SimpleHttpRequestFn, - public_folder: ?[]u8 = null, + on_request: ?SimpleHttpRequestFn, + public_folder: ?[]const u8 = null, max_clients: ?u8 = null, timeout: ?u8 = null, log: bool = false, @@ -71,7 +71,7 @@ pub const SimpleHttpListener = struct { .query = fio2str(r.*.query), .h = r, }; - l.settings.on_request(req); + l.settings.on_request.?(req); } } @@ -82,14 +82,14 @@ pub const SimpleHttpListener = struct { if (self.settings.public_folder) |pf| { pfolder_len = pf.len; // TODO: make sure it's 0-terminated!!! - if (pf[pf.len - 1] != 0) { - return error.ValueNotZeroTerminated; - } + // if (pf[pf.len - 1] != 0) { + // return error.ValueNotZeroTerminated; + // } pfolder = pf.ptr; } var x: C.http_settings_s = .{ - .on_request = Self.theOneAndOnlyRequestCallBack, + .on_request = if (self.settings.on_request) |_| Self.theOneAndOnlyRequestCallBack else null, .on_upgrade = null, .on_response = null, .on_finish = null, @@ -164,9 +164,9 @@ pub fn listen(port: [*c]const u8, interface: [*c]const u8, settings: ListenSetti if (settings.public_folder) |pf| { pfolder_len = pf.len; // TODO: make sure it's 0-terminated!!! - if (pf[pf.len - 1] != 0) { - return error.ValueNotZeroTerminated; - } + // if (pf[pf.len - 1] != 0) { + // return error.ValueNotZeroTerminated; + // } pfolder = pf.ptr; } var x: C.http_settings_s = .{