barrier/lib/http/XHTTP.cpp

121 lines
2.2 KiB
C++
Raw Normal View History

#include "XHTTP.h"
#include "CHTTPProtocol.h"
#include "stdsstream.h"
//
// XHTTP
//
2002-06-17 13:31:21 +00:00
XHTTP::XHTTP(SInt32 statusCode) :
XBase(),
m_status(statusCode),
m_reason(getReason(statusCode))
{
// do nothing
}
2002-06-17 13:31:21 +00:00
XHTTP::XHTTP(SInt32 statusCode, const CString& reasonPhrase) :
XBase(),
m_status(statusCode),
m_reason(reasonPhrase)
{
// do nothing
}
XHTTP::~XHTTP()
{
// do nothing
}
SInt32
XHTTP::getStatus() const
{
return m_status;
}
CString
XHTTP::getReason() const
{
return m_reason;
}
void
2002-06-17 13:31:21 +00:00
XHTTP::addHeaders(CHTTPReply&) const
{
// do nothing
}
CString
XHTTP::getWhat() const throw()
{
const char* reason;
if (m_reason.empty()) {
reason = getReason(m_status);
}
else {
reason = m_reason.c_str();
}
return format("XHTTP", "%{1} %{2}",
CStringUtil::print("%d", m_status).c_str(),
reason);
}
const char*
2002-06-17 13:31:21 +00:00
XHTTP::getReason(SInt32 status)
{
switch (status) {
case 300: return "Multiple Choices";
case 301: return "Moved Permanently";
case 302: return "Moved Temporarily";
case 303: return "See Other";
case 304: return "Not Modified";
case 305: return "Use Proxy";
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 Time-out";
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 Large";
case 415: return "Unsupported Media Type";
case 500: return "Internal Server Error";
case 501: return "Not Implemented";
case 502: return "Bad Gateway";
case 503: return "Service Unavailable";
case 504: return "Gateway Time-out";
case 505: return "HTTP Version not supported";
default: return "";
}
}
//
// XHTTPAllow
//
XHTTPAllow::XHTTPAllow(const CString& allowedMethods) :
XHTTP(405),
m_allowed(allowedMethods)
{
// do nothing
}
XHTTPAllow::~XHTTPAllow()
{
// do nothing
}
void
2002-06-17 13:31:21 +00:00
XHTTPAllow::addHeaders(CHTTPReply& reply) const
{
reply.m_headers.push_back(std::make_pair(CString("Allow"), m_allowed));
}