mirror of
https://github.com/zigzap/zap.git
synced 2025-10-20 15:14:08 +00:00
Merge pull request #164 from fwfurtado/hotfix/add-missing-head-handler-to-endpoints
fix: add missing head handler for EndpointType
This commit is contained in:
commit
ec7cac6f6a
12 changed files with 39 additions and 1 deletions
|
@ -65,6 +65,7 @@ const MyEndpoint = struct {
|
||||||
pub fn delete(_: *MyEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn delete(_: *MyEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *MyEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn patch(_: *MyEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
pub fn options(_: *MyEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn options(_: *MyEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *MyEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
|
|
|
@ -66,6 +66,7 @@ const SimpleEndpoint = struct {
|
||||||
pub fn delete(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn delete(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn patch(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
pub fn options(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn options(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *SimpleEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
};
|
};
|
||||||
|
|
||||||
const StopEndpoint = struct {
|
const StopEndpoint = struct {
|
||||||
|
|
|
@ -53,6 +53,7 @@ const ErrorEndpoint = struct {
|
||||||
pub fn delete(_: *ErrorEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn delete(_: *ErrorEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *ErrorEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn patch(_: *ErrorEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
pub fn options(_: *ErrorEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
pub fn options(_: *ErrorEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *ErrorEndpoint, _: Allocator, _: *MyContext, _: zap.Request) !void {}
|
||||||
};
|
};
|
||||||
|
|
||||||
const StopEndpoint = struct {
|
const StopEndpoint = struct {
|
||||||
|
|
|
@ -20,3 +20,4 @@ pub fn put(_: *ErrorEndpoint, _: zap.Request) !void {}
|
||||||
pub fn delete(_: *ErrorEndpoint, _: zap.Request) !void {}
|
pub fn delete(_: *ErrorEndpoint, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *ErrorEndpoint, _: zap.Request) !void {}
|
pub fn patch(_: *ErrorEndpoint, _: zap.Request) !void {}
|
||||||
pub fn options(_: *ErrorEndpoint, _: zap.Request) !void {}
|
pub fn options(_: *ErrorEndpoint, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *ErrorEndpoint, _: zap.Request) !void {}
|
||||||
|
|
|
@ -23,3 +23,4 @@ pub fn put(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
pub fn delete(_: *StopEndpoint, _: zap.Request) !void {}
|
pub fn delete(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *StopEndpoint, _: zap.Request) !void {}
|
pub fn patch(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
pub fn options(_: *StopEndpoint, _: zap.Request) !void {}
|
pub fn options(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
|
|
|
@ -127,7 +127,12 @@ pub fn delete(self: *UserWeb, r: zap.Request) !void {
|
||||||
|
|
||||||
pub fn options(_: *UserWeb, r: zap.Request) !void {
|
pub fn options(_: *UserWeb, r: zap.Request) !void {
|
||||||
try r.setHeader("Access-Control-Allow-Origin", "*");
|
try r.setHeader("Access-Control-Allow-Origin", "*");
|
||||||
try r.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS");
|
try r.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD");
|
||||||
|
r.setStatus(zap.http.StatusCode.no_content);
|
||||||
|
r.markAsFinished(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn head(_: *UserWeb, r: zap.Request) !void {
|
||||||
r.setStatus(zap.http.StatusCode.no_content);
|
r.setStatus(zap.http.StatusCode.no_content);
|
||||||
r.markAsFinished(true);
|
r.markAsFinished(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ const Endpoint = struct {
|
||||||
pub fn delete(_: *Endpoint, _: zap.Request) !void {}
|
pub fn delete(_: *Endpoint, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *Endpoint, _: zap.Request) !void {}
|
pub fn patch(_: *Endpoint, _: zap.Request) !void {}
|
||||||
pub fn options(_: *Endpoint, _: zap.Request) !void {}
|
pub fn options(_: *Endpoint, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *Endpoint, _: zap.Request) !void {}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
|
|
|
@ -157,6 +157,7 @@ const HtmlEndpoint = struct {
|
||||||
pub fn delete(_: *HtmlEndpoint, _: zap.Request) !void {}
|
pub fn delete(_: *HtmlEndpoint, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *HtmlEndpoint, _: zap.Request) !void {}
|
pub fn patch(_: *HtmlEndpoint, _: zap.Request) !void {}
|
||||||
pub fn options(_: *HtmlEndpoint, _: zap.Request) !void {}
|
pub fn options(_: *HtmlEndpoint, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *HtmlEndpoint, _: zap.Request) !void {}
|
||||||
|
|
||||||
pub fn get(_: *HtmlEndpoint, r: zap.Request) !void {
|
pub fn get(_: *HtmlEndpoint, r: zap.Request) !void {
|
||||||
var buf: [1024]u8 = undefined;
|
var buf: [1024]u8 = undefined;
|
||||||
|
|
11
src/App.zig
11
src/App.zig
|
@ -117,6 +117,7 @@ pub fn Create(
|
||||||
.DELETE => self.endpoint.*.delete(arena, app_context, r),
|
.DELETE => self.endpoint.*.delete(arena, app_context, r),
|
||||||
.PATCH => self.endpoint.*.patch(arena, app_context, r),
|
.PATCH => self.endpoint.*.patch(arena, app_context, r),
|
||||||
.OPTIONS => self.endpoint.*.options(arena, app_context, r),
|
.OPTIONS => self.endpoint.*.options(arena, app_context, r),
|
||||||
|
.HEAD => self.endpoint.*.head(arena, app_context, r),
|
||||||
else => error.UnsupportedHtmlRequestMethod,
|
else => error.UnsupportedHtmlRequestMethod,
|
||||||
};
|
};
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -173,6 +174,7 @@ pub fn Create(
|
||||||
"delete",
|
"delete",
|
||||||
"patch",
|
"patch",
|
||||||
"options",
|
"options",
|
||||||
|
"head",
|
||||||
};
|
};
|
||||||
const params_to_check = [_]type{
|
const params_to_check = [_]type{
|
||||||
*T,
|
*T,
|
||||||
|
@ -305,6 +307,15 @@ pub fn Create(
|
||||||
.Handled => {},
|
.Handled => {},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Authenticates HEAD requests using the Authenticator.
|
||||||
|
pub fn head(self: *AuthenticatingEndpoint, arena: Allocator, context: *Context, request: zap.Request) anyerror!void {
|
||||||
|
try switch (self.authenticator.authenticateRequest(&request)) {
|
||||||
|
.AuthFailed => return self.ep.*.unauthorized(arena, context, request),
|
||||||
|
.AuthOK => self.ep.*.head(arena, context, request),
|
||||||
|
.Handled => {},
|
||||||
|
};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
//! pub fn delete(_: *Self, _: zap.Request) !void {}
|
//! pub fn delete(_: *Self, _: zap.Request) !void {}
|
||||||
//! pub fn patch(_: *Self, _: zap.Request) !void {}
|
//! pub fn patch(_: *Self, _: zap.Request) !void {}
|
||||||
//! pub fn options(_: *Self, _: zap.Request) !void {}
|
//! pub fn options(_: *Self, _: zap.Request) !void {}
|
||||||
|
//! pub fn head(_: *Self, _: zap.Request) !void {}
|
||||||
//!
|
//!
|
||||||
//! // optional, if auth stuff is used:
|
//! // optional, if auth stuff is used:
|
||||||
//! pub fn unauthorized(_: *Self, _: zap.Request) !void {}
|
//! pub fn unauthorized(_: *Self, _: zap.Request) !void {}
|
||||||
|
@ -49,6 +50,7 @@
|
||||||
//! pub fn delete(_: *StopEndpoint, _: zap.Request) !void {}
|
//! pub fn delete(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
//! pub fn patch(_: *StopEndpoint, _: zap.Request) !void {}
|
//! pub fn patch(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
//! pub fn options(_: *StopEndpoint, _: zap.Request) !void {}
|
//! pub fn options(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
|
//! pub fn head(_: *StopEndpoint, _: zap.Request) !void {}
|
||||||
//! };
|
//! };
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
|
@ -97,6 +99,7 @@ pub fn checkEndpointType(T: type) void {
|
||||||
"delete",
|
"delete",
|
||||||
"patch",
|
"patch",
|
||||||
"options",
|
"options",
|
||||||
|
"head",
|
||||||
};
|
};
|
||||||
|
|
||||||
const params_to_check = [_]type{
|
const params_to_check = [_]type{
|
||||||
|
@ -192,6 +195,7 @@ pub const Binder = struct {
|
||||||
.DELETE => self.endpoint.*.delete(r),
|
.DELETE => self.endpoint.*.delete(r),
|
||||||
.PATCH => self.endpoint.*.patch(r),
|
.PATCH => self.endpoint.*.patch(r),
|
||||||
.OPTIONS => self.endpoint.*.options(r),
|
.OPTIONS => self.endpoint.*.options(r),
|
||||||
|
.HEAD => self.endpoint.*.head(r),
|
||||||
else => error.UnsupportedHtmlRequestMethod,
|
else => error.UnsupportedHtmlRequestMethod,
|
||||||
};
|
};
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -295,6 +299,15 @@ pub fn Authenticating(EndpointType: type, Authenticator: type) type {
|
||||||
.Handled => {},
|
.Handled => {},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Authenticates HEAD requests using the Authenticator.
|
||||||
|
pub fn head(self: *AuthenticatingEndpoint, r: zap.Request) anyerror!void {
|
||||||
|
try switch (self.authenticator.authenticateRequest(&r)) {
|
||||||
|
.AuthFailed => return self.ep.*.unauthorized(r),
|
||||||
|
.AuthOK => self.ep.*.head(r),
|
||||||
|
.Handled => {},
|
||||||
|
};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,6 +109,7 @@ pub fn EndpointHandler(comptime HandlerType: anytype, comptime EndpointType: any
|
||||||
.DELETE => try self.endpoint.*.delete(r),
|
.DELETE => try self.endpoint.*.delete(r),
|
||||||
.PATCH => try self.endpoint.*.patch(r),
|
.PATCH => try self.endpoint.*.patch(r),
|
||||||
.OPTIONS => try self.endpoint.*.options(r),
|
.OPTIONS => try self.endpoint.*.options(r),
|
||||||
|
.HEAD => try self.endpoint.*.head(r),
|
||||||
else => {},
|
else => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -170,6 +170,7 @@ pub const Endpoint = struct {
|
||||||
pub fn delete(_: *Endpoint, _: zap.Request) !void {}
|
pub fn delete(_: *Endpoint, _: zap.Request) !void {}
|
||||||
pub fn patch(_: *Endpoint, _: zap.Request) !void {}
|
pub fn patch(_: *Endpoint, _: zap.Request) !void {}
|
||||||
pub fn options(_: *Endpoint, _: zap.Request) !void {}
|
pub fn options(_: *Endpoint, _: zap.Request) !void {}
|
||||||
|
pub fn head(_: *Endpoint, _: zap.Request) !void {}
|
||||||
};
|
};
|
||||||
//
|
//
|
||||||
// end of http client code
|
// end of http client code
|
||||||
|
|
Loading…
Add table
Reference in a new issue