diff options
| -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);  | 
