-
-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use std.http.Method for Request.method #72
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -266,7 +266,8 @@ pub const CookieArgs = struct { | |
path: ?[]const u8, | ||
query: ?[]const u8, | ||
body: ?[]const u8, | ||
method: ?[]const u8, | ||
method: ?std.http.Method, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I propose that the optional makes no sense here. I think an enum (default) value of "invalid" or sth similar makes more sense. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fck. does There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmmm. What about defining our own enum? WDYT? It could even be based on std.http.Method, but add a value for "invalid". std.http returns There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that would make switching more convenient, no need for checking != null There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I was thinking about a custom enum, but I went with There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Or should it be called There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe even Unexpected? Because we expect a fixed set and did not detect any of those. So it comes unexpected to zap. Or just NonStandard? |
||
method_str: ?[]const u8, | ||
h: [*c]fio.http_s, | ||
|
||
/// NEVER touch this field!!!! | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -184,6 +184,27 @@ pub const HttpListenerSettings = struct { | |
tls: ?Tls = null, | ||
}; | ||
|
||
fn methodToEnum(method: ?[]const u8) ?std.http.Method { | ||
const Method = std.http.Method; | ||
{ | ||
if (method) |m| { | ||
if (std.mem.eql(u8, m, "GET")) | ||
return Method.GET; | ||
if (std.mem.eql(u8, m, "POST")) | ||
return Method.POST; | ||
if (std.mem.eql(u8, m, "PUT")) | ||
return Method.PUT; | ||
if (std.mem.eql(u8, m, "DELETE")) | ||
return Method.DELETE; | ||
if (std.mem.eql(u8, m, "PATCH")) | ||
return Method.PATCH; | ||
if (std.mem.eql(u8, m, "OPTIONS")) | ||
return Method.OPTIONS; | ||
} | ||
return null; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. here is where the invalid would go |
||
} | ||
} | ||
|
||
/// Http listener | ||
pub const HttpListener = struct { | ||
settings: HttpListenerSettings, | ||
|
@@ -207,7 +228,8 @@ pub const HttpListener = struct { | |
.path = util.fio2str(r.*.path), | ||
.query = util.fio2str(r.*.query), | ||
.body = util.fio2str(r.*.body), | ||
.method = util.fio2str(r.*.method), | ||
.method = methodToEnum(util.fio2str(r.*.method)), | ||
.method_str = util.fio2str(r.*.method), | ||
.h = r, | ||
._is_finished_request_global = false, | ||
._user_context = undefined, | ||
|
@@ -233,7 +255,8 @@ pub const HttpListener = struct { | |
.path = util.fio2str(r.*.path), | ||
.query = util.fio2str(r.*.query), | ||
.body = util.fio2str(r.*.body), | ||
.method = util.fio2str(r.*.method), | ||
.method = methodToEnum(util.fio2str(r.*.method)), | ||
.method_str = util.fio2str(r.*.method), | ||
.h = r, | ||
._is_finished_request_global = false, | ||
._user_context = undefined, | ||
|
@@ -254,7 +277,8 @@ pub const HttpListener = struct { | |
.path = util.fio2str(r.*.path), | ||
.query = util.fio2str(r.*.query), | ||
.body = util.fio2str(r.*.body), | ||
.method = util.fio2str(r.*.method), | ||
.method = methodToEnum(util.fio2str(r.*.method)), | ||
.method_str = util.fio2str(r.*.method), | ||
.h = r, | ||
._is_finished_request_global = false, | ||
._user_context = undefined, | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be != .GET
I am not sure if I like having to check 2 things instead of one
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, that is a bug
r.method.?
should be checked anyways, I think