# Public constants enum { CONTINUE = 100, SWITCHING_PROTOCOLS = 101, PROCESSING = 102, EARLY_HINTS = 103, OK = 200, CREATED = 201, ACCEPTED = 202, NON_AUTHORITATIVE_INFORMATION = 203, NO_CONTENT = 204, RESET_CONTENT = 205, PARTIAL_CONTENT = 206, MULTI_STATUS = 207, ALREADY_REPORTED = 208, IM_USED = 226, MULTIPLE_CHOICE = 300, MOVED_PERMANENTLY = 301, FOUND = 302, SEE_OTHER = 303, NOT_MODIFIED = 304, TEMPORARY_REDIRECT = 307, PERMANENT_REDIRECT = 308, BAD_REQUEST = 400, UNAUTHORIZED = 401, PAYMENT_REQUIRED = 402, FORBIDDEN = 403, NOT_FOUND = 404, METHOD_NOT_ALLOWED = 405, NOT_ACCEPTABLE = 406, PROXY_AUTHENTICATION_REQUIRED = 407, REQUEST_TIMEOUT = 408, CONFLICT = 409, GONE = 410, LENGTH_REQUIRED = 411, PRECONDITION_FAILED = 412, PAYLOAD_TOO_LARGE = 413, URI_TOO_LONG = 414, UNSUPPORTED_MEDIA_TYPE = 415, RANGE_NOT_SATISFIABLE = 416, EXPECTATION_FAILED = 417, IM_A_TEAPOT = 418, MISDIRECTED_REQUEST = 421, UNPROCESSABLE_ENTITY = 422, LOCKED = 423, FAILED_DEPENDENCY = 424, TOO_EARLY = 425, UPGRADE_REQUIRED = 426, PRECONDITION_REQUIRED = 428, TOO_MANY_REQUESTS = 429, REQUEST_HEADER_FIELDS_TOO_LARGE = 431, UNAVAILABLE_FOR_LEGAL_REASONS = 451, INTERNAL_SERVER_ERROR = 500, NOT_IMPLEMENTED = 501, BAD_GATEWAY = 502, SERVICE_UNAVAILABLE = 503, GATEWAY_TIMEOUT = 504, HTTP_VERSION_NOT_SUPPORTED = 505, VARIANT_ALSO_NEGOTIATES = 506, INSUFFICIENT_STORAGE = 507, LOOP_DETECTED = 508, NOT_EXTENDED = 510, NETWORK_AUTHENTICATION_REQUIRED = 511, } # Private constants const __DESCRIPTIONS: Dictionary = { CONTINUE: "Continue", SWITCHING_PROTOCOLS: "Switching Protocols", PROCESSING: "Processing", EARLY_HINTS: "Early Hints", OK: "Ok", CREATED: "Created", ACCEPTED: "Accepted", NON_AUTHORITATIVE_INFORMATION: "Non-Authoritative Information", NO_CONTENT: "No Content", RESET_CONTENT: "Reset Content", PARTIAL_CONTENT: "Partial Content", MULTI_STATUS: "Multi-Status", ALREADY_REPORTED: "Already Reported", IM_USED: "IM Used", MULTIPLE_CHOICE: "Multiple Choice", MOVED_PERMANENTLY: "Moved Permanently", FOUND: "Found", SEE_OTHER: "See Other", NOT_MODIFIED: "Not Modified", TEMPORARY_REDIRECT: "Temporary Redirect", PERMANENT_REDIRECT: "Permanent Redirect", BAD_REQUEST: "Bad Request", UNAUTHORIZED: "Unauthorized", PAYMENT_REQUIRED: "Payment Required", FORBIDDEN: "Forbidden", NOT_FOUND: "Not Found", METHOD_NOT_ALLOWED: "Method Not Allowed", NOT_ACCEPTABLE: "Not Acceptable", PROXY_AUTHENTICATION_REQUIRED: "Proxy Authentication Requested", REQUEST_TIMEOUT: "Request Timeout", CONFLICT: "Conflict", GONE: "Gone", LENGTH_REQUIRED: "Length Required", PRECONDITION_FAILED: "Precondition Failed", PAYLOAD_TOO_LARGE: "Payload Too Large", URI_TOO_LONG: "URI Too long", UNSUPPORTED_MEDIA_TYPE: "Unsupported Media Type", RANGE_NOT_SATISFIABLE: "Range Not Satisfiable", EXPECTATION_FAILED: "Expectation Failed", IM_A_TEAPOT: "I'm A Teapot", MISDIRECTED_REQUEST: "Misdirected Request", UNPROCESSABLE_ENTITY: "Unprocessable Entity", LOCKED: "Locked", FAILED_DEPENDENCY: "Failed Dependency", TOO_EARLY: "Too Early", UPGRADE_REQUIRED: "Upgrade Required", PRECONDITION_REQUIRED: "Precondition Required", TOO_MANY_REQUESTS: "Too Many Requests", REQUEST_HEADER_FIELDS_TOO_LARGE: "Request Header Fields Too Large", UNAVAILABLE_FOR_LEGAL_REASONS: "Unavailable For Legal Reasons", INTERNAL_SERVER_ERROR: "Internal Server Error", NOT_IMPLEMENTED: "Not Implemented", BAD_GATEWAY: "Bad Gateway", SERVICE_UNAVAILABLE: "Service Unavailable", GATEWAY_TIMEOUT: "Gateway Timeout", HTTP_VERSION_NOT_SUPPORTED: "HTTP Version Not Supported", VARIANT_ALSO_NEGOTIATES: "Variant Also Negotiates", INSUFFICIENT_STORAGE: "Insufficient Storage", LOOP_DETECTED: "Loop detected", NOT_EXTENDED: "Not Extended", NETWORK_AUTHENTICATION_REQUIRED: "Network Authentication Required", } # Public methods static func code_to_description(code: int) -> String: return __DESCRIPTIONS[code] static func code_to_identifier(code: int) -> String: return code_to_description(code).to_upper().replace(" ", "_").replace("'", "") static func code_to_status_line(code: int) -> String: return "HTTP/1.1 %d %s" % [code, code_to_identifier(code)]