summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2016-10-04 17:41:37 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2016-10-04 17:41:37 +0100
commit61b7af3a835270b77d1e4d17b7e45261486bed44 (patch)
treee3ee7d0d06b58bf126541974ab1a3014cf18ac83
parentRename output file (diff)
downloadicespider-61b7af3a835270b77d1e4d17b7e45261486bed44.tar.bz2
icespider-61b7af3a835270b77d1e4d17b7e45261486bed44.tar.xz
icespider-61b7af3a835270b77d1e4d17b7e45261486bed44.zip
Fix where to find uploaded content type
-rw-r--r--icespider/core/ihttpRequest.cpp2
-rw-r--r--icespider/core/ihttpRequest.h1
-rw-r--r--icespider/fcgi/cgiRequestBase.cpp6
-rw-r--r--icespider/fcgi/cgiRequestBase.h1
-rw-r--r--icespider/unittests/testApp.cpp10
5 files changed, 17 insertions, 3 deletions
diff --git a/icespider/core/ihttpRequest.cpp b/icespider/core/ihttpRequest.cpp
index ea2c0bd..bd4d790 100644
--- a/icespider/core/ihttpRequest.cpp
+++ b/icespider/core/ihttpRequest.cpp
@@ -21,7 +21,7 @@ namespace IceSpider {
{
try {
return Slicer::StreamDeserializerFactory::createNew(
- getHeaderParam("Content-Type") / []() -> std::string {
+ getEnv("CONTENT_TYPE") / []() -> std::string {
throw Http400_BadRequest();
}, getInputStream());
}
diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h
index 6537ebf..38598e8 100644
--- a/icespider/core/ihttpRequest.h
+++ b/icespider/core/ihttpRequest.h
@@ -28,6 +28,7 @@ namespace IceSpider {
const std::string & getURLParam(unsigned int) const;
virtual OptionalString getQueryStringParam(const std::string &) const = 0;
virtual OptionalString getHeaderParam(const std::string &) const = 0;
+ virtual OptionalString getEnv(const std::string &) const = 0;
virtual Slicer::DeserializerPtr getDeserializer() const;
virtual ContentTypeSerializer getSerializer(const IRouteHandler *) const;
virtual std::istream & getInputStream() const = 0;
diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp
index 0b63997..c36e11c 100644
--- a/icespider/fcgi/cgiRequestBase.cpp
+++ b/icespider/fcgi/cgiRequestBase.cpp
@@ -94,6 +94,12 @@ namespace IceSpider {
}
OptionalString
+ CgiRequestBase::getEnv(const std::string & key) const
+ {
+ return optionalLookup(key, envmap);
+ }
+
+ OptionalString
CgiRequestBase::getHeaderParam(const std::string & key) const
{
return optionalLookup(("HTTP_" + boost::algorithm::to_upper_copy(key)).c_str(), envmap);
diff --git a/icespider/fcgi/cgiRequestBase.h b/icespider/fcgi/cgiRequestBase.h
index cc67407..97d956a 100644
--- a/icespider/fcgi/cgiRequestBase.h
+++ b/icespider/fcgi/cgiRequestBase.h
@@ -25,6 +25,7 @@ namespace IceSpider {
HttpMethod getRequestMethod() const override;
OptionalString getQueryStringParam(const std::string & key) const override;
OptionalString getHeaderParam(const std::string & key) const override;
+ OptionalString getEnv(const std::string & key) const override;
private:
static OptionalString optionalLookup(const std::string & key, const VarMap &);
diff --git a/icespider/unittests/testApp.cpp b/icespider/unittests/testApp.cpp
index df2f7ff..fc7d66a 100644
--- a/icespider/unittests/testApp.cpp
+++ b/icespider/unittests/testApp.cpp
@@ -53,6 +53,11 @@ class TestRequest : public IHttpRequest {
return method;
}
+ IceUtil::Optional<std::string> getEnv(const std::string & key) const override
+ {
+ return env.find(key) == env.end() ? IceUtil::Optional<std::string>() : env.find(key)->second;
+ }
+
IceUtil::Optional<std::string> getQueryStringParam(const std::string & key) const override
{
return qs.find(key) == qs.end() ? IceUtil::Optional<std::string>() : qs.find(key)->second;
@@ -78,6 +83,7 @@ class TestRequest : public IHttpRequest {
UrlVars url;
MapVars qs;
MapVars hdr;
+ MapVars env;
mutable std::stringstream input;
mutable std::stringstream output;
@@ -284,7 +290,7 @@ BOOST_AUTO_TEST_CASE( testCallDeleteSomeValue )
BOOST_AUTO_TEST_CASE( testCallPost1234 )
{
TestRequest requestUpdateItem(this, HttpMethod::POST, "/1234");
- requestUpdateItem.hdr["Content-Type"] = "application/json";
+ requestUpdateItem.env["CONTENT_TYPE"] = "application/json";
requestUpdateItem.input << "{\"value\": \"some value\"}";
process(&requestUpdateItem);
auto h = parseHeaders(requestUpdateItem.output);
@@ -307,7 +313,7 @@ BOOST_AUTO_TEST_CASE( testCallPost1234NoContentType )
BOOST_AUTO_TEST_CASE( testCallPost1234UnsupportedMediaType )
{
TestRequest requestUpdateItem(this, HttpMethod::POST, "/1234");
- requestUpdateItem.hdr["Content-Type"] = "application/notathing";
+ requestUpdateItem.env["CONTENT_TYPE"] = "application/notathing";
requestUpdateItem.input << "value=\"some value\"";
process(&requestUpdateItem);
auto h = parseHeaders(requestUpdateItem.output);