aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaeseung Ha <ipknhama@gmail.com>2017-10-21 20:51:35 +0900
committerGitHub <noreply@github.com>2017-10-21 20:51:35 +0900
commit7f3f72441c242836d00ab2109a83baef89c08aaa (patch)
tree0598733459893098dd478e80327b047aa06095f9
parent53af5043ac6f77cb8580c13b50956bf97819eb69 (diff)
parent8b01385465a2a1366ca2a62a99211140a9c62fa2 (diff)
downloadcrow-7f3f72441c242836d00ab2109a83baef89c08aaa.tar.gz
crow-7f3f72441c242836d00ab2109a83baef89c08aaa.zip
Merge pull request #253 from boodkb/patch_method
Add support for HTTP PATCH method
-rw-r--r--include/crow/common.h5
-rw-r--r--tests/unittest.cpp16
2 files changed, 21 insertions, 0 deletions
diff --git a/include/crow/common.h b/include/crow/common.h
index 84d1361..ac6e789 100644
--- a/include/crow/common.h
+++ b/include/crow/common.h
@@ -19,6 +19,7 @@ namespace crow
CONNECT,
OPTIONS,
TRACE,
+ PATCH = 24,
#endif
Delete = 0,
@@ -29,6 +30,7 @@ namespace crow
Connect,
Options,
Trace,
+ Patch = 24,
};
inline std::string method_name(HTTPMethod method)
@@ -51,6 +53,8 @@ namespace crow
return "OPTIONS";
case HTTPMethod::Trace:
return "TRACE";
+ case HTTPMethod::Patch:
+ return "PATCH";
}
return "invalid";
}
@@ -132,6 +136,7 @@ constexpr crow::HTTPMethod operator "" _method(const char* str, size_t /*len*/)
crow::black_magic::is_equ_p(str, "OPTIONS", 7) ? crow::HTTPMethod::Options :
crow::black_magic::is_equ_p(str, "CONNECT", 7) ? crow::HTTPMethod::Connect :
crow::black_magic::is_equ_p(str, "TRACE", 5) ? crow::HTTPMethod::Trace :
+ crow::black_magic::is_equ_p(str, "PATCH", 5) ? crow::HTTPMethod::Patch :
throw std::runtime_error("invalid http method");
}
#endif
diff --git a/tests/unittest.cpp b/tests/unittest.cpp
index 303fa72..bffdd60 100644
--- a/tests/unittest.cpp
+++ b/tests/unittest.cpp
@@ -324,6 +324,11 @@ TEST(http_method)
([](const request& /*req*/){
return "post";
});
+ CROW_ROUTE(app, "/patch_only")
+ .methods("PATCH"_method)
+ ([](const request& /*req*/){
+ return "patch";
+ });
// cannot have multiple handlers for the same url
@@ -365,6 +370,17 @@ TEST(http_method)
request req;
response res;
+ req.url = "/patch_only";
+ req.method = "PATCH"_method;
+ app.handle(req, res);
+
+ ASSERT_EQUAL("patch", res.body);
+ }
+
+ {
+ request req;
+ response res;
+
req.url = "/get_only";
req.method = "POST"_method;
app.handle(req, res);