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