# 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)]