2015-12-16 00:07:31 -05:00
|
|
|
# frozen_string_literal: false
|
2012-05-22 16:36:21 -04:00
|
|
|
# :stopdoc:
|
2017-05-19 12:06:18 -04:00
|
|
|
# https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
|
2012-05-22 16:36:21 -04:00
|
|
|
class Net::HTTPUnknownResponse < Net::HTTPResponse
|
|
|
|
HAS_BODY = true
|
|
|
|
EXCEPTION_TYPE = Net::HTTPError
|
|
|
|
end
|
|
|
|
class Net::HTTPInformation < Net::HTTPResponse # 1xx
|
|
|
|
HAS_BODY = false
|
|
|
|
EXCEPTION_TYPE = Net::HTTPError
|
|
|
|
end
|
|
|
|
class Net::HTTPSuccess < Net::HTTPResponse # 2xx
|
|
|
|
HAS_BODY = true
|
|
|
|
EXCEPTION_TYPE = Net::HTTPError
|
|
|
|
end
|
|
|
|
class Net::HTTPRedirection < Net::HTTPResponse # 3xx
|
|
|
|
HAS_BODY = true
|
|
|
|
EXCEPTION_TYPE = Net::HTTPRetriableError
|
|
|
|
end
|
|
|
|
class Net::HTTPClientError < Net::HTTPResponse # 4xx
|
|
|
|
HAS_BODY = true
|
|
|
|
EXCEPTION_TYPE = Net::HTTPServerException # for backward compatibility
|
|
|
|
end
|
|
|
|
class Net::HTTPServerError < Net::HTTPResponse # 5xx
|
|
|
|
HAS_BODY = true
|
|
|
|
EXCEPTION_TYPE = Net::HTTPFatalError # for backward compatibility
|
|
|
|
end
|
|
|
|
|
|
|
|
class Net::HTTPContinue < Net::HTTPInformation # 100
|
|
|
|
HAS_BODY = false
|
|
|
|
end
|
|
|
|
class Net::HTTPSwitchProtocol < Net::HTTPInformation # 101
|
|
|
|
HAS_BODY = false
|
|
|
|
end
|
2017-05-19 12:19:46 -04:00
|
|
|
class Net::HTTPProcessing < Net::HTTPInformation # 102
|
|
|
|
HAS_BODY = false
|
|
|
|
end
|
2012-05-22 16:36:21 -04:00
|
|
|
|
|
|
|
class Net::HTTPOK < Net::HTTPSuccess # 200
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPCreated < Net::HTTPSuccess # 201
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPAccepted < Net::HTTPSuccess # 202
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPNonAuthoritativeInformation < Net::HTTPSuccess # 203
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPNoContent < Net::HTTPSuccess # 204
|
|
|
|
HAS_BODY = false
|
|
|
|
end
|
|
|
|
class Net::HTTPResetContent < Net::HTTPSuccess # 205
|
|
|
|
HAS_BODY = false
|
|
|
|
end
|
|
|
|
class Net::HTTPPartialContent < Net::HTTPSuccess # 206
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-13 11:20:27 -04:00
|
|
|
class Net::HTTPMultiStatus < Net::HTTPSuccess # 207 - RFC 4918
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2017-05-19 12:19:46 -04:00
|
|
|
class Net::HTTPAlreadyReported < Net::HTTPSuccess # 208 - RFC 5842
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2013-12-08 12:11:46 -05:00
|
|
|
class Net::HTTPIMUsed < Net::HTTPSuccess # 226 - RFC 3229
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-05-22 16:36:21 -04:00
|
|
|
|
2012-06-13 11:20:27 -04:00
|
|
|
class Net::HTTPMultipleChoices < Net::HTTPRedirection # 300
|
2012-05-22 16:36:21 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-13 11:20:27 -04:00
|
|
|
Net::HTTPMultipleChoice = Net::HTTPMultipleChoices
|
2012-05-22 16:36:21 -04:00
|
|
|
class Net::HTTPMovedPermanently < Net::HTTPRedirection # 301
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPFound < Net::HTTPRedirection # 302
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
Net::HTTPMovedTemporarily = Net::HTTPFound
|
|
|
|
class Net::HTTPSeeOther < Net::HTTPRedirection # 303
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPNotModified < Net::HTTPRedirection # 304
|
|
|
|
HAS_BODY = false
|
|
|
|
end
|
|
|
|
class Net::HTTPUseProxy < Net::HTTPRedirection # 305
|
|
|
|
HAS_BODY = false
|
|
|
|
end
|
2012-06-13 11:20:27 -04:00
|
|
|
# 306 Switch Proxy - no longer unused
|
2012-05-22 16:36:21 -04:00
|
|
|
class Net::HTTPTemporaryRedirect < Net::HTTPRedirection # 307
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2014-06-12 05:32:36 -04:00
|
|
|
class Net::HTTPPermanentRedirect < Net::HTTPRedirection # 308
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-05-22 16:36:21 -04:00
|
|
|
|
|
|
|
class Net::HTTPBadRequest < Net::HTTPClientError # 400
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPUnauthorized < Net::HTTPClientError # 401
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPPaymentRequired < Net::HTTPClientError # 402
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPForbidden < Net::HTTPClientError # 403
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPNotFound < Net::HTTPClientError # 404
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPMethodNotAllowed < Net::HTTPClientError # 405
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPNotAcceptable < Net::HTTPClientError # 406
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPProxyAuthenticationRequired < Net::HTTPClientError # 407
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPRequestTimeOut < Net::HTTPClientError # 408
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPConflict < Net::HTTPClientError # 409
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPGone < Net::HTTPClientError # 410
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPLengthRequired < Net::HTTPClientError # 411
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPPreconditionFailed < Net::HTTPClientError # 412
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPRequestEntityTooLarge < Net::HTTPClientError # 413
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPRequestURITooLong < Net::HTTPClientError # 414
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
Net::HTTPRequestURITooLarge = Net::HTTPRequestURITooLong
|
|
|
|
class Net::HTTPUnsupportedMediaType < Net::HTTPClientError # 415
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPRequestedRangeNotSatisfiable < Net::HTTPClientError # 416
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPExpectationFailed < Net::HTTPClientError # 417
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-13 11:20:27 -04:00
|
|
|
# 418 I'm a teapot - RFC 2324; a joke RFC
|
|
|
|
# 420 Enhance Your Calm - Twitter
|
2017-05-19 12:19:46 -04:00
|
|
|
class Net::HTTPMisdirectedRequest < Net::HTTPClientError # 421 - RFC 7540
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-07-04 23:31:31 -04:00
|
|
|
class Net::HTTPUnprocessableEntity < Net::HTTPClientError # 422 - RFC 4918
|
2012-06-13 11:20:27 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-07-04 23:31:31 -04:00
|
|
|
class Net::HTTPLocked < Net::HTTPClientError # 423 - RFC 4918
|
2012-06-13 11:20:27 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-07-04 23:31:31 -04:00
|
|
|
class Net::HTTPFailedDependency < Net::HTTPClientError # 424 - RFC 4918
|
2012-06-13 11:20:27 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
# 425 Unordered Collection - existed only in draft
|
2012-07-04 23:31:31 -04:00
|
|
|
class Net::HTTPUpgradeRequired < Net::HTTPClientError # 426 - RFC 2817
|
2012-06-13 11:20:27 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-10 05:59:59 -04:00
|
|
|
class Net::HTTPPreconditionRequired < Net::HTTPClientError # 428 - RFC 6585
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPTooManyRequests < Net::HTTPClientError # 429 - RFC 6585
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPRequestHeaderFieldsTooLarge < Net::HTTPClientError # 431 - RFC 6585
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2017-05-19 12:06:18 -04:00
|
|
|
class Net::HTTPUnavailableForLegalReasons < Net::HTTPClientError # 451 - RFC 7725
|
2015-12-30 06:53:15 -05:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-13 11:20:27 -04:00
|
|
|
# 444 No Response - Nginx
|
|
|
|
# 449 Retry With - Microsoft
|
|
|
|
# 450 Blocked by Windows Parental Controls - Microsoft
|
|
|
|
# 499 Client Closed Request - Nginx
|
2012-05-22 16:36:21 -04:00
|
|
|
|
2012-06-08 18:40:14 -04:00
|
|
|
class Net::HTTPInternalServerError < Net::HTTPServerError # 500
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
|
|
|
class Net::HTTPNotImplemented < Net::HTTPServerError # 501
|
2012-05-22 16:36:21 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-08 18:40:14 -04:00
|
|
|
class Net::HTTPBadGateway < Net::HTTPServerError # 502
|
2012-05-22 16:36:21 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-08 18:40:14 -04:00
|
|
|
class Net::HTTPServiceUnavailable < Net::HTTPServerError # 503
|
2012-05-22 16:36:21 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-08 18:40:14 -04:00
|
|
|
class Net::HTTPGatewayTimeOut < Net::HTTPServerError # 504
|
2012-05-22 16:36:21 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-08 18:40:14 -04:00
|
|
|
class Net::HTTPVersionNotSupported < Net::HTTPServerError # 505
|
2012-05-22 16:36:21 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2017-05-19 12:19:46 -04:00
|
|
|
class Net::HTTPVariantAlsoNegotiates < Net::HTTPServerError # 506
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-13 11:20:27 -04:00
|
|
|
class Net::HTTPInsufficientStorage < Net::HTTPServerError # 507 - RFC 4918
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2017-05-19 12:19:46 -04:00
|
|
|
class Net::HTTPLoopDetected < Net::HTTPServerError # 508 - RFC 5842
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-13 11:20:27 -04:00
|
|
|
# 509 Bandwidth Limit Exceeded - Apache bw/limited extension
|
2017-05-19 12:19:46 -04:00
|
|
|
class Net::HTTPNotExtended < Net::HTTPServerError # 510 - RFC 2774
|
|
|
|
HAS_BODY = true
|
|
|
|
end
|
2012-06-10 05:59:59 -04:00
|
|
|
class Net::HTTPNetworkAuthenticationRequired < Net::HTTPServerError # 511 - RFC 6585
|
2012-05-22 16:36:21 -04:00
|
|
|
HAS_BODY = true
|
|
|
|
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,
|
2017-05-19 12:06:18 -04:00
|
|
|
'102' => Net::HTTPProcessing,
|
2012-05-22 16:36:21 -04:00
|
|
|
|
|
|
|
'200' => Net::HTTPOK,
|
|
|
|
'201' => Net::HTTPCreated,
|
|
|
|
'202' => Net::HTTPAccepted,
|
|
|
|
'203' => Net::HTTPNonAuthoritativeInformation,
|
|
|
|
'204' => Net::HTTPNoContent,
|
|
|
|
'205' => Net::HTTPResetContent,
|
|
|
|
'206' => Net::HTTPPartialContent,
|
2012-06-13 11:20:27 -04:00
|
|
|
'207' => Net::HTTPMultiStatus,
|
2017-05-19 12:06:18 -04:00
|
|
|
'208' => Net::HTTPAlreadyReported,
|
2013-12-08 12:11:46 -05:00
|
|
|
'226' => Net::HTTPIMUsed,
|
2012-05-22 16:36:21 -04:00
|
|
|
|
2012-06-13 11:20:27 -04:00
|
|
|
'300' => Net::HTTPMultipleChoices,
|
2012-05-22 16:36:21 -04:00
|
|
|
'301' => Net::HTTPMovedPermanently,
|
|
|
|
'302' => Net::HTTPFound,
|
|
|
|
'303' => Net::HTTPSeeOther,
|
|
|
|
'304' => Net::HTTPNotModified,
|
|
|
|
'305' => Net::HTTPUseProxy,
|
|
|
|
'307' => Net::HTTPTemporaryRedirect,
|
2015-07-08 21:19:01 -04:00
|
|
|
'308' => Net::HTTPPermanentRedirect,
|
2012-05-22 16:36:21 -04:00
|
|
|
|
|
|
|
'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::HTTPRequestEntityTooLarge,
|
|
|
|
'414' => Net::HTTPRequestURITooLong,
|
|
|
|
'415' => Net::HTTPUnsupportedMediaType,
|
|
|
|
'416' => Net::HTTPRequestedRangeNotSatisfiable,
|
|
|
|
'417' => Net::HTTPExpectationFailed,
|
2017-05-19 12:06:18 -04:00
|
|
|
'421' => Net::HTTPMisdirectedRequest,
|
2012-06-13 11:20:27 -04:00
|
|
|
'422' => Net::HTTPUnprocessableEntity,
|
|
|
|
'423' => Net::HTTPLocked,
|
|
|
|
'424' => Net::HTTPFailedDependency,
|
|
|
|
'426' => Net::HTTPUpgradeRequired,
|
2012-06-08 18:40:14 -04:00
|
|
|
'428' => Net::HTTPPreconditionRequired,
|
|
|
|
'429' => Net::HTTPTooManyRequests,
|
|
|
|
'431' => Net::HTTPRequestHeaderFieldsTooLarge,
|
2017-05-19 12:06:18 -04:00
|
|
|
'451' => Net::HTTPUnavailableForLegalReasons,
|
2012-05-22 16:36:21 -04:00
|
|
|
|
|
|
|
'500' => Net::HTTPInternalServerError,
|
|
|
|
'501' => Net::HTTPNotImplemented,
|
|
|
|
'502' => Net::HTTPBadGateway,
|
|
|
|
'503' => Net::HTTPServiceUnavailable,
|
|
|
|
'504' => Net::HTTPGatewayTimeOut,
|
2012-06-08 18:40:14 -04:00
|
|
|
'505' => Net::HTTPVersionNotSupported,
|
2017-05-19 12:06:18 -04:00
|
|
|
'506' => Net::HTTPVariantAlsoNegotiates,
|
2012-06-13 11:20:27 -04:00
|
|
|
'507' => Net::HTTPInsufficientStorage,
|
2017-05-19 12:06:18 -04:00
|
|
|
'508' => Net::HTTPLoopDetected,
|
|
|
|
'510' => Net::HTTPNotExtended,
|
2012-06-08 18:40:14 -04:00
|
|
|
'511' => Net::HTTPNetworkAuthenticationRequired,
|
2012-05-22 16:36:21 -04:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
# :startdoc:
|
|
|
|
|