Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:44:01

0001 //
0002 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
0003 //
0004 // Distributed under the Boost Software License, Version 1.0. (See accompanying
0005 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 //
0007 // Official repository: https://github.com/boostorg/beast
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     // 1xx
0026     case status::continue_:
0027     case status::switching_protocols:
0028     case status::processing:
0029     case status::early_hints:
0030         BOOST_FALLTHROUGH;
0031 
0032     // 2xx
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     // 3xx
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     // 4xx
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     // 5xx
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     // 1xx
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     // 2xx
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     // 3xx
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     // 4xx
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     // 5xx
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 } // http
0219 } // beast
0220 } // boost
0221 
0222 #endif