# frozen_string_literal: true #-- # https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml module Net class HTTPUnknownResponse < HTTPResponse HAS_BODY = true EXCEPTION_TYPE = HTTPError # end # Parent class for informational (1xx) HTTP response classes. # # An informational response indicates that the request was received and understood. # # References: # # - {RFC 9110}[https://www.rfc-editor.org/rfc/rfc9110.html#status.1xx]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#1xx_informational_response]. # class HTTPInformation < HTTPResponse HAS_BODY = false EXCEPTION_TYPE = HTTPError # end # Parent class for success (2xx) HTTP response classes. # # A success response indicates the action requested by the client # was received, understood, and accepted. # # References: # # - {RFC 9110}[https://www.rfc-editor.org/rfc/rfc9110.html#status.2xx]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_success]. # class HTTPSuccess < HTTPResponse HAS_BODY = true EXCEPTION_TYPE = HTTPError # end # Parent class for redirection (3xx) HTTP response classes. # # A redirection response indicates the client must take additional action # to complete the request. # # References: # # - {RFC 9110}[https://www.rfc-editor.org/rfc/rfc9110.html#status.3xx]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_redirection]. # class HTTPRedirection < HTTPResponse HAS_BODY = true EXCEPTION_TYPE = HTTPRetriableError # end # Parent class for client error (4xx) HTTP response classes. # # A client error response indicates that the client may have caused an error. # # References: # # - {RFC 9110}[https://www.rfc-editor.org/rfc/rfc9110.html#status.4xx]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_client_errors]. # class HTTPClientError < HTTPResponse HAS_BODY = true EXCEPTION_TYPE = HTTPClientException # end # Parent class for server error (5xx) HTTP response classes. # # A server error response indicates that the server failed to fulfill a request. # # References: # # - {RFC 9110}[https://www.rfc-editor.org/rfc/rfc9110.html#status.5xx]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_server_errors]. # class HTTPServerError < HTTPResponse HAS_BODY = true EXCEPTION_TYPE = HTTPFatalError # end # Response class for +Continue+ responses (status code 100). # # A +Continue+ response indicates that the server has received the request headers. # # References: # # - {Mozilla}[https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100]. # - {RFC 9110}[https://www.rfc-editor.org/rfc/rfc9110.html#name-100-continue]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#100]. # class HTTPContinue < HTTPInformation HAS_BODY = false end # Response class for Switching Protocol responses (status code 101). # # The Switching Protocol response indicates that the server has received # a request to switch protocols, and has agreed to do so. # # References: # # - {Mozilla}[https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/101]. # - {RFC 9110}[https://www.rfc-editor.org/rfc/rfc9110.html#name-101-switching-protocols]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#101]. # class HTTPSwitchProtocol < HTTPInformation HAS_BODY = false end # Response class for +Processing+ responses (status code 102). # # The +Processing+ response indicates that the server has received # and is processing the request, but no response is available yet. # # References: # # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#102]. # class HTTPProcessing < HTTPInformation HAS_BODY = false end # Response class for Early Hints responses (status code 103). # # The Early Hints indicates that the server has received # and is processing the request, and contains certain headers; # the final response is not available yet. # # References: # # - {Mozilla}[https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/103]. # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#103]. # class HTTPEarlyHints < HTTPInformation HAS_BODY = false end # Response class for +OK+ responses (status code 200). # # The +OK+ response indicates that the server has received # a request and has responded successfully. # See {200 OK}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#200]. class HTTPOK < HTTPSuccess HAS_BODY = true end # Response class for +Created+ responses (status code 201). # # The +Created+ response indicates that the server has received # and has fulfilled a request to create a new resource. # See {201 Created}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#201]. class HTTPCreated < HTTPSuccess HAS_BODY = true end # Response class for +Accepted+ responses (status code 202). # # The +Accepted+ response indicates that the server has received # and is processing a request, but the processing has not yet been completed. # See {202 Accepted}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#202]. class HTTPAccepted < HTTPSuccess HAS_BODY = true end # Response class for Non-Authoritative Information responses (status code 203). # # The Non-Authoritative Information response indicates that the server # is a transforming proxy (such as a Web accelerator) # that received a 200 OK response from its origin, # and is returning a modified version of the origin's response. # See {203 Non-Authoritative Information}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#203]. class HTTPNonAuthoritativeInformation < HTTPSuccess HAS_BODY = true end # Response class for No Content responses (status code 204). # # The No Content response indicates that the server # successfully processed the request, and is not returning any content. # See {204 No Content}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#204]. class HTTPNoContent < HTTPSuccess HAS_BODY = false end # Response class for Reset Content responses (status code 205). # # The Reset Content response indicates that the server # successfully processed the request, # asks that the client reset its document view, and is not returning any content. # See {205 Reset Content}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#205]. class HTTPResetContent < HTTPSuccess HAS_BODY = false end # Response class for Partial Content responses (status code 206). # # The Partial Content response indicates that the server is delivering # only part of the resource (byte serving) # due to a Range header in the request. # See {206 Partial Content}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#206]. class HTTPPartialContent < HTTPSuccess HAS_BODY = true end # Response class for Multi-Status (WebDAV) responses (status code 207). # # The Multi-Status (WebDAV) response indicates that the server # has received the request, # and that the message body can contain a number of separate response codes. # See {207 Multi-Status (WebDAV)}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#207]. class HTTPMultiStatus < HTTPSuccess HAS_BODY = true end # Response class for Already Reported (WebDAV) responses (status code 208). # # The Already Reported (WebDAV) response indicates that the server # has received the request, # and that the members of a DAV binding have already been enumerated # in a preceding part of the (multi-status) response, # and are not being included again. # See {208 Already Reported (WebDAV)}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#208]. class HTTPAlreadyReported < HTTPSuccess HAS_BODY = true end # Response class for IM Used responses (status code 226). # # The IM Used response indicates that the server has fulfilled a request # for the resource, and the response is a representation of the result # of one or more instance-manipulations applied to the current instance. # See {226 IM Used}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#226]. class HTTPIMUsed < HTTPSuccess HAS_BODY = true end # Response class for Multiple Choices responses (status code 300). # # The Multiple Choices response indicates that the server # offers multiple options for the resource from which the client may choose. # See {300 Multiple Choices}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#300]. class HTTPMultipleChoices < HTTPRedirection HAS_BODY = true end HTTPMultipleChoice = HTTPMultipleChoices # Response class for Moved Permanently responses (status code 301). # # The Moved Permanently response indicates that links or records # returning this response should be updated to use the given URL. # See {301 Moved Permanently}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#301]. class HTTPMovedPermanently < HTTPRedirection HAS_BODY = true end # Response class for Found responses (status code 302). # # The Found response indicates that the client # should look at (browse to) another URL. # See {302 Found}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#302]. class HTTPFound < HTTPRedirection HAS_BODY = true end HTTPMovedTemporarily = HTTPFound # Response class for See Other responses (status code 303). # # The response to the request can be found under another URI using the GET method. # See {303 See Other}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#303]. class HTTPSeeOther < HTTPRedirection HAS_BODY = true end # Response class for Not Modified responses (status code 304). # # Indicates that the resource has not been modified since the version # specified by the request headers. # See {304 Not Modified}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#304]. class HTTPNotModified < HTTPRedirection HAS_BODY = false end # Response class for Use Proxy responses (status code 305). # # The requested resource is available only through a proxy, # whose address is provided in the response. # See {305 Use Proxy}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#305]. class HTTPUseProxy < HTTPRedirection HAS_BODY = false end # Response class for Temporary Redirect responses (status code 307). # # The request should be repeated with another URI; # however, future requests should still use the original URI. # See {307 Temporary Redirect}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#307]. class HTTPTemporaryRedirect < HTTPRedirection HAS_BODY = true end # Response class for Permanent Redirect responses (status code 308). # # This and all future requests should be directed to the given URI. # See {308 Permanent Redirect}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#308]. class HTTPPermanentRedirect < HTTPRedirection HAS_BODY = true end # Response class for Bad Request responses (status code 400). # # The server cannot or will not process the request due to an apparent client error. # See {400 Bad Request}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#400]. class HTTPBadRequest < HTTPClientError HAS_BODY = true end # Response class for Unauthorized responses (status code 401). # # Authentication is required, but either was not provided or failed. # See {401 Unauthorized}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#401]. class HTTPUnauthorized < HTTPClientError HAS_BODY = true end # Response class for Payment Required responses (status code 402). # # Reserved for future use. # See {402 Payment Required}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#402]. class HTTPPaymentRequired < HTTPClientError HAS_BODY = true end # Response class for Forbidden responses (status code 403). # # The request contained valid data and was understood by the server, # but the server is refusing action. # See {403 Forbidden}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#403]. class HTTPForbidden < HTTPClientError HAS_BODY = true end # Response class for Not Found responses (status code 404). # # The requested resource could not be found but may be available in the future. # See {404 Not Found}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#404]. class HTTPNotFound < HTTPClientError HAS_BODY = true end # Response class for Method Not Allowed responses (status code 405). # # The request method is not supported for the requested resource. # See {405 Method Not Allowed}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#405]. class HTTPMethodNotAllowed < HTTPClientError HAS_BODY = true end # Response class for Not Acceptable responses (status code 406). # # The requested resource is capable of generating only content # that not acceptable according to the Accept headers sent in the request. # See {406 Not Acceptable}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#406]. class HTTPNotAcceptable < HTTPClientError HAS_BODY = true end # Response class for Proxy Authentication Required responses (status code 407). # # The client must first authenticate itself with the proxy. # See {407 Proxy Authentication Required}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#407]. class HTTPProxyAuthenticationRequired < HTTPClientError HAS_BODY = true end # Response class for Request Timeout responses (status code 408). # # The server timed out waiting for the request. # See {408 Request Timeout}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#408]. class HTTPRequestTimeout < HTTPClientError HAS_BODY = true end HTTPRequestTimeOut = HTTPRequestTimeout # Response class for Conflict responses (status code 409). # # The request could not be processed because of conflict in the current state of the resource. # See {409 Conflict}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#409]. class HTTPConflict < HTTPClientError HAS_BODY = true end # Response class for Gone responses (status code 410). # # The resource requested was previously in use but is no longer available # and will not be available again. # See {410 Gone}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#410]. class HTTPGone < HTTPClientError HAS_BODY = true end # Response class for Length Required responses (status code 411). # # The request did not specify the length of its content, # which is required by the requested resource. # See {411 Length Required}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#411]. class HTTPLengthRequired < HTTPClientError HAS_BODY = true end # Response class for Precondition Failed responses (status code 412). # # The server does not meet one of the preconditions # specified in the request headers. # See {412 Precondition Failed}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#412]. class HTTPPreconditionFailed < HTTPClientError HAS_BODY = true end # Response class for Payload Too Large responses (status code 413). # # The request is larger than the server is willing or able to process. # See {413 Payload Too Large}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#413]. class HTTPPayloadTooLarge < HTTPClientError HAS_BODY = true end HTTPRequestEntityTooLarge = HTTPPayloadTooLarge # Response class for URI Too Long responses (status code 414). # # The URI provided was too long for the server to process. # See {414 URI Too Long}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#414]. class HTTPURITooLong < HTTPClientError HAS_BODY = true end HTTPRequestURITooLong = HTTPURITooLong HTTPRequestURITooLarge = HTTPRequestURITooLong # Response class for Unsupported Media Type responses (status code 415). # # The request entity has a media type which the server or resource does not support. # See {415 Unsupported Media Type}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#415]. class HTTPUnsupportedMediaType < HTTPClientError HAS_BODY = true end # Response class for Range Not Satisfiable responses (status code 416). # # The request entity has a media type which the server or resource does not support. # See {416 Range Not Satisfiable}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#416]. class HTTPRangeNotSatisfiable < HTTPClientError HAS_BODY = true end HTTPRequestedRangeNotSatisfiable = HTTPRangeNotSatisfiable # Response class for Expectation Failed responses (status code 417). # # The server cannot meet the requirements of the Expect request-header field. # See {417 Expectation Failed}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#417]. class HTTPExpectationFailed < HTTPClientError HAS_BODY = true end # 418 I'm a teapot - RFC 2324; a joke RFC # See https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#418. # 420 Enhance Your Calm - Twitter # Response class for Misdirected Request responses (status code 421). # # The request was directed at a server that is not able to produce a response. # See {421 Misdirected Request}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#421]. class HTTPMisdirectedRequest < HTTPClientError HAS_BODY = true end # Response class for Unprocessable Entity responses (status code 422). # # The request was well-formed but had semantic errors. # See {422 Unprocessable Entity}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#422]. class HTTPUnprocessableEntity < HTTPClientError HAS_BODY = true end # Response class for Locked (WebDAV) responses (status code 423). # # The requested resource is locked. # See {423 Locked (WebDAV)}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#423]. class HTTPLocked < HTTPClientError HAS_BODY = true end # Response class for Failed Dependency (WebDAV) responses (status code 424). # # The request failed because it depended on another request and that request failed. # See {424 Failed Dependency (WebDAV)}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#424]. class HTTPFailedDependency < HTTPClientError HAS_BODY = true end # 425 Too Early # https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#425. # Response class for Upgrade Required responses (status code 426). # # The client should switch to the protocol given in the Upgrade header field. # See {426 Upgrade Required}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#426]. class HTTPUpgradeRequired < HTTPClientError HAS_BODY = true end # Response class for Precondition Required responses (status code 428). # # The origin server requires the request to be conditional. # See {428 Precondition Required}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#428]. class HTTPPreconditionRequired < HTTPClientError HAS_BODY = true end # Response class for Too Many Requests responses (status code 429). # # The user has sent too many requests in a given amount of time. # See {429 Too Many Requests}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429]. class HTTPTooManyRequests < HTTPClientError HAS_BODY = true end # Response class for Request Header Fields Too Large responses (status code 431). # # An individual header field is too large, # or all the header fields collectively, are too large. # See {431 Request Header Fields Too Large}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#431]. class HTTPRequestHeaderFieldsTooLarge < HTTPClientError HAS_BODY = true end # Response class for Unavailable For Legal Reasons responses (status code 451). # # A server operator has received a legal demand to deny access to a resource or to a set of resources # that includes the requested resource. # See {451 Unavailable For Legal Reasons}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#451]. class HTTPUnavailableForLegalReasons < HTTPClientError HAS_BODY = true end # 444 No Response - Nginx # 449 Retry With - Microsoft # 450 Blocked by Windows Parental Controls - Microsoft # 499 Client Closed Request - Nginx # Response class for Internal Server Error responses (status code 500). # # An unexpected condition was encountered and no more specific message is suitable. # See {500 Internal Server Error}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#500]. class HTTPInternalServerError < HTTPServerError HAS_BODY = true end # Response class for Not Implemented responses (status code 501). # # The server either does not recognize the request method, # or it lacks the ability to fulfil the request. # See {501 Not Implemented}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#501]. class HTTPNotImplemented < HTTPServerError HAS_BODY = true end # Response class for Bad Gateway responses (status code 502). # # The server was acting as a gateway or proxy # and received an invalid response from the upstream server. # See {502 Bad Gateway}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#502]. class HTTPBadGateway < HTTPServerError HAS_BODY = true end # Response class for Service Unavailable responses (status code 503). # # The server cannot handle the request # (because it is overloaded or down for maintenance). # See {503 Service Unavailable}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#503]. class HTTPServiceUnavailable < HTTPServerError HAS_BODY = true end # Response class for Gateway Timeout responses (status code 504). # # The server was acting as a gateway or proxy # and did not receive a timely response from the upstream server. # See {504 Gateway Timeout}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#504]. class HTTPGatewayTimeout < HTTPServerError HAS_BODY = true end HTTPGatewayTimeOut = HTTPGatewayTimeout # Response class for HTTP Version Not Supported responses (status code 505). # # The server does not support the HTTP version used in the request. # See {505 HTTP Version Not Supported}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#505]. class HTTPVersionNotSupported < HTTPServerError HAS_BODY = true end # Response class for Variant Also Negotiates responses (status code 506). # # Transparent content negotiation for the request results in a circular reference. # See {506 Variant Also Negotiates}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#506]. class HTTPVariantAlsoNegotiates < HTTPServerError HAS_BODY = true end # Response class for Insufficient Storage (WebDAV) responses (status code 507). # # The server is unable to store the representation needed to complete the request. # See {507 Insufficient Storage (WebDAV)}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#507]. class HTTPInsufficientStorage < HTTPServerError HAS_BODY = true end # Response class for Loop Detected (WebDAV) responses (status code 508). # # The server detected an infinite loop while processing the request. # See {508 Loop Detected (WebDAV)}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#508]. class HTTPLoopDetected < HTTPServerError HAS_BODY = true end # 509 Bandwidth Limit Exceeded - Apache bw/limited extension # Response class for Not Extended responses (status code 510). # # Further extensions to the request are required for the server to fulfill it. # See {510 Not Extended}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#510]. class HTTPNotExtended < HTTPServerError HAS_BODY = true end # Response class for Network Authentication Required responses (status code 511). # # The client needs to authenticate to gain network access. # See {511 Network Authentication Required}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#511]. class HTTPNetworkAuthenticationRequired < HTTPServerError HAS_BODY = true end end class Net::HTTPResponse CODE_CLASS_TO_OBJ = { '1' => Net::HTTPInformation, '2' => Net::HTTPSuccess, '3' => Net::HTTPRedirection, '4' => Net::HTTPClientError, '5' => Net::HTTPServerError } CODE_TO_OBJ = { '100' => Net::HTTPContinue, '101' => Net::HTTPSwitchProtocol, '102' => Net::HTTPProcessing, '103' => Net::HTTPEarlyHints, '200' => Net::HTTPOK, '201' => Net::HTTPCreated, '202' => Net::HTTPAccepted, '203' => Net::HTTPNonAuthoritativeInformation, '204' => Net::HTTPNoContent, '205' => Net::HTTPResetContent, '206' => Net::HTTPPartialContent, '207' => Net::HTTPMultiStatus, '208' => Net::HTTPAlreadyReported, '226' => Net::HTTPIMUsed, '300' => Net::HTTPMultipleChoices, '301' => Net::HTTPMovedPermanently, '302' => Net::HTTPFound, '303' => Net::HTTPSeeOther, '304' => Net::HTTPNotModified, '305' => Net::HTTPUseProxy, '307' => Net::HTTPTemporaryRedirect, '308' => Net::HTTPPermanentRedirect, '400' => Net::HTTPBadRequest, '401' => Net::HTTPUnauthorized, '402' => Net::HTTPPaymentRequired, '403' => Net::HTTPForbidden, '404' => Net::HTTPNotFound, '405' => Net::HTTPMethodNotAllowed, '406' => Net::HTTPNotAcceptable, '407' => Net::HTTPProxyAuthenticationRequired, '408' => Net::HTTPRequestTimeout, '409' => Net::HTTPConflict, '410' => Net::HTTPGone, '411' => Net::HTTPLengthRequired, '412' => Net::HTTPPreconditionFailed, '413' => Net::HTTPPayloadTooLarge, '414' => Net::HTTPURITooLong, '415' => Net::HTTPUnsupportedMediaType, '416' => Net::HTTPRangeNotSatisfiable, '417' => Net::HTTPExpectationFailed, '421' => Net::HTTPMisdirectedRequest, '422' => Net::HTTPUnprocessableEntity, '423' => Net::HTTPLocked, '424' => Net::HTTPFailedDependency, '426' => Net::HTTPUpgradeRequired, '428' => Net::HTTPPreconditionRequired, '429' => Net::HTTPTooManyRequests, '431' => Net::HTTPRequestHeaderFieldsTooLarge, '451' => Net::HTTPUnavailableForLegalReasons, '500' => Net::HTTPInternalServerError, '501' => Net::HTTPNotImplemented, '502' => Net::HTTPBadGateway, '503' => Net::HTTPServiceUnavailable, '504' => Net::HTTPGatewayTimeout, '505' => Net::HTTPVersionNotSupported, '506' => Net::HTTPVariantAlsoNegotiates, '507' => Net::HTTPInsufficientStorage, '508' => Net::HTTPLoopDetected, '510' => Net::HTTPNotExtended, '511' => Net::HTTPNetworkAuthenticationRequired, } end