Source code for ppc_robot_lib.utils.http

HTTP_STATUS_CODES = {
    # 1xx: Informational
    100: '100 Continue',
    101: '101 Switching Protocols',
    102: '102 Processing',
    # 2xx: Successful status codes.
    200: '200 OK',
    201: '201 Created',
    202: '202 Accepted',
    203: '203 Non-Authoritative Information',
    204: '204 No Content',
    205: '205 Reset Content',
    206: '206 Partial Content',
    207: '207 Multi-Status',
    208: '208 Already Reported',
    # 3xx: Redirections.
    300: '300 Multiple Choices',
    301: '301 Moved Permanently',
    302: '302 Moved Temporarily',
    303: '303 See Other',
    304: '304 Not Modified',
    305: '305 Use Proxy',
    306: '306 Switch Proxy',
    307: '307 Temporary Redirect',
    308: '308 Permanent Redirect',
    # 4xx: Client Errors.
    400: '400 Bad Request',
    401: '401 Unauthorized',
    402: '402 Payment Required',
    403: '403 Forbidden',
    404: '404 Not Found',
    405: '405 Method Not Allowed',
    406: '406 Not Acceptable',
    407: '407 Proxy Authentication Required',
    408: '408 Request Timeout',
    409: '409 Conflict',
    410: '410 Gone',
    411: '411 Length Required',
    412: '412 Precondition Failed',
    413: '413 Payload Too Large',
    414: '414 URI Too Long',
    415: '415 Unsupported Media Type',
    416: '416 Range Not Satisfiable',
    417: '417 Expectation Failed',
    418: "418 I'm a teapot",
    429: '429 Too Many Requests',
    451: '451 Unavailable For Legal Reasons',
    # 5xx: Server Errors.
    500: '500 Internal Server Error',
    501: '501 Not Implemented',
    502: '502 Bad Gateway',
    503: '503 Service Unavailable',
    504: '504 Gateway Timeout',
    505: '505 HTTP Version Not Supported',
    506: '506 Variant Also Negotiates',
    507: '507 Insufficient Storage',
    508: '508 Loop Detected',
    510: '510 Not Extended',
    511: '511 Network Authentication Required',
}

HTTP_GATEWAY_ERRORS = {502, 503, 504}
"""Status codes used for HTTP Gateway errors."""

RATE_LIMIT_ERRORS = {415, 429}
"""Status codes used for rate limiting errors."""

SERVER_ERRORS = {500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511}
"""Status codes used for all server-side errors."""


[docs] def get_status_text(status_code: int) -> str: """ Gets a human-friendly description of the status code. Example:: >>> get_status_text(404) '404 Not Found' :param status_code: Status code. :return: Status code description, or status code itself when a non-standard status code is passed. """ key = int(status_code) if key in HTTP_STATUS_CODES: return HTTP_STATUS_CODES[key] else: return str(status_code)
[docs] def is_gateway_error(status_code: int) -> bool: """ Checks if the given status code is a gateway error. :param status_code: Status code. :return: ``True`` if the status code represents a gateway error. """ return status_code in HTTP_GATEWAY_ERRORS
[docs] def is_server_error(status_code): """ Checks if the given status code is a server error. :param status_code: Status code. :return: ``True`` if the status code represents a server error. """ return status_code in SERVER_ERRORS
[docs] def is_rate_limit_error(status_code): """ Checks if the given status code is a rate limiting error. :param status_code: Status code. :return: ``True`` if the status code represents a commonly used rate limiting error. """ return status_code in RATE_LIMIT_ERRORS