File indexing completed on 2025-12-16 09:44:01
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef BOOST_BEAST_HTTP_IMPL_STATUS_IPP
0011 #define BOOST_BEAST_HTTP_IMPL_STATUS_IPP
0012
0013 #include <boost/beast/http/status.hpp>
0014 #include <boost/throw_exception.hpp>
0015
0016 namespace boost {
0017 namespace beast {
0018 namespace http {
0019
0020 status
0021 int_to_status(unsigned v)
0022 {
0023 switch(static_cast<status>(v))
0024 {
0025
0026 case status::continue_:
0027 case status::switching_protocols:
0028 case status::processing:
0029 case status::early_hints:
0030 BOOST_FALLTHROUGH;
0031
0032
0033 case status::ok:
0034 case status::created:
0035 case status::accepted:
0036 case status::non_authoritative_information:
0037 case status::no_content:
0038 case status::reset_content:
0039 case status::partial_content:
0040 case status::multi_status:
0041 case status::already_reported:
0042 case status::im_used:
0043 BOOST_FALLTHROUGH;
0044
0045
0046 case status::multiple_choices:
0047 case status::moved_permanently:
0048 case status::found:
0049 case status::see_other:
0050 case status::not_modified:
0051 case status::use_proxy:
0052 case status::temporary_redirect:
0053 case status::permanent_redirect:
0054 BOOST_FALLTHROUGH;
0055
0056
0057 case status::bad_request:
0058 case status::unauthorized:
0059 case status::payment_required:
0060 case status::forbidden:
0061 case status::not_found:
0062 case status::method_not_allowed:
0063 case status::not_acceptable:
0064 case status::proxy_authentication_required:
0065 case status::request_timeout:
0066 case status::conflict:
0067 case status::gone:
0068 case status::length_required:
0069 case status::precondition_failed:
0070 case status::payload_too_large:
0071 case status::uri_too_long:
0072 case status::unsupported_media_type:
0073 case status::range_not_satisfiable:
0074 case status::expectation_failed:
0075 case status::i_am_a_teapot:
0076 case status::misdirected_request:
0077 case status::unprocessable_entity:
0078 case status::locked:
0079 case status::failed_dependency:
0080 case status::too_early:
0081 case status::upgrade_required:
0082 case status::precondition_required:
0083 case status::too_many_requests:
0084 case status::request_header_fields_too_large:
0085 case status::unavailable_for_legal_reasons:
0086 BOOST_FALLTHROUGH;
0087
0088
0089 case status::internal_server_error:
0090 case status::not_implemented:
0091 case status::bad_gateway:
0092 case status::service_unavailable:
0093 case status::gateway_timeout:
0094 case status::http_version_not_supported:
0095 case status::variant_also_negotiates:
0096 case status::insufficient_storage:
0097 case status::loop_detected:
0098 case status::not_extended:
0099 case status::network_authentication_required:
0100 return static_cast<status>(v);
0101
0102 default:
0103 break;
0104 }
0105 return status::unknown;
0106 }
0107
0108 status_class
0109 to_status_class(unsigned v)
0110 {
0111 switch(v / 100)
0112 {
0113 case 1: return status_class::informational;
0114 case 2: return status_class::successful;
0115 case 3: return status_class::redirection;
0116 case 4: return status_class::client_error;
0117 case 5: return status_class::server_error;
0118 default:
0119 break;
0120 }
0121 return status_class::unknown;
0122 }
0123
0124 status_class
0125 to_status_class(status v)
0126 {
0127 return to_status_class(static_cast<int>(v));
0128 }
0129
0130 string_view
0131 obsolete_reason(status v)
0132 {
0133 switch(static_cast<status>(v))
0134 {
0135
0136 case status::continue_: return "Continue";
0137 case status::switching_protocols: return "Switching Protocols";
0138 case status::processing: return "Processing";
0139 case status::early_hints: return "Early Hints";
0140
0141
0142 case status::ok: return "OK";
0143 case status::created: return "Created";
0144 case status::accepted: return "Accepted";
0145 case status::non_authoritative_information: return "Non-Authoritative Information";
0146 case status::no_content: return "No Content";
0147 case status::reset_content: return "Reset Content";
0148 case status::partial_content: return "Partial Content";
0149 case status::multi_status: return "Multi-Status";
0150 case status::already_reported: return "Already Reported";
0151 case status::im_used: return "IM Used";
0152
0153
0154 case status::multiple_choices: return "Multiple Choices";
0155 case status::moved_permanently: return "Moved Permanently";
0156 case status::found: return "Found";
0157 case status::see_other: return "See Other";
0158 case status::not_modified: return "Not Modified";
0159 case status::use_proxy: return "Use Proxy";
0160 case status::temporary_redirect: return "Temporary Redirect";
0161 case status::permanent_redirect: return "Permanent Redirect";
0162
0163
0164 case status::bad_request: return "Bad Request";
0165 case status::unauthorized: return "Unauthorized";
0166 case status::payment_required: return "Payment Required";
0167 case status::forbidden: return "Forbidden";
0168 case status::not_found: return "Not Found";
0169 case status::method_not_allowed: return "Method Not Allowed";
0170 case status::not_acceptable: return "Not Acceptable";
0171 case status::proxy_authentication_required: return "Proxy Authentication Required";
0172 case status::request_timeout: return "Request Timeout";
0173 case status::conflict: return "Conflict";
0174 case status::gone: return "Gone";
0175 case status::length_required: return "Length Required";
0176 case status::precondition_failed: return "Precondition Failed";
0177 case status::payload_too_large: return "Payload Too Large";
0178 case status::uri_too_long: return "URI Too Long";
0179 case status::unsupported_media_type: return "Unsupported Media Type";
0180 case status::range_not_satisfiable: return "Range Not Satisfiable";
0181 case status::expectation_failed: return "Expectation Failed";
0182 case status::i_am_a_teapot: return "I'm a teapot";
0183 case status::misdirected_request: return "Misdirected Request";
0184 case status::unprocessable_entity: return "Unprocessable Entity";
0185 case status::locked: return "Locked";
0186 case status::failed_dependency: return "Failed Dependency";
0187 case status::too_early: return "Too Early";
0188 case status::upgrade_required: return "Upgrade Required";
0189 case status::precondition_required: return "Precondition Required";
0190 case status::too_many_requests: return "Too Many Requests";
0191 case status::request_header_fields_too_large: return "Request Header Fields Too Large";
0192 case status::unavailable_for_legal_reasons: return "Unavailable For Legal Reasons";
0193
0194 case status::internal_server_error: return "Internal Server Error";
0195 case status::not_implemented: return "Not Implemented";
0196 case status::bad_gateway: return "Bad Gateway";
0197 case status::service_unavailable: return "Service Unavailable";
0198 case status::gateway_timeout: return "Gateway Timeout";
0199 case status::http_version_not_supported: return "HTTP Version Not Supported";
0200 case status::variant_also_negotiates: return "Variant Also Negotiates";
0201 case status::insufficient_storage: return "Insufficient Storage";
0202 case status::loop_detected: return "Loop Detected";
0203 case status::not_extended: return "Not Extended";
0204 case status::network_authentication_required: return "Network Authentication Required";
0205
0206 default:
0207 break;
0208 }
0209 return "<unknown-status>";
0210 }
0211
0212 std::ostream&
0213 operator<<(std::ostream& os, status v)
0214 {
0215 return os << obsolete_reason(v);
0216 }
0217
0218 }
0219 }
0220 }
0221
0222 #endif