summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2011-12-08 08:20:07 -0800
committerPixel <pixel@nobis-crew.org>2011-12-08 08:21:09 -0800
commit69efca1a157245b35cd80a09718f45b30412dcea (patch)
treee4559bdbefc4d76b3b2c6b411c45f2073f3b6e5e
parentaec08e7e3a8cf646463d45f61d2e546d3223aa3c (diff)
Moving the HTTP status messages out of the HTTP server, and into its own file. Also making it complete.
-rw-r--r--Makefile1
-rw-r--r--includes/Http.h2
-rw-r--r--src/Http.cc47
-rw-r--r--src/HttpServer.cc20
4 files changed, 53 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index b0aa08e..28207c1 100644
--- a/Makefile
+++ b/Makefile
@@ -133,6 +133,7 @@ BStream.cc \
Task.cc \
TaskMan.cc \
\
+Http.cc \
HttpServer.cc \
SimpleMustache.cc \
\
diff --git a/includes/Http.h b/includes/Http.h
index 05e72f4..26323ee 100644
--- a/includes/Http.h
+++ b/includes/Http.h
@@ -8,6 +8,8 @@ namespace Balau {
namespace Http {
+const char * getStatusMsg(int httpStatus);
+
typedef std::map<String, String> StringMap;
typedef std::map<String, IO<Handle> > FileList;
diff --git a/src/Http.cc b/src/Http.cc
new file mode 100644
index 0000000..85adbfc
--- /dev/null
+++ b/src/Http.cc
@@ -0,0 +1,47 @@
+#include "Http.h"
+
+const char * Balau::Http::getStatusMsg(int httpStatus) {
+ switch (httpStatus) {
+ case 100: return "Continue";
+ case 101: return "Switching Protocols";
+ case 200: return "OK";
+ case 201: return "Created";
+ case 202: return "Accepted";
+ case 203: return "Non-Authoritative Information";
+ case 204: return "No Content";
+ case 205: return "Reset Content";
+ case 206: return "Partial Content";
+ case 300: return "Multiple Choices";
+ case 301: return "Moved Permanently";
+ case 302: return "Found";
+ case 303: return "See Other";
+ case 304: return "Not Modified";
+ case 305: return "Use Proxy";
+ case 307: return "Temporary Redirect";
+ case 400: return "Bad Request";
+ case 401: return "Unauthorized";
+ case 402: return "Payment Required";
+ case 403: return "Forbidden";
+ case 404: return "Not Found";
+ case 405: return "Method Not Allowed";
+ case 406: return "Not Acceptable";
+ case 407: return "Proxy Authentication Required";
+ case 408: return "Request Timeout";
+ case 409: return "Conflict";
+ case 410: return "Gone";
+ case 411: return "Length Required";
+ case 412: return "Precondition Failed";
+ case 413: return "Request Entity Too Large";
+ case 414: return "Request-URI Too Long";
+ case 415: return "Unsupported Media Type";
+ case 416: return "Requested Range Not Satisfiable";
+ case 417: return "Expectation Failed";
+ case 500: return "Internal Error";
+ case 501: return "Not Implemented";
+ case 502: return "Bad Gateway";
+ case 503: return "Service Unavailable";
+ case 504: return "Gateway Timeout";
+ case 505: return "HTTP Version Not Supported";
+ }
+ return NULL;
+}
diff --git a/src/HttpServer.cc b/src/HttpServer.cc
index ee6919b..1268c7b 100644
--- a/src/HttpServer.cc
+++ b/src/HttpServer.cc
@@ -176,25 +176,11 @@ void Balau::HttpWorker::readVariables(Http::StringMap & variables, char * str) {
} while (ampPos);
}
-static const char * getErrorMsg(int httpError) {
- switch (httpError) {
- case 400:
- return "Bad Request";
- case 403:
- return "Forbidden";
- case 404:
- return "Not Found";
- case 405:
- return "Method Not Allowed";
- case 500:
- default:
- return "Internal Error";
- }
-}
-
void Balau::HttpWorker::sendError(int error, const char * msg, const char * details, bool closeConnection, std::vector<String> extraHeaders, std::vector<String> trace) {
SimpleMustache * tpl = &m_errorTemplate;
- const char * errorMsg = getErrorMsg(error);
+ const char * errorMsg = Http::getStatusMsg(error);
+ if (!errorMsg)
+ errorMsg = "Unknown Status";
Printer::elog(Balau::E_HTTPSERVER, "%s caused a %i error (%s)", m_name.to_charp(), error, errorMsg);
SimpleMustache::Context ctx;
String title;