#include "ace/INet/HTTP_Status.h" #include "ace/INet/HeaderBase.h" #include "ace/OS_NS_stdlib.h" #if !defined (__ACE_INLINE__) #include "ace/INet/HTTP_Status.inl" #endif ACE_BEGIN_VERSIONED_NAMESPACE_DECL namespace ACE { namespace HTTP { const ACE_CString Status::HTTP_REASON_CONTINUE = "Continue"; const ACE_CString Status::HTTP_REASON_SWITCHING_PROTOCOLS = "Switching Protocols"; const ACE_CString Status::HTTP_REASON_OK = "OK"; const ACE_CString Status::HTTP_REASON_CREATED = "Created"; const ACE_CString Status::HTTP_REASON_ACCEPTED = "Accepted"; const ACE_CString Status::HTTP_REASON_NONAUTHORITATIVE = "Non-Authoritative Information"; const ACE_CString Status::HTTP_REASON_NO_CONTENT = "No Content"; const ACE_CString Status::HTTP_REASON_RESET_CONTENT = "Reset Content"; const ACE_CString Status::HTTP_REASON_PARTIAL_CONTENT = "Partial Content"; const ACE_CString Status::HTTP_REASON_MULTIPLE_CHOICES = "Multiple Choices"; const ACE_CString Status::HTTP_REASON_MOVED_PERMANENTLY = "Moved Permanently"; const ACE_CString Status::HTTP_REASON_FOUND = "Found"; const ACE_CString Status::HTTP_REASON_SEE_OTHER = "See Other"; const ACE_CString Status::HTTP_REASON_NOT_MODIFIED = "Not Modified"; const ACE_CString Status::HTTP_REASON_USEPROXY = "Use Proxy"; const ACE_CString Status::HTTP_REASON_TEMPORARY_REDIRECT = "Temporary Redirect"; const ACE_CString Status::HTTP_REASON_BAD_REQUEST = "Bad Request"; const ACE_CString Status::HTTP_REASON_UNAUTHORIZED = "Unauthorized"; const ACE_CString Status::HTTP_REASON_PAYMENT_REQUIRED = "Payment Required"; const ACE_CString Status::HTTP_REASON_FORBIDDEN = "Forbidden"; const ACE_CString Status::HTTP_REASON_NOT_FOUND = "Not Found"; const ACE_CString Status::HTTP_REASON_METHOD_NOT_ALLOWED = "Method Not Allowed"; const ACE_CString Status::HTTP_REASON_NOT_ACCEPTABLE = "Not Acceptable"; const ACE_CString Status::HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED = "Proxy Authentication Required"; const ACE_CString Status::HTTP_REASON_REQUEST_TIMEOUT = "Request Time-out"; const ACE_CString Status::HTTP_REASON_CONFLICT = "Conflict"; const ACE_CString Status::HTTP_REASON_GONE = "Gone"; const ACE_CString Status::HTTP_REASON_LENGTH_REQUIRED = "Length Required"; const ACE_CString Status::HTTP_REASON_PRECONDITION_FAILED = "Precondition Failed"; const ACE_CString Status::HTTP_REASON_REQUESTENTITYTOOLARGE = "Request Entity Too Large"; const ACE_CString Status::HTTP_REASON_REQUESTURITOOLONG = "Request-URI Too Large"; const ACE_CString Status::HTTP_REASON_UNSUPPORTEDMEDIATYPE = "Unsupported Media Type"; const ACE_CString Status::HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE = "Requested Range Not Satisfiable"; const ACE_CString Status::HTTP_REASON_EXPECTATION_FAILED = "Expectation Failed"; const ACE_CString Status::HTTP_REASON_INTERNAL_SERVER_ERROR = "Internal Server Error"; const ACE_CString Status::HTTP_REASON_NOT_IMPLEMENTED = "Not Implemented"; const ACE_CString Status::HTTP_REASON_BAD_GATEWAY = "Bad Gateway"; const ACE_CString Status::HTTP_REASON_SERVICE_UNAVAILABLE = "Service Unavailable"; const ACE_CString Status::HTTP_REASON_GATEWAY_TIMEOUT = "Gateway Time-out"; const ACE_CString Status::HTTP_REASON_VERSION_NOT_SUPPORTED = "HTTP Version not supported"; const ACE_CString Status::HTTP_REASON_UNKNOWN = "???"; Status::Status() : code_ (HTTP_NONE) { } Status::Status(Code status) : code_ (status) { reason_ = get_reason(this->code_); } Status::Status(Code status, const ACE_CString& reason) : code_ (status), reason_ (reason) { } Status::Status(const Status& status) { *this = status; } Status& Status::operator =(const Status& status) { this->code_ = status.get_status (); this->reason_ = status.get_reason (); return *this; } void Status::set_status(const ACE_CString& status) { Code istat = (Code)ACE_OS::atoi (status.c_str ()); if (istat == HTTP_NONE || get_reason (istat) == HTTP_REASON_UNKNOWN) { this->code_ = INVALID; } else { this->code_ = istat; } } const ACE_CString& Status::get_reason(Code status) { switch (status) { case HTTP_NONE: return ACE::INet::HeaderBase::EMPTY; case HTTP_CONTINUE: return HTTP_REASON_CONTINUE; case HTTP_SWITCHING_PROTOCOLS: return HTTP_REASON_SWITCHING_PROTOCOLS; case HTTP_OK: return HTTP_REASON_OK; case HTTP_CREATED: return HTTP_REASON_CREATED; case HTTP_ACCEPTED: return HTTP_REASON_ACCEPTED; case HTTP_NONAUTHORITATIVE: return HTTP_REASON_NONAUTHORITATIVE; case HTTP_NO_CONTENT: return HTTP_REASON_NO_CONTENT; case HTTP_RESET_CONTENT: return HTTP_REASON_RESET_CONTENT; case HTTP_PARTIAL_CONTENT: return HTTP_REASON_PARTIAL_CONTENT; case HTTP_MULTIPLE_CHOICES: return HTTP_REASON_MULTIPLE_CHOICES; case HTTP_MOVED_PERMANENTLY: return HTTP_REASON_MOVED_PERMANENTLY; case HTTP_FOUND: return HTTP_REASON_FOUND; case HTTP_SEE_OTHER: return HTTP_REASON_SEE_OTHER; case HTTP_NOT_MODIFIED: return HTTP_REASON_NOT_MODIFIED; case HTTP_USEPROXY: return HTTP_REASON_USEPROXY; case HTTP_TEMPORARY_REDIRECT: return HTTP_REASON_TEMPORARY_REDIRECT; case HTTP_BAD_REQUEST: return HTTP_REASON_BAD_REQUEST; case HTTP_UNAUTHORIZED: return HTTP_REASON_UNAUTHORIZED; case HTTP_PAYMENT_REQUIRED: return HTTP_REASON_PAYMENT_REQUIRED; case HTTP_FORBIDDEN: return HTTP_REASON_FORBIDDEN; case HTTP_NOT_FOUND: return HTTP_REASON_NOT_FOUND; case HTTP_METHOD_NOT_ALLOWED: return HTTP_REASON_METHOD_NOT_ALLOWED; case HTTP_NOT_ACCEPTABLE: return HTTP_REASON_NOT_ACCEPTABLE; case HTTP_PROXY_AUTHENTICATION_REQUIRED: return HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED; case HTTP_REQUEST_TIMEOUT: return HTTP_REASON_REQUEST_TIMEOUT; case HTTP_CONFLICT: return HTTP_REASON_CONFLICT; case HTTP_GONE: return HTTP_REASON_GONE; case HTTP_LENGTH_REQUIRED: return HTTP_REASON_LENGTH_REQUIRED; case HTTP_PRECONDITION_FAILED: return HTTP_REASON_PRECONDITION_FAILED; case HTTP_REQUESTENTITYTOOLARGE: return HTTP_REASON_REQUESTENTITYTOOLARGE; case HTTP_REQUESTURITOOLONG: return HTTP_REASON_REQUESTURITOOLONG; case HTTP_UNSUPPORTEDMEDIATYPE: return HTTP_REASON_UNSUPPORTEDMEDIATYPE; case HTTP_REQUESTED_RANGE_NOT_SATISFIABLE: return HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE; case HTTP_EXPECTATION_FAILED: return HTTP_REASON_EXPECTATION_FAILED; case HTTP_INTERNAL_SERVER_ERROR: return HTTP_REASON_INTERNAL_SERVER_ERROR; case HTTP_NOT_IMPLEMENTED: return HTTP_REASON_NOT_IMPLEMENTED; case HTTP_BAD_GATEWAY: return HTTP_REASON_BAD_GATEWAY; case HTTP_SERVICE_UNAVAILABLE: return HTTP_REASON_SERVICE_UNAVAILABLE; case HTTP_GATEWAY_TIMEOUT: return HTTP_REASON_GATEWAY_TIMEOUT; case HTTP_VERSION_NOT_SUPPORTED: return HTTP_REASON_VERSION_NOT_SUPPORTED; default: return HTTP_REASON_UNKNOWN; } } } } ACE_END_VERSIONED_NAMESPACE_DECL