module WEBrick
#
# This module is used to manager HTTP status codes.
#
# See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for more
# information.
module HTTPStatus
#
# Root of the HTTP status class hierarchy
class Status < StandardError
attr_reader self.code: Integer
attr_reader self.reason_phrase: String
# Returns the HTTP status code
def code: () -> Integer
# Returns the HTTP status description
def reason_phrase: () -> String
alias to_i code
end
# Root of the HTTP info statuses
class Info < Status
end
# Root of the HTTP success statuses
class Success < Status
end
# Root of the HTTP redirect statuses
class Redirect < Status
end
# Root of the HTTP error statuses
class Error < Status
end
# Root of the HTTP client error statuses
class ClientError < Error
end
# Root of the HTTP server error statuses
class ServerError < Error
end
class EOFError < StandardError
end
# HTTP status codes and descriptions
StatusMessage: Hash[Integer, String]
# Maps a status code to the corresponding Status class
CodeToError: Hash[Integer, singleton(Status)]
# WEBrick::HTTPStatus::constants.grep(/\ARC_/).map{"#{_1}: #{WEBrick::HTTPStatus.const_get(_1)}"}
RC_CONTINUE: 100
RC_SWITCHING_PROTOCOLS: 101
RC_OK: 200
RC_CREATED: 201
RC_ACCEPTED: 202
RC_NON_AUTHORITATIVE_INFORMATION: 203
RC_NO_CONTENT: 204
RC_RESET_CONTENT: 205
RC_PARTIAL_CONTENT: 206
RC_MULTI_STATUS: 207
RC_MULTIPLE_CHOICES: 300
RC_MOVED_PERMANENTLY: 301
RC_FOUND: 302
RC_SEE_OTHER: 303
RC_NOT_MODIFIED: 304
RC_USE_PROXY: 305
RC_TEMPORARY_REDIRECT: 307
RC_BAD_REQUEST: 400
RC_UNAUTHORIZED: 401
RC_PAYMENT_REQUIRED: 402
RC_FORBIDDEN: 403
RC_NOT_FOUND: 404
RC_METHOD_NOT_ALLOWED: 405
RC_NOT_ACCEPTABLE: 406
RC_PROXY_AUTHENTICATION_REQUIRED: 407
RC_REQUEST_TIMEOUT: 408
RC_CONFLICT: 409
RC_GONE: 410
RC_PRECONDITION_FAILED: 412
RC_LENGTH_REQUIRED: 411
RC_REQUEST_ENTITY_TOO_LARGE: 413
RC_REQUEST_URI_TOO_LARGE: 414
RC_UNSUPPORTED_MEDIA_TYPE: 415
RC_EXPECTATION_FAILED: 417
RC_UNPROCESSABLE_ENTITY: 422
RC_LOCKED: 423
RC_FAILED_DEPENDENCY: 424
RC_REQUEST_RANGE_NOT_SATISFIABLE: 416
RC_UPGRADE_REQUIRED: 426
RC_PRECONDITION_REQUIRED: 428
RC_TOO_MANY_REQUESTS: 429
RC_REQUEST_HEADER_FIELDS_TOO_LARGE: 431
RC_UNAVAILABLE_FOR_LEGAL_REASONS: 451
RC_INTERNAL_SERVER_ERROR: 500
RC_NOT_IMPLEMENTED: 501
RC_BAD_GATEWAY: 502
RC_SERVICE_UNAVAILABLE: 503
RC_GATEWAY_TIMEOUT: 504
RC_HTTP_VERSION_NOT_SUPPORTED: 505
RC_INSUFFICIENT_STORAGE: 507
RC_NETWORK_AUTHENTICATION_REQUIRED: 511
# WEBrick::HTTPStatus::CodeToError.each_value.map{"class #{_1.name.split(/::/).last} < #{_1.superclass.name.split(/::/).last}\nend"}
class Continue < Info
end
class SwitchingProtocols < Info
end
class OK < Success
end
class Created < Success
end
class Accepted < Success
end
class NonAuthoritativeInformation < Success
end
class NoContent < Success
end
class ResetContent < Success
end
class PartialContent < Success
end
class MultiStatus < Success
end
class MultipleChoices < Redirect
end
class MovedPermanently < Redirect
end
class Found < Redirect
end
class SeeOther < Redirect
end
class NotModified < Redirect
end
class UseProxy < Redirect
end
class TemporaryRedirect < Redirect
end
class BadRequest < ClientError
end
class Unauthorized < ClientError
end
class PaymentRequired < ClientError
end
class Forbidden < ClientError
end
class NotFound < ClientError
end
class MethodNotAllowed < ClientError
end
class NotAcceptable < ClientError
end
class ProxyAuthenticationRequired < ClientError
end
class RequestTimeout < ClientError
end
class Conflict < ClientError
end
class Gone < ClientError
end
class LengthRequired < ClientError
end
class PreconditionFailed < ClientError
end
class RequestEntityTooLarge < ClientError
end
class RequestURITooLarge < ClientError
end
class UnsupportedMediaType < ClientError
end
class RequestRangeNotSatisfiable < ClientError
end
class ExpectationFailed < ClientError
end
class UnprocessableEntity < ClientError
end
class Locked < ClientError
end
class FailedDependency < ClientError
end
class UpgradeRequired < ClientError
end
class PreconditionRequired < ClientError
end
class TooManyRequests < ClientError
end
class RequestHeaderFieldsTooLarge < ClientError
end
class UnavailableForLegalReasons < ClientError
end
class InternalServerError < ServerError
end
class NotImplemented < ServerError
end
class BadGateway < ServerError
end
class ServiceUnavailable < ServerError
end
class GatewayTimeout < ServerError
end
class HTTPVersionNotSupported < ServerError
end
class InsufficientStorage < ServerError
end
class NetworkAuthenticationRequired < ServerError
end
#
# Returns the description corresponding to the HTTP status +code+
#
# WEBrick::HTTPStatus.reason_phrase 404
# => "Not Found"
def self?.reason_phrase: (Integer code) -> String
#
# Is +code+ an informational status?
def self?.info?: (Integer code) -> bool
#
# Is +code+ a successful status?
def self?.success?: (Integer code) -> bool
#
# Is +code+ a redirection status?
def self?.redirect?: (Integer code) -> bool
#
# Is +code+ an error status?
def self?.error?: (Integer code) -> bool
#
# Is +code+ a client error status?
def self?.client_error?: (Integer code) -> bool
#
# Is +code+ a server error status?
def self?.server_error?: (Integer code) -> bool
#
# Returns the status class corresponding to +code+
#
# WEBrick::HTTPStatus[302]
# => WEBrick::HTTPStatus::NotFound
#
def self.[]: (Integer code) -> singleton(Status)
end
end