"""Provides indexed HTTP status codes."""
import enum

from rest_framework import status


class HttpStatus(enum.IntEnum):
    CONTINUE = status.HTTP_100_CONTINUE
    SWITCHING_PROTOCOLS = status.HTTP_101_SWITCHING_PROTOCOLS
    PROCESSING = status.HTTP_102_PROCESSING
    EARLY_HINTS = status.HTTP_103_EARLY_HINTS
    OK = status.HTTP_200_OK
    CREATED = status.HTTP_201_CREATED
    ACCEPTED = status.HTTP_202_ACCEPTED
    NON_AUTHORITATIVE_INFORMATION = status.HTTP_203_NON_AUTHORITATIVE_INFORMATION
    NO_CONTENT = status.HTTP_204_NO_CONTENT
    RESET_CONTENT = status.HTTP_205_RESET_CONTENT
    PARTIAL_CONTENT = status.HTTP_206_PARTIAL_CONTENT
    MULTI_STATUS = status.HTTP_207_MULTI_STATUS
    ALREADY_REPORTED = status.HTTP_208_ALREADY_REPORTED
    IM_USED = status.HTTP_226_IM_USED
    MULTIPLE_CHOICES = status.HTTP_300_MULTIPLE_CHOICES
    MOVED_PERMANENTLY = status.HTTP_301_MOVED_PERMANENTLY
    FOUND = status.HTTP_302_FOUND
    SEE_OTHER = status.HTTP_303_SEE_OTHER
    NOT_MODIFIED = status.HTTP_304_NOT_MODIFIED
    USE_PROXY = status.HTTP_305_USE_PROXY
    RESERVED = status.HTTP_306_RESERVED
    TEMPORARY_REDIRECT = status.HTTP_307_TEMPORARY_REDIRECT
    PERMANENT_REDIRECT = status.HTTP_308_PERMANENT_REDIRECT
    BAD_REQUEST = status.HTTP_400_BAD_REQUEST
    UNAUTHORIZED = status.HTTP_401_UNAUTHORIZED
    PAYMENT_REQUIRED = status.HTTP_402_PAYMENT_REQUIRED
    FORBIDDEN = status.HTTP_403_FORBIDDEN
    NOT_FOUND = status.HTTP_404_NOT_FOUND
    METHOD_NOT_ALLOWED = status.HTTP_405_METHOD_NOT_ALLOWED
    NOT_ACCEPTABLE = status.HTTP_406_NOT_ACCEPTABLE
    PROXY_AUTHENTICATION_REQUIRED = status.HTTP_407_PROXY_AUTHENTICATION_REQUIRED
    REQUEST_TIMEOUT = status.HTTP_408_REQUEST_TIMEOUT
    CONFLICT = status.HTTP_409_CONFLICT
    GONE = status.HTTP_410_GONE
    LENGTH_REQUIRED = status.HTTP_411_LENGTH_REQUIRED
    PRECONDITION_FAILED = status.HTTP_412_PRECONDITION_FAILED
    REQUEST_ENTITY_TOO_LARGE = status.HTTP_413_REQUEST_ENTITY_TOO_LARGE
    REQUEST_URI_TOO_LONG = status.HTTP_414_REQUEST_URI_TOO_LONG
    UNSUPPORTED_MEDIA_TYPE = status.HTTP_415_UNSUPPORTED_MEDIA_TYPE
    REQUESTED_RANGE_NOT_SATISFIABLE = status.HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
    EXPECTATION_FAILED = status.HTTP_417_EXPECTATION_FAILED
    IM_A_TEAPOT = status.HTTP_418_IM_A_TEAPOT
    MISDIRECTED_REQUEST = status.HTTP_421_MISDIRECTED_REQUEST
    UNPROCESSABLE_ENTITY = status.HTTP_422_UNPROCESSABLE_ENTITY
    LOCKED = status.HTTP_423_LOCKED
    FAILED_DEPENDENCY = status.HTTP_424_FAILED_DEPENDENCY
    TOO_EARLY = status.HTTP_425_TOO_EARLY
    UPGRADE_REQUIRED = status.HTTP_426_UPGRADE_REQUIRED
    PRECONDITION_REQUIRED = status.HTTP_428_PRECONDITION_REQUIRED
    TOO_MANY_REQUESTS = status.HTTP_429_TOO_MANY_REQUESTS
    REQUEST_HEADER_FIELDS_TOO_LARGE = status.HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
    UNAVAILABLE_FOR_LEGAL_REASONS = status.HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS
    INTERNAL_SERVER_ERROR = status.HTTP_500_INTERNAL_SERVER_ERROR
    NOT_IMPLEMENTED = status.HTTP_501_NOT_IMPLEMENTED
    BAD_GATEWAY = status.HTTP_502_BAD_GATEWAY
    SERVICE_UNAVAILABLE = status.HTTP_503_SERVICE_UNAVAILABLE
    GATEWAY_TIMEOUT = status.HTTP_504_GATEWAY_TIMEOUT
    HTTP_VERSION_NOT_SUPPORTED = status.HTTP_505_HTTP_VERSION_NOT_SUPPORTED
    VARIANT_ALSO_NEGOTIATES = status.HTTP_506_VARIANT_ALSO_NEGOTIATES
    INSUFFICIENT_STORAGE = status.HTTP_507_INSUFFICIENT_STORAGE
    LOOP_DETECTED = status.HTTP_508_LOOP_DETECTED
    BANDWIDTH_LIMIT_EXCEEDED = status.HTTP_509_BANDWIDTH_LIMIT_EXCEEDED
    NOT_EXTENDED = status.HTTP_510_NOT_EXTENDED
    NETWORK_AUTHENTICATION_REQUIRED = status.HTTP_511_NETWORK_AUTHENTICATION_REQUIRED
