<?php

declare(strict_types=1);

/**
 * Enum representing common HTTP header keys.
 *
 * Provides a predefined set of constants for HTTP headers used in request and response contexts.
 * Each constant represents a standard HTTP header name as a string.
 */

namespace App\Framework\Http;

enum HeaderKey: string
{
    case ACCEPT = 'Accept';
    case ACCEPT_CHARSET = 'Accept-Charset';
    case ACCEPT_ENCODING = 'Accept-Encoding';
    case ACCEPT_LANGUAGE = 'Accept-Language';
    case ACCEPT_RANGES = 'Accept-Ranges';
    case ACCESS_CONTROL_ALLOW_CREDENTIALS = 'Access-Control-Allow-Credentials';
    case ACCESS_CONTROL_ALLOW_HEADERS = 'Access-Control-Allow-Headers';
    case ACCESS_CONTROL_ALLOW_METHODS = 'Access-Control-Allow-Methods';
    case ACCESS_CONTROL_ALLOW_ORIGIN = 'Access-Control-Allow-Origin';
    case ACCESS_CONTROL_EXPOSE_HEADERS = 'Access-Control-Expose-Headers';
    case ACCESS_CONTROL_MAX_AGE = 'Access-Control-Max-Age';
    case ACCESS_CONTROL_REQUEST_HEADERS = 'Access-Control-Request-Headers';
    case ACCESS_CONTROL_REQUEST_METHOD = 'Access-Control-Request-Method';
    case AGE = 'Age';
    case ALLOW = 'Allow';
    case AUTHORIZATION = 'Authorization';
    case CACHE_CONTROL = 'Cache-Control';
    case CONNECTION = 'Connection';
    case CONTENT_DISPOSITION = 'Content-Disposition';
    case CONTENT_ENCODING = 'Content-Encoding';
    case CONTENT_LANGUAGE = 'Content-Language';
    case CONTENT_LENGTH = 'Content-Length';
    case CONTENT_LOCATION = 'Content-Location';
    case CONTENT_RANGE = 'Content-Range';
    case CONTENT_SECURITY_POLICY = 'Content-Security-Policy';
    case CONTENT_TYPE = 'Content-Type';
    case COOKIE = 'Cookie';
    case DATE = 'Date';
    case ETAG = 'ETag';
    case EXPECT = 'Expect';
    case EXPIRES = 'Expires';
    case FORWARDED = 'Forwarded';
    case FROM = 'From';
    case HOST = 'Host';
    case IF_MATCH = 'If-Match';
    case IF_MODIFIED_SINCE = 'If-Modified-Since';
    case IF_NONE_MATCH = 'If-None-Match';
    case IF_RANGE = 'If-Range';
    case IF_UNMODIFIED_SINCE = 'If-Unmodified-Since';
    case LAST_MODIFIED = 'Last-Modified';
    case LINK = 'Link';
    case LOCATION = 'Location';
    case MAX_FORWARDS = 'Max-Forwards';
    case ORIGIN = 'Origin';
    case PRAGMA = 'Pragma';
    case PROXY_AUTHENTICATE = 'Proxy-Authenticate';
    case PROXY_AUTHORIZATION = 'Proxy-Authorization';
    case RANGE = 'Range';
    case REFERER = 'Referer';
    case RETRY_AFTER = 'Retry-After';
    case SERVER = 'Server';
    case SET_COOKIE = 'Set-Cookie';
    case STRICT_TRANSPORT_SECURITY = 'Strict-Transport-Security';
    case TE = 'TE';
    case TRAILER = 'Trailer';
    case TRANSFER_ENCODING = 'Transfer-Encoding';
    case UPGRADE = 'Upgrade';
    case USER_AGENT = 'User-Agent';
    case VARY = 'Vary';
    case VIA = 'Via';
    case WARNING = 'Warning';
    case WWW_AUTHENTICATE = 'WWW-Authenticate';
    case X_FORWARDED_FOR = 'X-Forwarded-For';
    case X_FORWARDED_HOST = 'X-Forwarded-Host';
    case X_FORWARDED_PROTO = 'X-Forwarded-Proto';
    case X_REQUESTED_WITH = 'X-Requested-With';
}
