"""
HTTP Constants

Standard HTTP status codes and methods.
"""


class HTTP_STATUS:
    """HTTP Status Codes."""
    
    # Success
    OK = 200
    CREATED = 201
    ACCEPTED = 202
    NO_CONTENT = 204
    
    # Redirection
    MOVED_PERMANENTLY = 301
    FOUND = 302
    NOT_MODIFIED = 304
    TEMPORARY_REDIRECT = 307
    PERMANENT_REDIRECT = 308
    
    # Client Errors
    BAD_REQUEST = 400
    UNAUTHORIZED = 401
    FORBIDDEN = 403
    NOT_FOUND = 404
    METHOD_NOT_ALLOWED = 405
    CONFLICT = 409
    GONE = 410
    UNPROCESSABLE_ENTITY = 422
    TOO_MANY_REQUESTS = 429
    
    # Server Errors
    INTERNAL_SERVER_ERROR = 500
    NOT_IMPLEMENTED = 501
    BAD_GATEWAY = 502
    SERVICE_UNAVAILABLE = 503
    GATEWAY_TIMEOUT = 504


class HTTP_METHODS:
    """HTTP Methods."""
    
    GET = "GET"
    POST = "POST"
    PUT = "PUT"
    PATCH = "PATCH"
    DELETE = "DELETE"
    HEAD = "HEAD"
    OPTIONS = "OPTIONS"


# Content Types
CONTENT_TYPES = {
    "JSON": "application/json",
    "XML": "application/xml",
    "FORM": "application/x-www-form-urlencoded",
    "MULTIPART": "multipart/form-data",
    "TEXT": "text/plain",
    "HTML": "text/html",
    "CSV": "text/csv",
    "PDF": "application/pdf",
}

# Standard Headers
HEADERS = {
    "CONTENT_TYPE": "Content-Type",
    "AUTHORIZATION": "Authorization",
    "ACCEPT": "Accept",
    "ACCEPT_LANGUAGE": "Accept-Language",
    "CACHE_CONTROL": "Cache-Control",
    "X_REQUEST_ID": "X-Request-ID",
    "X_TENANT_ID": "X-Tenant-ID",
    "X_CORRELATION_ID": "X-Correlation-ID",
}
