Spaces:
Sleeping
Sleeping
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
import dataclasses | |
from enum import Enum | |
class CustomCodeBase(Enum): | |
def code(self) -> int: | |
return self.value[0] | |
def msg(self) -> str: | |
return self.value[1] | |
class CustomResponseCode(CustomCodeBase): | |
HTTP_200 = (200, 'Request successful') | |
HTTP_201 = (201, 'Resource created') | |
HTTP_202 = (202, 'Request accepted but not completed yet') | |
HTTP_204 = (204, 'Request successful but no content returned') | |
HTTP_400 = (400, 'Bad request') | |
HTTP_401 = (401, 'Unauthorized') | |
HTTP_403 = (403, 'Forbidden') | |
HTTP_404 = (404, 'Resource not found') | |
HTTP_410 = (410, 'Resource permanently deleted') | |
HTTP_422 = (422, 'Invalid parameters') | |
HTTP_425 = (425, 'Too early, server can’t handle it') | |
HTTP_429 = (429, 'Too many requests') | |
HTTP_500 = (500, 'Internal server error') | |
HTTP_502 = (502, 'Bad gateway') | |
HTTP_503 = (503, 'Service unavailable') | |
HTTP_504 = (504, 'Gateway timeout') | |
class CustomErrorCode(CustomCodeBase): | |
CAPTCHA_ERROR = (40001, 'The verification code is incorrect') | |
class CustomResponse: | |
""" | |
Provides an open-style response structure. | |
Useful if you want to define response code & message freely. | |
""" | |
code: int | |
msg: str | |
class StandardResponseCode: | |
""" | |
HTTP codes | |
See HTTP Status Code Registry: | |
https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml | |
And RFC 2324 - https://tools.ietf.org/html/rfc2324 | |
""" | |
HTTP_100 = 100 # CONTINUE: | |
HTTP_101 = 101 # SWITCHING_PROTOCOLS: | |
HTTP_102 = 102 # PROCESSING: | |
HTTP_103 = 103 # EARLY_HINTS: | |
HTTP_200 = 200 # OK: | |
HTTP_201 = 201 # CREATED: | |
HTTP_202 = 202 # ACCEPTED: | |
HTTP_203 = 203 # NON_AUTHORITATIVE_INFORMATION: | |
HTTP_204 = 204 # NO_CONTENT: | |
HTTP_205 = 205 # RESET_CONTENT: | |
HTTP_206 = 206 # PARTIAL_CONTENT: | |
HTTP_207 = 207 # MULTI_STATUS: | |
HTTP_208 = 208 # ALREADY_REPORTED: | |
HTTP_226 = 226 # IM_USED: | |
HTTP_300 = 300 # MULTIPLE_CHOICES: | |
HTTP_301 = 301 # MOVED_PERMANENTLY: | |
HTTP_302 = 302 # FOUND: | |
HTTP_303 = 303 # SEE_OTHER: | |
HTTP_304 = 304 # NOT_MODIFIED: | |
HTTP_305 = 305 # USE_PROXY: | |
HTTP_307 = 307 # TEMPORARY_REDIRECT: | |
HTTP_308 = 308 # PERMANENT_REDIRECT: | |
HTTP_400 = 400 # BAD_REQUEST: | |
HTTP_401 = 401 # UNAUTHORIZED: | |
HTTP_402 = 402 # PAYMENT_REQUIRED: | |
HTTP_403 = 403 # FORBIDDEN: | |
HTTP_404 = 404 # NOT_FOUND: | |
HTTP_405 = 405 # METHOD_NOT_ALLOWED: | |
HTTP_406 = 406 # NOT_ACCEPTABLE: | |
HTTP_407 = 407 # PROXY_AUTHENTICATION_REQUIRED: | |
HTTP_408 = 408 # REQUEST_TIMEOUT: | |
HTTP_409 = 409 # CONFLICT: | |
HTTP_410 = 410 # GONE: | |
HTTP_411 = 411 # LENGTH_REQUIRED: | |
HTTP_412 = 412 # PRECONDITION_FAILED: | |
HTTP_413 = 413 # REQUEST_ENTITY_TOO_LARGE: | |
HTTP_414 = 414 # REQUEST_URI_TOO_LONG: | |
HTTP_415 = 415 # UNSUPPORTED_MEDIA_TYPE: | |
HTTP_416 = 416 # REQUESTED_RANGE_NOT_SATISFIABLE: | |
HTTP_417 = 417 # EXPECTATION_FAILED: | |
HTTP_418 = 418 # UNUSED: | |
HTTP_421 = 421 # MISDIRECTED_REQUEST: | |
HTTP_422 = 422 # UNPROCESSABLE_CONTENT: | |
HTTP_423 = 423 # LOCKED: | |
HTTP_424 = 424 # FAILED_DEPENDENCY: | |
HTTP_425 = 425 # TOO_EARLY: | |
HTTP_426 = 426 # UPGRADE_REQUIRED: | |
HTTP_427 = 427 # UNASSIGNED: | |
HTTP_428 = 428 # PRECONDITION_REQUIRED: | |
HTTP_429 = 429 # TOO_MANY_REQUESTS: | |
HTTP_430 = 430 # Unassigned: | |
HTTP_431 = 431 # REQUEST_HEADER_FIELDS_TOO_LARGE: | |
HTTP_451 = 451 # UNAVAILABLE_FOR_LEGAL_REASONS: | |
HTTP_500 = 500 # INTERNAL_SERVER_ERROR: | |
HTTP_501 = 501 # NOT_IMPLEMENTED: | |
HTTP_502 = 502 # BAD_GATEWAY: | |
HTTP_503 = 503 # SERVICE_UNAVAILABLE: | |
HTTP_504 = 504 # GATEWAY_TIMEOUT: | |
HTTP_505 = 505 # HTTP_VERSION_NOT_SUPPORTED: HTTP | |
HTTP_506 = 506 # VARIANT_ALSO_NEGOTIATES: | |
HTTP_507 = 507 # INSUFFICIENT_STORAGE: | |
HTTP_508 = 508 # LOOP_DETECTED: | |
HTTP_509 = 509 # UNASSIGNED: | |
HTTP_510 = 510 # NOT_EXTENDED: | |
HTTP_511 = 511 # NETWORK_AUTHENTICATION_REQUIRED: | |
""" | |
WebSocket codes | |
https://www.iana.org/assignments/websocket/websocket.xml#close-code-number | |
https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent | |
""" | |
WS_1000 = 1000 # NORMAL_CLOSURE: | |
WS_1001 = 1001 # GOING_AWAY: | |
WS_1002 = 1002 # PROTOCOL_ERROR: | |
WS_1003 = 1003 # UNSUPPORTED_DATA: | |
WS_1005 = 1005 # NO_STATUS_RCVD: | |
WS_1006 = 1006 # ABNORMAL_CLOSURE: | |
WS_1007 = 1007 # INVALID_FRAME_PAYLOAD_DATA: | |
WS_1008 = 1008 # POLICY_VIOLATION: | |
WS_1009 = 1009 # MESSAGE_TOO_BIG: | |
WS_1010 = 1010 # MANDATORY_EXT: | |
WS_1011 = 1011 # INTERNAL_ERROR: | |
WS_1012 = 1012 # SERVICE_RESTART: | |
WS_1013 = 1013 # TRY_AGAIN_LATER: | |
WS_1014 = 1014 # BAD_GATEWAY: | |
WS_1015 = 1015 # TLS_HANDSHAKE: | |
WS_3000 = 3000 # UNAUTHORIZED: | |
WS_3003 = 3003 # FORBIDDEN: | |