123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- # encoding: utf-8
- """
- This file is backported from Python 3.5 http built-in module.
- """
- from enum import IntEnum
- class HTTPStatus(IntEnum):
- """HTTP status codes and reason phrases
- Status codes from the following RFCs are all observed:
- * RFC 7231: Hypertext Transfer Protocol (HTTP/1.1), obsoletes 2616
- * RFC 6585: Additional HTTP Status Codes
- * RFC 3229: Delta encoding in HTTP
- * RFC 4918: HTTP Extensions for WebDAV, obsoletes 2518
- * RFC 5842: Binding Extensions to WebDAV
- * RFC 7238: Permanent Redirect
- * RFC 2295: Transparent Content Negotiation in HTTP
- * RFC 2774: An HTTP Extension Framework
- """
- def __new__(cls, value, phrase, description=""):
- obj = int.__new__(cls, value)
- obj._value_ = value
- obj.phrase = phrase
- obj.description = description
- return obj
- def __str__(self):
- return str(self.value)
- # informational
- CONTINUE = 100, "Continue", "Request received, please continue"
- SWITCHING_PROTOCOLS = (
- 101,
- "Switching Protocols",
- "Switching to new protocol; obey Upgrade header",
- )
- PROCESSING = 102, "Processing"
- # success
- OK = 200, "OK", "Request fulfilled, document follows"
- CREATED = 201, "Created", "Document created, URL follows"
- ACCEPTED = (202, "Accepted", "Request accepted, processing continues off-line")
- NON_AUTHORITATIVE_INFORMATION = (
- 203,
- "Non-Authoritative Information",
- "Request fulfilled from cache",
- )
- NO_CONTENT = 204, "No Content", "Request fulfilled, nothing follows"
- RESET_CONTENT = 205, "Reset Content", "Clear input form for further input"
- PARTIAL_CONTENT = 206, "Partial Content", "Partial content follows"
- MULTI_STATUS = 207, "Multi-Status"
- ALREADY_REPORTED = 208, "Already Reported"
- IM_USED = 226, "IM Used"
- # redirection
- MULTIPLE_CHOICES = (
- 300,
- "Multiple Choices",
- "Object has several resources -- see URI list",
- )
- MOVED_PERMANENTLY = (
- 301,
- "Moved Permanently",
- "Object moved permanently -- see URI list",
- )
- FOUND = 302, "Found", "Object moved temporarily -- see URI list"
- SEE_OTHER = 303, "See Other", "Object moved -- see Method and URL list"
- NOT_MODIFIED = (304, "Not Modified", "Document has not changed since given time")
- USE_PROXY = (
- 305,
- "Use Proxy",
- "You must use proxy specified in Location to access this resource",
- )
- TEMPORARY_REDIRECT = (
- 307,
- "Temporary Redirect",
- "Object moved temporarily -- see URI list",
- )
- PERMANENT_REDIRECT = (
- 308,
- "Permanent Redirect",
- "Object moved temporarily -- see URI list",
- )
- # client error
- BAD_REQUEST = (400, "Bad Request", "Bad request syntax or unsupported method")
- UNAUTHORIZED = (401, "Unauthorized", "No permission -- see authorization schemes")
- PAYMENT_REQUIRED = (402, "Payment Required", "No payment -- see charging schemes")
- FORBIDDEN = (403, "Forbidden", "Request forbidden -- authorization will not help")
- NOT_FOUND = (404, "Not Found", "Nothing matches the given URI")
- METHOD_NOT_ALLOWED = (
- 405,
- "Method Not Allowed",
- "Specified method is invalid for this resource",
- )
- NOT_ACCEPTABLE = (406, "Not Acceptable", "URI not available in preferred format")
- PROXY_AUTHENTICATION_REQUIRED = (
- 407,
- "Proxy Authentication Required",
- "You must authenticate with this proxy before proceeding",
- )
- REQUEST_TIMEOUT = (408, "Request Timeout", "Request timed out; try again later")
- CONFLICT = 409, "Conflict", "Request conflict"
- GONE = (410, "Gone", "URI no longer exists and has been permanently removed")
- LENGTH_REQUIRED = (411, "Length Required", "Client must specify Content-Length")
- PRECONDITION_FAILED = (
- 412,
- "Precondition Failed",
- "Precondition in headers is false",
- )
- REQUEST_ENTITY_TOO_LARGE = (413, "Request Entity Too Large", "Entity is too large")
- REQUEST_URI_TOO_LONG = (414, "Request-URI Too Long", "URI is too long")
- UNSUPPORTED_MEDIA_TYPE = (
- 415,
- "Unsupported Media Type",
- "Entity body in unsupported format",
- )
- REQUESTED_RANGE_NOT_SATISFIABLE = (
- 416,
- "Requested Range Not Satisfiable",
- "Cannot satisfy request range",
- )
- EXPECTATION_FAILED = (
- 417,
- "Expectation Failed",
- "Expect condition could not be satisfied",
- )
- UNPROCESSABLE_ENTITY = 422, "Unprocessable Entity"
- LOCKED = 423, "Locked"
- FAILED_DEPENDENCY = 424, "Failed Dependency"
- UPGRADE_REQUIRED = 426, "Upgrade Required"
- PRECONDITION_REQUIRED = (
- 428,
- "Precondition Required",
- "The origin server requires the request to be conditional",
- )
- TOO_MANY_REQUESTS = (
- 429,
- "Too Many Requests",
- "The user has sent too many requests in "
- 'a given amount of time ("rate limiting")',
- )
- REQUEST_HEADER_FIELDS_TOO_LARGE = (
- 431,
- "Request Header Fields Too Large",
- "The server is unwilling to process the request because its header "
- "fields are too large",
- )
- # server errors
- INTERNAL_SERVER_ERROR = (
- 500,
- "Internal Server Error",
- "Server got itself in trouble",
- )
- NOT_IMPLEMENTED = (501, "Not Implemented", "Server does not support this operation")
- BAD_GATEWAY = (502, "Bad Gateway", "Invalid responses from another server/proxy")
- SERVICE_UNAVAILABLE = (
- 503,
- "Service Unavailable",
- "The server cannot process the request due to a high load",
- )
- GATEWAY_TIMEOUT = (
- 504,
- "Gateway Timeout",
- "The gateway server did not receive a timely response",
- )
- HTTP_VERSION_NOT_SUPPORTED = (
- 505,
- "HTTP Version Not Supported",
- "Cannot fulfill request",
- )
- VARIANT_ALSO_NEGOTIATES = 506, "Variant Also Negotiates"
- INSUFFICIENT_STORAGE = 507, "Insufficient Storage"
- LOOP_DETECTED = 508, "Loop Detected"
- NOT_EXTENDED = 510, "Not Extended"
- NETWORK_AUTHENTICATION_REQUIRED = (
- 511,
- "Network Authentication Required",
- "The client needs to authenticate to gain network access",
- )
|