summaryrefslogtreecommitdiff
path: root/http_connection.cpp
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2011-01-10 08:44:27 +0100
committerVegard Storheil Eriksen <zyp@jvnv.net>2011-01-10 08:44:27 +0100
commit2dcf3091edfb316f4cf296fbeb1264aea633c09f (patch)
tree43c6202da5f724a62979bd9d37dfd53d5521b400 /http_connection.cpp
parentab7081676adf140cc8967c5ef49641b9a37bae2b (diff)
Added response_map for http response codes.
Diffstat (limited to 'http_connection.cpp')
-rw-r--r--http_connection.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/http_connection.cpp b/http_connection.cpp
index ff7e795..a16d237 100644
--- a/http_connection.cpp
+++ b/http_connection.cpp
@@ -5,8 +5,23 @@
#include <boost/bind.hpp>
#include <boost/format.hpp>
-void HTTP::Connection::send_error(int code, std::string name) {
- boost::asio::write(socket, boost::asio::buffer(boost::str(boost::format("HTTP/1.1 %1$d %2$s\r\n\r\n<h1>%1$d %2$s</h1>") % code % name)));
+namespace response_map_init {
+ typedef std::pair<int, std::string> P;
+ const P m[] = {
+ P(200, "OK"),
+ P(400, "Bad Request"),
+ P(404, "Not Found"),
+ P(500, "Internal Server Error"),
+ P(501, "Not Implemented")
+ };
+ const P* begin = m;
+ const P* end = m + sizeof(m) / sizeof(P);
+}
+
+const std::map<int, std::string> response_map(response_map_init::begin, response_map_init::end);
+
+void HTTP::Connection::send_error(int code) {
+ boost::asio::write(socket, boost::asio::buffer(boost::str(boost::format("HTTP/1.1 %1$d %2$s\r\n\r\n<h1>%1$d %2$s</h1>") % code % response_map.find(code)->second)));
}
void HTTP::Connection::add_header(std::string key, std::string value) {
@@ -47,7 +62,7 @@ void HTTP::Connection::handle_read(const boost::system::error_code& error, size_
if(!parse_request(buf)) {
// Request parse error.
std::cout << "Request parse error." << std::endl;
- send_error(400, "Bad Request");
+ send_error(400);
return;
}