diff options
-rw-r--r-- | icespider/core/core.cpp | 1 | ||||
-rw-r--r-- | icespider/core/core.h | 1 | ||||
-rw-r--r-- | icespider/core/ihttpRequest.cpp | 3 | ||||
-rw-r--r-- | icespider/core/ihttpRequest.h | 11 | ||||
-rw-r--r-- | icespider/unittests/testApp.cpp | 4 |
5 files changed, 9 insertions, 11 deletions
diff --git a/icespider/core/core.cpp b/icespider/core/core.cpp index 211a4da..58619aa 100644 --- a/icespider/core/core.cpp +++ b/icespider/core/core.cpp @@ -7,6 +7,7 @@ namespace IceSpider { DefineHttpEx(Http404_NotFound, 404, "Not found"); DefineHttpEx(Http405_MethodNotAllowed, 405, "Method Not Allowed"); + DefineHttpEx(Http406_NotAcceptable, 406, "Not Acceptable"); static bool diff --git a/icespider/core/core.h b/icespider/core/core.h index 9b011a5..74c9108 100644 --- a/icespider/core/core.h +++ b/icespider/core/core.h @@ -22,6 +22,7 @@ namespace IceSpider { DeclareHttpEx(Http404_NotFound); DeclareHttpEx(Http405_MethodNotAllowed); + DeclareHttpEx(Http406_NotAcceptable); class DLL_PUBLIC Core { public: diff --git a/icespider/core/ihttpRequest.cpp b/icespider/core/ihttpRequest.cpp index 9b62507..73da7ae 100644 --- a/icespider/core/ihttpRequest.cpp +++ b/icespider/core/ihttpRequest.cpp @@ -1,6 +1,7 @@ #include "ihttpRequest.h" #include "irouteHandler.h" #include "util.h" +#include "core.h" #include <boost/lexical_cast.hpp> namespace IceSpider { @@ -59,7 +60,7 @@ namespace IceSpider { return serializer; } } - return ContentTypeSerializer(); + throw Http406_NotAcceptable(); } else { return handler->defaultSerializer(getOutputStream()); diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h index 9ce869f..6537ebf 100644 --- a/icespider/core/ihttpRequest.h +++ b/icespider/core/ihttpRequest.h @@ -49,14 +49,9 @@ namespace IceSpider { void response(const IRouteHandler * route, const T & t) const { auto s = getSerializer(route); - if (s.second) { - getOutputStream() << "Content-Type: " << s.first.group << "/" << s.first.type << "\r\n"; - response(200, "OK"); - Slicer::SerializeAnyWith<T>(t, s.second); - } - else { - response(406, "Unacceptable"); - } + getOutputStream() << "Content-Type: " << s.first.group << "/" << s.first.type << "\r\n"; + response(200, "OK"); + Slicer::SerializeAnyWith<T>(t, s.second); } const Core * core; diff --git a/icespider/unittests/testApp.cpp b/icespider/unittests/testApp.cpp index 2a584a4..4e32ddd 100644 --- a/icespider/unittests/testApp.cpp +++ b/icespider/unittests/testApp.cpp @@ -358,7 +358,7 @@ BOOST_AUTO_TEST_CASE( testCallViewSomethingAcceptHtml ) requestHtml.hdr["Accept"] = "text/html"; process(&requestHtml); auto h = parseHeaders(requestHtml.output); - BOOST_REQUIRE_EQUAL(h["Status"], "406 Unacceptable"); + BOOST_REQUIRE_EQUAL(h["Status"], "406 Not Acceptable"); requestHtml.output.get(); BOOST_REQUIRE(requestHtml.output.eof()); } @@ -369,7 +369,7 @@ BOOST_AUTO_TEST_CASE( testCallIndexAcceptNotSupported ) requestBadAccept.hdr["Accept"] = "not/supported"; process(&requestBadAccept); auto h = parseHeaders(requestBadAccept.output); - BOOST_REQUIRE_EQUAL(h["Status"], "406 Unacceptable"); + BOOST_REQUIRE_EQUAL(h["Status"], "406 Not Acceptable"); requestBadAccept.output.get(); BOOST_REQUIRE(requestBadAccept.output.eof()); } |