From 69efca1a157245b35cd80a09718f45b30412dcea Mon Sep 17 00:00:00 2001 From: Pixel Date: Thu, 8 Dec 2011 08:20:07 -0800 Subject: Moving the HTTP status messages out of the HTTP server, and into its own file. Also making it complete. --- Makefile | 1 + includes/Http.h | 2 ++ src/Http.cc | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/HttpServer.cc | 20 +++----------------- 4 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 src/Http.cc 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 StringMap; typedef std::map > 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 extraHeaders, std::vector 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; -- cgit v1.2.3