diff options
Diffstat (limited to 'src/http/method.zig')
-rw-r--r-- | src/http/method.zig | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/http/method.zig b/src/http/method.zig new file mode 100644 index 000000000..f306e522e --- /dev/null +++ b/src/http/method.zig @@ -0,0 +1,49 @@ +usingnamespace @import("../global.zig"); + +pub const Method = enum { + GET, + HEAD, + PATCH, + PUT, + POST, + OPTIONS, + CONNECT, + TRACE, + + pub fn which(str: []const u8) ?Method { + if (str.len < 3) { + return null; + } + const Match = strings.ExactSizeMatcher(2); + // we already did the length check + switch (Match.match(str[0..2])) { + Match.case("GE"), Match.case("ge") => { + return .GET; + }, + Match.case("HE"), Match.case("he") => { + return .HEAD; + }, + Match.case("PA"), Match.case("pa") => { + return .PATCH; + }, + Match.case("PO"), Match.case("po") => { + return .POST; + }, + Match.case("PU"), Match.case("pu") => { + return .PUT; + }, + Match.case("OP"), Match.case("op") => { + return .OPTIONS; + }, + Match.case("CO"), Match.case("co") => { + return .CONNECT; + }, + Match.case("TR"), Match.case("tr") => { + return .TRACE; + }, + else => { + return null; + }, + } + } +}; |