cOMS/http/header/HttpHeaderKey.h
Dennis Eichhorn 2059cc6e77
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (autobuild, c-cpp) (push) Has been cancelled
Microsoft C++ Code Analysis / Analyze (push) Has been cancelled
update
2025-06-14 19:10:16 +00:00

652 lines
29 KiB
C

/**
* Jingga
*
* @copyright Jingga
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
#ifndef COMS_JINGGA_HTTP_HEADER_KEY_H
#define COMS_JINGGA_HTTP_HEADER_KEY_H
#include "../../stdlib/Types.h"
enum HttpHeaderKey : byte {
// Standard HTTP/1.1 & HTTP/2 Headers (RFC 9110, 9113, etc.)
HTTP_HEADER_KEY_UNKNOWN,
HTTP_HEADER_KEY_HOST,
HTTP_HEADER_KEY_USER_AGENT,
HTTP_HEADER_KEY_ACCEPT,
HTTP_HEADER_KEY_ACCEPT_CHARSET,
HTTP_HEADER_KEY_ACCEPT_ENCODING,
HTTP_HEADER_KEY_ACCEPT_LANGUAGE,
HTTP_HEADER_KEY_ACCEPT_DATETIME,
HTTP_HEADER_KEY_ACCEPT_PATCH,
HTTP_HEADER_KEY_ACCEPT_RANGES,
HTTP_HEADER_KEY_AGE,
HTTP_HEADER_KEY_ALLOW,
HTTP_HEADER_KEY_AUTHORIZATION,
HTTP_HEADER_KEY_CACHE_CONTROL,
HTTP_HEADER_KEY_CONNECTION,
HTTP_HEADER_KEY_CONTENT_DISPOSITION,
HTTP_HEADER_KEY_CONTENT_ENCODING,
HTTP_HEADER_KEY_CONTENT_LANGUAGE,
HTTP_HEADER_KEY_CONTENT_LENGTH,
HTTP_HEADER_KEY_CONTENT_LOCATION,
HTTP_HEADER_KEY_CONTENT_MD5,
HTTP_HEADER_KEY_CONTENT_RANGE,
HTTP_HEADER_KEY_CONTENT_TYPE,
HTTP_HEADER_KEY_COOKIE,
HTTP_HEADER_KEY_DATE,
HTTP_HEADER_KEY_ETAG,
HTTP_HEADER_KEY_EXPECT,
HTTP_HEADER_KEY_EXPIRES,
HTTP_HEADER_KEY_FROM,
HTTP_HEADER_KEY_IF_MATCH,
HTTP_HEADER_KEY_IF_MODIFIED_SINCE,
HTTP_HEADER_KEY_IF_NONE_MATCH,
HTTP_HEADER_KEY_IF_RANGE,
HTTP_HEADER_KEY_IF_UNMODIFIED_SINCE,
HTTP_HEADER_KEY_LAST_MODIFIED,
HTTP_HEADER_KEY_LINK,
HTTP_HEADER_KEY_LOCATION,
HTTP_HEADER_KEY_MAX_FORWARDS,
HTTP_HEADER_KEY_ORIGIN,
HTTP_HEADER_KEY_PRAGMA,
HTTP_HEADER_KEY_PROXY_AUTHENTICATE,
HTTP_HEADER_KEY_PROXY_AUTHORIZATION,
HTTP_HEADER_KEY_RANGE,
HTTP_HEADER_KEY_REFERER,
HTTP_HEADER_KEY_RETRY_AFTER,
HTTP_HEADER_KEY_SERVER,
HTTP_HEADER_KEY_SET_COOKIE,
HTTP_HEADER_KEY_STRICT_TRANSPORT_SECURITY,
HTTP_HEADER_KEY_TE,
HTTP_HEADER_KEY_TRAILER,
HTTP_HEADER_KEY_TRANSFER_ENCODING,
HTTP_HEADER_KEY_UPGRADE,
HTTP_HEADER_KEY_VARY,
HTTP_HEADER_KEY_VIA,
HTTP_HEADER_KEY_WARNING,
HTTP_HEADER_KEY_WWW_AUTHENTICATE,
// Common Non-Standard (X-*) and Extension Headers
HTTP_HEADER_KEY_X_FORWARDED_FOR,
HTTP_HEADER_KEY_X_FORWARDED_HOST,
HTTP_HEADER_KEY_X_FORWARDED_PROTO,
HTTP_HEADER_KEY_X_REQUESTED_WITH,
HTTP_HEADER_KEY_X_CSRF_TOKEN,
HTTP_HEADER_KEY_X_XSS_PROTECTION,
HTTP_HEADER_KEY_X_CONTENT_TYPE_OPTIONS,
HTTP_HEADER_KEY_X_FRAME_OPTIONS,
HTTP_HEADER_KEY_X_POWERED_BY,
HTTP_HEADER_KEY_X_UPLOAD_ID,
HTTP_HEADER_KEY_X_RATE_LIMIT_LIMIT,
HTTP_HEADER_KEY_X_RATE_LIMIT_REMAINING,
HTTP_HEADER_KEY_X_RATE_LIMIT_RESET,
HTTP_HEADER_KEY_X_UA_COMPATIBLE,
HTTP_HEADER_KEY_X_DNS_PREFETCH_CONTROL,
HTTP_HEADER_KEY_X_DOWNLOAD_OPTIONS,
HTTP_HEADER_KEY_X_PERMITTED_CROSS_DOMAIN_POLICIES,
// CORS Headers
HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_ORIGIN,
HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_CREDENTIALS,
HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_HEADERS,
HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_METHODS,
HTTP_HEADER_KEY_ACCESS_CONTROL_EXPOSE_HEADERS,
HTTP_HEADER_KEY_ACCESS_CONTROL_MAX_AGE,
HTTP_HEADER_KEY_ACCESS_CONTROL_REQUEST_HEADERS,
HTTP_HEADER_KEY_ACCESS_CONTROL_REQUEST_METHOD,
// Security Headers
HTTP_HEADER_KEY_CONTENT_SECURITY_POLICY,
HTTP_HEADER_KEY_PERMISSIONS_POLICY,
HTTP_HEADER_KEY_REFERRER_POLICY,
HTTP_HEADER_KEY_EXPECT_CT,
HTTP_HEADER_KEY_FEATURE_POLICY,
HTTP_HEADER_KEY_CROSS_ORIGIN_EMBEDDER_POLICY,
HTTP_HEADER_KEY_CROSS_ORIGIN_OPENER_POLICY,
HTTP_HEADER_KEY_CROSS_ORIGIN_RESOURCE_POLICY,
// WebSocket Headers
HTTP_HEADER_KEY_SEC_WEBSOCKET_KEY,
HTTP_HEADER_KEY_SEC_WEBSOCKET_ACCEPT,
HTTP_HEADER_KEY_SEC_WEBSOCKET_VERSION,
HTTP_HEADER_KEY_SEC_WEBSOCKET_PROTOCOL,
HTTP_HEADER_KEY_SEC_WEBSOCKET_EXTENSIONS,
// HTTP/3 and QUIC Headers
HTTP_HEADER_KEY_ALT_SVC,
HTTP_HEADER_KEY_EARLY_DATA,
// Cloud & CDN Headers
HTTP_HEADER_KEY_CF_CONNECTING_IP,
HTTP_HEADER_KEY_CF_IPCOUNTRY,
HTTP_HEADER_KEY_CF_RAY,
HTTP_HEADER_KEY_TRUE_CLIENT_IP,
HTTP_HEADER_KEY_X_AMZ_CF_ID,
HTTP_HEADER_KEY_X_AMZN_TRACE_ID,
// Custom/Experimental Headers
HTTP_HEADER_KEY_DNT, // Do Not Track
HTTP_HEADER_KEY_SAVE_DATA,
HTTP_HEADER_KEY_DOWNLINK,
HTTP_HEADER_KEY_ECT, // Effective Connection Type
HTTP_HEADER_KEY_RTT,
HTTP_HEADER_KEY_PURPOSE,
HTTP_HEADER_KEY_SEC_FETCH_SITE,
HTTP_HEADER_KEY_SEC_FETCH_MODE,
HTTP_HEADER_KEY_SEC_FETCH_USER,
HTTP_HEADER_KEY_SEC_FETCH_DEST,
HTTP_HEADER_KEY_SERVICE_WORKER_NAVIGATION_PRELOAD,
HTTP_HEADER_KEY_LAST_EVENT_ID,
HTTP_HEADER_KEY_REPORT_TO,
HTTP_HEADER_KEY_PRIORITY,
HTTP_HEADER_KEY_SIGNATURE,
HTTP_HEADER_KEY_SIGNATURE_KEY,
HTTP_HEADER_KEY_FORWARDED,
HTTP_HEADER_KEY_ORIGINAL_METHOD,
HTTP_HEADER_KEY_ORIGINAL_URL,
HTTP_HEADER_KEY_ORIGINAL_HOST,
};
const char* http_header_key_text(HttpHeaderKey header_key) {
switch (header_key) {
case HTTP_HEADER_KEY_HOST:
return "Host";
case HTTP_HEADER_KEY_USER_AGENT:
return "User-Agent";
case HTTP_HEADER_KEY_ACCEPT:
return "Accept";
case HTTP_HEADER_KEY_ACCEPT_CHARSET:
return "Accept-Charset";
case HTTP_HEADER_KEY_ACCEPT_ENCODING:
return "Accept-Encoding";
case HTTP_HEADER_KEY_ACCEPT_LANGUAGE:
return "Accept-Language";
case HTTP_HEADER_KEY_ACCEPT_DATETIME:
return "Accept-Datetime";
case HTTP_HEADER_KEY_ACCEPT_PATCH:
return "Accept-Patch";
case HTTP_HEADER_KEY_ACCEPT_RANGES:
return "Accept-Ranges";
case HTTP_HEADER_KEY_AGE:
return "Age";
case HTTP_HEADER_KEY_ALLOW:
return "Allow";
case HTTP_HEADER_KEY_AUTHORIZATION:
return "Authorization";
case HTTP_HEADER_KEY_CACHE_CONTROL:
return "Cache-Control";
case HTTP_HEADER_KEY_CONNECTION:
return "Connection";
case HTTP_HEADER_KEY_CONTENT_DISPOSITION:
return "Content-Disposition";
case HTTP_HEADER_KEY_CONTENT_ENCODING:
return "Content-Encoding";
case HTTP_HEADER_KEY_CONTENT_LANGUAGE:
return "Content-Language";
case HTTP_HEADER_KEY_CONTENT_LENGTH:
return "Content-Length";
case HTTP_HEADER_KEY_CONTENT_LOCATION:
return "Content-Location";
case HTTP_HEADER_KEY_CONTENT_MD5:
return "Content-Md5";
case HTTP_HEADER_KEY_CONTENT_RANGE:
return "Content-Range";
case HTTP_HEADER_KEY_CONTENT_TYPE:
return "Content-Type";
case HTTP_HEADER_KEY_COOKIE:
return "Cookie";
case HTTP_HEADER_KEY_DATE:
return "Date";
case HTTP_HEADER_KEY_ETAG:
return "Etag";
case HTTP_HEADER_KEY_EXPECT:
return "Expect";
case HTTP_HEADER_KEY_EXPIRES:
return "Expires";
case HTTP_HEADER_KEY_FROM:
return "From";
case HTTP_HEADER_KEY_IF_MATCH:
return "If-Match";
case HTTP_HEADER_KEY_IF_MODIFIED_SINCE:
return "If-Modified-Since";
case HTTP_HEADER_KEY_IF_NONE_MATCH:
return "If-None-Match";
case HTTP_HEADER_KEY_IF_RANGE:
return "If-Range";
case HTTP_HEADER_KEY_IF_UNMODIFIED_SINCE:
return "If-Unmodified-Since";
case HTTP_HEADER_KEY_LAST_MODIFIED:
return "Last-Modified";
case HTTP_HEADER_KEY_LINK:
return "Link";
case HTTP_HEADER_KEY_LOCATION:
return "Location";
case HTTP_HEADER_KEY_MAX_FORWARDS:
return "Max-Forwards";
case HTTP_HEADER_KEY_ORIGIN:
return "Origin";
case HTTP_HEADER_KEY_PRAGMA:
return "Pragma";
case HTTP_HEADER_KEY_PROXY_AUTHENTICATE:
return "Proxy-Authenticate";
case HTTP_HEADER_KEY_PROXY_AUTHORIZATION:
return "Proxy-Authorization";
case HTTP_HEADER_KEY_RANGE:
return "Range";
case HTTP_HEADER_KEY_REFERER:
return "Referer";
case HTTP_HEADER_KEY_RETRY_AFTER:
return "Retry-After";
case HTTP_HEADER_KEY_SERVER:
return "Server";
case HTTP_HEADER_KEY_SET_COOKIE:
return "Set-Cookie";
case HTTP_HEADER_KEY_STRICT_TRANSPORT_SECURITY:
return "Strict-Transport-Security";
case HTTP_HEADER_KEY_TE:
return "Te";
case HTTP_HEADER_KEY_TRAILER:
return "Trailer";
case HTTP_HEADER_KEY_TRANSFER_ENCODING:
return "Transfer-Encoding";
case HTTP_HEADER_KEY_UPGRADE:
return "Upgrade";
case HTTP_HEADER_KEY_VARY:
return "Vary";
case HTTP_HEADER_KEY_VIA:
return "Via";
case HTTP_HEADER_KEY_WARNING:
return "Warning";
case HTTP_HEADER_KEY_WWW_AUTHENTICATE:
return "Www-Authenticate";
case HTTP_HEADER_KEY_X_FORWARDED_FOR:
return "X-Forwarded-For";
case HTTP_HEADER_KEY_X_FORWARDED_HOST:
return "X-Forwarded-Host";
case HTTP_HEADER_KEY_X_FORWARDED_PROTO:
return "X-Forwarded-Proto";
case HTTP_HEADER_KEY_X_REQUESTED_WITH:
return "X-Requested-With";
case HTTP_HEADER_KEY_X_CSRF_TOKEN:
return "X-Csrf-Token";
case HTTP_HEADER_KEY_X_XSS_PROTECTION:
return "X-Xss-Protection";
case HTTP_HEADER_KEY_X_CONTENT_TYPE_OPTIONS:
return "X-Content-Type-Options";
case HTTP_HEADER_KEY_X_FRAME_OPTIONS:
return "X-Frame-Options";
case HTTP_HEADER_KEY_X_POWERED_BY:
return "X-Powered-By";
case HTTP_HEADER_KEY_X_UPLOAD_ID:
return "X-Upload-Id";
case HTTP_HEADER_KEY_X_RATE_LIMIT_LIMIT:
return "X-Rate-Limit-Limit";
case HTTP_HEADER_KEY_X_RATE_LIMIT_REMAINING:
return "X-Rate-Limit-Remaining";
case HTTP_HEADER_KEY_X_RATE_LIMIT_RESET:
return "X-Rate-Limit-Reset";
case HTTP_HEADER_KEY_X_UA_COMPATIBLE:
return "X-Ua-Compatible";
case HTTP_HEADER_KEY_X_DNS_PREFETCH_CONTROL:
return "X-Dns-Prefetch-Control";
case HTTP_HEADER_KEY_X_DOWNLOAD_OPTIONS:
return "X-Download-Options";
case HTTP_HEADER_KEY_X_PERMITTED_CROSS_DOMAIN_POLICIES:
return "X-Permitted-Cross-Domain-Policies";
case HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_ORIGIN:
return "Access-Control-Allow-Origin";
case HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_CREDENTIALS:
return "Access-Control-Allow-Credentials";
case HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_HEADERS:
return "Access-Control-Allow-Headers";
case HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_METHODS:
return "Access-Control-Allow-Methods";
case HTTP_HEADER_KEY_ACCESS_CONTROL_EXPOSE_HEADERS:
return "Access-Control-Expose-Headers";
case HTTP_HEADER_KEY_ACCESS_CONTROL_MAX_AGE:
return "Access-Control-Max-Age";
case HTTP_HEADER_KEY_ACCESS_CONTROL_REQUEST_HEADERS:
return "Access-Control-Request-Headers";
case HTTP_HEADER_KEY_ACCESS_CONTROL_REQUEST_METHOD:
return "Access-Control-Request-Method";
case HTTP_HEADER_KEY_CONTENT_SECURITY_POLICY:
return "Content-Security-Policy";
case HTTP_HEADER_KEY_PERMISSIONS_POLICY:
return "Permissions-Policy";
case HTTP_HEADER_KEY_REFERRER_POLICY:
return "Referrer-Policy";
case HTTP_HEADER_KEY_EXPECT_CT:
return "Expect-Ct";
case HTTP_HEADER_KEY_FEATURE_POLICY:
return "Feature-Policy";
case HTTP_HEADER_KEY_CROSS_ORIGIN_EMBEDDER_POLICY:
return "Cross-Origin-Embedder-Policy";
case HTTP_HEADER_KEY_CROSS_ORIGIN_OPENER_POLICY:
return "Cross-Origin-Opener-Policy";
case HTTP_HEADER_KEY_CROSS_ORIGIN_RESOURCE_POLICY:
return "Cross-Origin-Resource-Policy";
case HTTP_HEADER_KEY_SEC_WEBSOCKET_KEY:
return "Sec-Websocket-Key";
case HTTP_HEADER_KEY_SEC_WEBSOCKET_ACCEPT:
return "Sec-Websocket-Accept";
case HTTP_HEADER_KEY_SEC_WEBSOCKET_VERSION:
return "Sec-Websocket-Version";
case HTTP_HEADER_KEY_SEC_WEBSOCKET_PROTOCOL:
return "Sec-Websocket-Protocol";
case HTTP_HEADER_KEY_SEC_WEBSOCKET_EXTENSIONS:
return "Sec-Websocket-Extensions";
case HTTP_HEADER_KEY_ALT_SVC:
return "Alt-Svc";
case HTTP_HEADER_KEY_EARLY_DATA:
return "Early-Data";
case HTTP_HEADER_KEY_CF_CONNECTING_IP:
return "Cf-Connecting-Ip";
case HTTP_HEADER_KEY_CF_IPCOUNTRY:
return "Cf-Ipcountry";
case HTTP_HEADER_KEY_CF_RAY:
return "Cf-Ray";
case HTTP_HEADER_KEY_TRUE_CLIENT_IP:
return "True-Client-Ip";
case HTTP_HEADER_KEY_X_AMZ_CF_ID:
return "X-Amz-Cf-Id";
case HTTP_HEADER_KEY_X_AMZN_TRACE_ID:
return "X-Amzn-Trace-Id";
case HTTP_HEADER_KEY_DNT:
return "Dnt";
case HTTP_HEADER_KEY_SAVE_DATA:
return "Save-Data";
case HTTP_HEADER_KEY_DOWNLINK:
return "Downlink";
case HTTP_HEADER_KEY_ECT:
return "Ect";
case HTTP_HEADER_KEY_RTT:
return "Rtt";
case HTTP_HEADER_KEY_PURPOSE:
return "Purpose";
case HTTP_HEADER_KEY_SEC_FETCH_SITE:
return "Sec-Fetch-Site";
case HTTP_HEADER_KEY_SEC_FETCH_MODE:
return "Sec-Fetch-Mode";
case HTTP_HEADER_KEY_SEC_FETCH_USER:
return "Sec-Fetch-User";
case HTTP_HEADER_KEY_SEC_FETCH_DEST:
return "Sec-Fetch-Dest";
case HTTP_HEADER_KEY_SERVICE_WORKER_NAVIGATION_PRELOAD:
return "Service-Worker-Navigation-Preload";
case HTTP_HEADER_KEY_LAST_EVENT_ID:
return "Last-Event-Id";
case HTTP_HEADER_KEY_REPORT_TO:
return "Report-To";
case HTTP_HEADER_KEY_PRIORITY:
return "Priority";
case HTTP_HEADER_KEY_SIGNATURE:
return "Signature";
case HTTP_HEADER_KEY_SIGNATURE_KEY:
return "Signature-Key";
case HTTP_HEADER_KEY_FORWARDED:
return "Forwarded";
case HTTP_HEADER_KEY_ORIGINAL_METHOD:
return "Original-Method";
case HTTP_HEADER_KEY_ORIGINAL_URL:
return "Original-Url";
case HTTP_HEADER_KEY_ORIGINAL_HOST:
return "Original-Host";
default:
UNREACHABLE();
}
}
HttpHeaderKey http_header_key_text(const char* header) {
if (str_compare_caseless(header, "Host:") == 0) {
return HTTP_HEADER_KEY_HOST;
} else if (str_compare_caseless(header, "User-Agent:") == 0) {
return HTTP_HEADER_KEY_USER_AGENT;
} else if (str_compare_caseless(header, "Accept:") == 0) {
return HTTP_HEADER_KEY_ACCEPT;
} else if (str_compare_caseless(header, "Accept-Charset:") == 0) {
return HTTP_HEADER_KEY_ACCEPT_CHARSET;
} else if (str_compare_caseless(header, "Accept-Encoding:") == 0) {
return HTTP_HEADER_KEY_ACCEPT_ENCODING;
} else if (str_compare_caseless(header, "Accept-Language:") == 0) {
return HTTP_HEADER_KEY_ACCEPT_LANGUAGE;
} else if (str_compare_caseless(header, "Accept-Datetime:") == 0) {
return HTTP_HEADER_KEY_ACCEPT_DATETIME;
} else if (str_compare_caseless(header, "Accept-Patch:") == 0) {
return HTTP_HEADER_KEY_ACCEPT_PATCH;
} else if (str_compare_caseless(header, "Accept-Ranges:") == 0) {
return HTTP_HEADER_KEY_ACCEPT_RANGES;
} else if (str_compare_caseless(header, "Age:") == 0) {
return HTTP_HEADER_KEY_AGE;
} else if (str_compare_caseless(header, "Allow:") == 0) {
return HTTP_HEADER_KEY_ALLOW;
} else if (str_compare_caseless(header, "Authorization:") == 0) {
return HTTP_HEADER_KEY_AUTHORIZATION;
} else if (str_compare_caseless(header, "Cache-Control:") == 0) {
return HTTP_HEADER_KEY_CACHE_CONTROL;
} else if (str_compare_caseless(header, "Connection:") == 0) {
return HTTP_HEADER_KEY_CONNECTION;
} else if (str_compare_caseless(header, "Content-Disposition:") == 0) {
return HTTP_HEADER_KEY_CONTENT_DISPOSITION;
} else if (str_compare_caseless(header, "Content-Encoding:") == 0) {
return HTTP_HEADER_KEY_CONTENT_ENCODING;
} else if (str_compare_caseless(header, "Content-Language:") == 0) {
return HTTP_HEADER_KEY_CONTENT_LANGUAGE;
} else if (str_compare_caseless(header, "Content-Length:") == 0) {
return HTTP_HEADER_KEY_CONTENT_LENGTH;
} else if (str_compare_caseless(header, "Content-Location:") == 0) {
return HTTP_HEADER_KEY_CONTENT_LOCATION;
} else if (str_compare_caseless(header, "Content-Md5:") == 0) {
return HTTP_HEADER_KEY_CONTENT_MD5;
} else if (str_compare_caseless(header, "Content-Range:") == 0) {
return HTTP_HEADER_KEY_CONTENT_RANGE;
} else if (str_compare_caseless(header, "Content-Type:") == 0) {
return HTTP_HEADER_KEY_CONTENT_TYPE;
} else if (str_compare_caseless(header, "Cookie:") == 0) {
return HTTP_HEADER_KEY_COOKIE;
} else if (str_compare_caseless(header, "Date:") == 0) {
return HTTP_HEADER_KEY_DATE;
} else if (str_compare_caseless(header, "Etag:") == 0) {
return HTTP_HEADER_KEY_ETAG;
} else if (str_compare_caseless(header, "Expect:") == 0) {
return HTTP_HEADER_KEY_EXPECT;
} else if (str_compare_caseless(header, "Expires:") == 0) {
return HTTP_HEADER_KEY_EXPIRES;
} else if (str_compare_caseless(header, "From:") == 0) {
return HTTP_HEADER_KEY_FROM;
} else if (str_compare_caseless(header, "If-Match:") == 0) {
return HTTP_HEADER_KEY_IF_MATCH;
} else if (str_compare_caseless(header, "If-Modified-Since:") == 0) {
return HTTP_HEADER_KEY_IF_MODIFIED_SINCE;
} else if (str_compare_caseless(header, "If-None-Match:") == 0) {
return HTTP_HEADER_KEY_IF_NONE_MATCH;
} else if (str_compare_caseless(header, "If-Range:") == 0) {
return HTTP_HEADER_KEY_IF_RANGE;
} else if (str_compare_caseless(header, "If-Unmodified-Since:") == 0) {
return HTTP_HEADER_KEY_IF_UNMODIFIED_SINCE;
} else if (str_compare_caseless(header, "Last-Modified:") == 0) {
return HTTP_HEADER_KEY_LAST_MODIFIED;
} else if (str_compare_caseless(header, "Link:") == 0) {
return HTTP_HEADER_KEY_LINK;
} else if (str_compare_caseless(header, "Location:") == 0) {
return HTTP_HEADER_KEY_LOCATION;
} else if (str_compare_caseless(header, "Max-Forwards:") == 0) {
return HTTP_HEADER_KEY_MAX_FORWARDS;
} else if (str_compare_caseless(header, "Origin:") == 0) {
return HTTP_HEADER_KEY_ORIGIN;
} else if (str_compare_caseless(header, "Pragma:") == 0) {
return HTTP_HEADER_KEY_PRAGMA;
} else if (str_compare_caseless(header, "Proxy-Authenticate:") == 0) {
return HTTP_HEADER_KEY_PROXY_AUTHENTICATE;
} else if (str_compare_caseless(header, "Proxy-Authorization:") == 0) {
return HTTP_HEADER_KEY_PROXY_AUTHORIZATION;
} else if (str_compare_caseless(header, "Range:") == 0) {
return HTTP_HEADER_KEY_RANGE;
} else if (str_compare_caseless(header, "Referer:") == 0) {
return HTTP_HEADER_KEY_REFERER;
} else if (str_compare_caseless(header, "Retry-After:") == 0) {
return HTTP_HEADER_KEY_RETRY_AFTER;
} else if (str_compare_caseless(header, "Server:") == 0) {
return HTTP_HEADER_KEY_SERVER;
} else if (str_compare_caseless(header, "Set-Cookie:") == 0) {
return HTTP_HEADER_KEY_SET_COOKIE;
} else if (str_compare_caseless(header, "Strict-Transport-Security:") == 0) {
return HTTP_HEADER_KEY_STRICT_TRANSPORT_SECURITY;
} else if (str_compare_caseless(header, "Te:") == 0) {
return HTTP_HEADER_KEY_TE;
} else if (str_compare_caseless(header, "Trailer:") == 0) {
return HTTP_HEADER_KEY_TRAILER;
} else if (str_compare_caseless(header, "Transfer-Encoding:") == 0) {
return HTTP_HEADER_KEY_TRANSFER_ENCODING;
} else if (str_compare_caseless(header, "Upgrade:") == 0) {
return HTTP_HEADER_KEY_UPGRADE;
} else if (str_compare_caseless(header, "Vary:") == 0) {
return HTTP_HEADER_KEY_VARY;
} else if (str_compare_caseless(header, "Via:") == 0) {
return HTTP_HEADER_KEY_VIA;
} else if (str_compare_caseless(header, "Warning:") == 0) {
return HTTP_HEADER_KEY_WARNING;
} else if (str_compare_caseless(header, "Www-Authenticate:") == 0) {
return HTTP_HEADER_KEY_WWW_AUTHENTICATE;
} else if (str_compare_caseless(header, "X-Forwarded-For:") == 0) {
return HTTP_HEADER_KEY_X_FORWARDED_FOR;
} else if (str_compare_caseless(header, "X-Forwarded-Host:") == 0) {
return HTTP_HEADER_KEY_X_FORWARDED_HOST;
} else if (str_compare_caseless(header, "X-Forwarded-Proto:") == 0) {
return HTTP_HEADER_KEY_X_FORWARDED_PROTO;
} else if (str_compare_caseless(header, "X-Requested-With:") == 0) {
return HTTP_HEADER_KEY_X_REQUESTED_WITH;
} else if (str_compare_caseless(header, "X-Csrf-Token:") == 0) {
return HTTP_HEADER_KEY_X_CSRF_TOKEN;
} else if (str_compare_caseless(header, "X-Xss-Protection:") == 0) {
return HTTP_HEADER_KEY_X_XSS_PROTECTION;
} else if (str_compare_caseless(header, "X-Content-Type-Options:") == 0) {
return HTTP_HEADER_KEY_X_CONTENT_TYPE_OPTIONS;
} else if (str_compare_caseless(header, "X-Frame-Options:") == 0) {
return HTTP_HEADER_KEY_X_FRAME_OPTIONS;
} else if (str_compare_caseless(header, "X-Powered-By:") == 0) {
return HTTP_HEADER_KEY_X_POWERED_BY;
} else if (str_compare_caseless(header, "X-Upload-Id:") == 0) {
return HTTP_HEADER_KEY_X_UPLOAD_ID;
} else if (str_compare_caseless(header, "X-Rate-Limit-Limit:") == 0) {
return HTTP_HEADER_KEY_X_RATE_LIMIT_LIMIT;
} else if (str_compare_caseless(header, "X-Rate-Limit-Remaining:") == 0) {
return HTTP_HEADER_KEY_X_RATE_LIMIT_REMAINING;
} else if (str_compare_caseless(header, "X-Rate-Limit-Reset:") == 0) {
return HTTP_HEADER_KEY_X_RATE_LIMIT_RESET;
} else if (str_compare_caseless(header, "X-Ua-Compatible:") == 0) {
return HTTP_HEADER_KEY_X_UA_COMPATIBLE;
} else if (str_compare_caseless(header, "X-Dns-Prefetch-Control:") == 0) {
return HTTP_HEADER_KEY_X_DNS_PREFETCH_CONTROL;
} else if (str_compare_caseless(header, "X-Download-Options:") == 0) {
return HTTP_HEADER_KEY_X_DOWNLOAD_OPTIONS;
} else if (str_compare_caseless(header, "X-Permitted-Cross-Domain-Policies:") == 0) {
return HTTP_HEADER_KEY_X_PERMITTED_CROSS_DOMAIN_POLICIES;
} else if (str_compare_caseless(header, "Access-Control-Allow-Origin:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_ORIGIN;
} else if (str_compare_caseless(header, "Access-Control-Allow-Credentials:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_CREDENTIALS;
} else if (str_compare_caseless(header, "Access-Control-Allow-Headers:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_HEADERS;
} else if (str_compare_caseless(header, "Access-Control-Allow-Methods:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_ALLOW_METHODS;
} else if (str_compare_caseless(header, "Access-Control-Expose-Headers:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_EXPOSE_HEADERS;
} else if (str_compare_caseless(header, "Access-Control-Max-Age:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_MAX_AGE;
} else if (str_compare_caseless(header, "Access-Control-Request-Headers:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_REQUEST_HEADERS;
} else if (str_compare_caseless(header, "Access-Control-Request-Method:") == 0) {
return HTTP_HEADER_KEY_ACCESS_CONTROL_REQUEST_METHOD;
} else if (str_compare_caseless(header, "Content-Security-Policy:") == 0) {
return HTTP_HEADER_KEY_CONTENT_SECURITY_POLICY;
} else if (str_compare_caseless(header, "Permissions-Policy:") == 0) {
return HTTP_HEADER_KEY_PERMISSIONS_POLICY;
} else if (str_compare_caseless(header, "Referrer-Policy:") == 0) {
return HTTP_HEADER_KEY_REFERRER_POLICY;
} else if (str_compare_caseless(header, "Expect-Ct:") == 0) {
return HTTP_HEADER_KEY_EXPECT_CT;
} else if (str_compare_caseless(header, "Feature-Policy:") == 0) {
return HTTP_HEADER_KEY_FEATURE_POLICY;
} else if (str_compare_caseless(header, "Cross-Origin-Embedder-Policy:") == 0) {
return HTTP_HEADER_KEY_CROSS_ORIGIN_EMBEDDER_POLICY;
} else if (str_compare_caseless(header, "Cross-Origin-Opener-Policy:") == 0) {
return HTTP_HEADER_KEY_CROSS_ORIGIN_OPENER_POLICY;
} else if (str_compare_caseless(header, "Cross-Origin-Resource-Policy:") == 0) {
return HTTP_HEADER_KEY_CROSS_ORIGIN_RESOURCE_POLICY;
} else if (str_compare_caseless(header, "Sec-Websocket-Key:") == 0) {
return HTTP_HEADER_KEY_SEC_WEBSOCKET_KEY;
} else if (str_compare_caseless(header, "Sec-Websocket-Accept:") == 0) {
return HTTP_HEADER_KEY_SEC_WEBSOCKET_ACCEPT;
} else if (str_compare_caseless(header, "Sec-Websocket-Version:") == 0) {
return HTTP_HEADER_KEY_SEC_WEBSOCKET_VERSION;
} else if (str_compare_caseless(header, "Sec-Websocket-Protocol:") == 0) {
return HTTP_HEADER_KEY_SEC_WEBSOCKET_PROTOCOL;
} else if (str_compare_caseless(header, "Sec-Websocket-Extensions:") == 0) {
return HTTP_HEADER_KEY_SEC_WEBSOCKET_EXTENSIONS;
} else if (str_compare_caseless(header, "Alt-Svc:") == 0) {
return HTTP_HEADER_KEY_ALT_SVC;
} else if (str_compare_caseless(header, "Early-Data:") == 0) {
return HTTP_HEADER_KEY_EARLY_DATA;
} else if (str_compare_caseless(header, "Cf-Connecting-Ip:") == 0) {
return HTTP_HEADER_KEY_CF_CONNECTING_IP;
} else if (str_compare_caseless(header, "Cf-Ipcountry:") == 0) {
return HTTP_HEADER_KEY_CF_IPCOUNTRY;
} else if (str_compare_caseless(header, "Cf-Ray:") == 0) {
return HTTP_HEADER_KEY_CF_RAY;
} else if (str_compare_caseless(header, "True-Client-Ip:") == 0) {
return HTTP_HEADER_KEY_TRUE_CLIENT_IP;
} else if (str_compare_caseless(header, "X-Amz-Cf-Id:") == 0) {
return HTTP_HEADER_KEY_X_AMZ_CF_ID;
} else if (str_compare_caseless(header, "X-Amzn-Trace-Id:") == 0) {
return HTTP_HEADER_KEY_X_AMZN_TRACE_ID;
} else if (str_compare_caseless(header, "Dnt:") == 0) {
return HTTP_HEADER_KEY_DNT;
} else if (str_compare_caseless(header, "Save-Data:") == 0) {
return HTTP_HEADER_KEY_SAVE_DATA;
} else if (str_compare_caseless(header, "Downlink:") == 0) {
return HTTP_HEADER_KEY_DOWNLINK;
} else if (str_compare_caseless(header, "Ect:") == 0) {
return HTTP_HEADER_KEY_ECT;
} else if (str_compare_caseless(header, "Rtt:") == 0) {
return HTTP_HEADER_KEY_RTT;
} else if (str_compare_caseless(header, "Purpose:") == 0) {
return HTTP_HEADER_KEY_PURPOSE;
} else if (str_compare_caseless(header, "Sec-Fetch-Site:") == 0) {
return HTTP_HEADER_KEY_SEC_FETCH_SITE;
} else if (str_compare_caseless(header, "Sec-Fetch-Mode:") == 0) {
return HTTP_HEADER_KEY_SEC_FETCH_MODE;
} else if (str_compare_caseless(header, "Sec-Fetch-User:") == 0) {
return HTTP_HEADER_KEY_SEC_FETCH_USER;
} else if (str_compare_caseless(header, "Sec-Fetch-Dest:") == 0) {
return HTTP_HEADER_KEY_SEC_FETCH_DEST;
} else if (str_compare_caseless(header, "Service-Worker-Navigation-Preload:") == 0) {
return HTTP_HEADER_KEY_SERVICE_WORKER_NAVIGATION_PRELOAD;
} else if (str_compare_caseless(header, "Last-Event-Id:") == 0) {
return HTTP_HEADER_KEY_LAST_EVENT_ID;
} else if (str_compare_caseless(header, "Report-To:") == 0) {
return HTTP_HEADER_KEY_REPORT_TO;
} else if (str_compare_caseless(header, "Priority:") == 0) {
return HTTP_HEADER_KEY_PRIORITY;
} else if (str_compare_caseless(header, "Signature:") == 0) {
return HTTP_HEADER_KEY_SIGNATURE;
} else if (str_compare_caseless(header, "Signature-Key:") == 0) {
return HTTP_HEADER_KEY_SIGNATURE_KEY;
} else if (str_compare_caseless(header, "Forwarded:") == 0) {
return HTTP_HEADER_KEY_FORWARDED;
} else if (str_compare_caseless(header, "Original-Method:") == 0) {
return HTTP_HEADER_KEY_ORIGINAL_METHOD;
} else if (str_compare_caseless(header, "Original-Url:") == 0) {
return HTTP_HEADER_KEY_ORIGINAL_URL;
} else if (str_compare_caseless(header, "Original-Host:") == 0) {
return HTTP_HEADER_KEY_ORIGINAL_HOST;
}
return HTTP_HEADER_KEY_UNKNOWN;
}
#endif