diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-10-04 17:41:37 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-10-04 17:41:37 +0100 |
commit | 61b7af3a835270b77d1e4d17b7e45261486bed44 (patch) | |
tree | e3ee7d0d06b58bf126541974ab1a3014cf18ac83 | |
parent | Rename output file (diff) | |
download | icespider-61b7af3a835270b77d1e4d17b7e45261486bed44.tar.bz2 icespider-61b7af3a835270b77d1e4d17b7e45261486bed44.tar.xz icespider-61b7af3a835270b77d1e4d17b7e45261486bed44.zip |
Fix where to find uploaded content type
-rw-r--r-- | icespider/core/ihttpRequest.cpp | 2 | ||||
-rw-r--r-- | icespider/core/ihttpRequest.h | 1 | ||||
-rw-r--r-- | icespider/fcgi/cgiRequestBase.cpp | 6 | ||||
-rw-r--r-- | icespider/fcgi/cgiRequestBase.h | 1 | ||||
-rw-r--r-- | icespider/unittests/testApp.cpp | 10 |
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); |