diff options
author | 2022-06-22 23:21:48 -0700 | |
---|---|---|
committer | 2022-06-22 23:21:48 -0700 | |
commit | 729d445b6885f69dd2c6355f38707bd42851c791 (patch) | |
tree | f87a7c408929ea3f57bbb7ace380cf869da83c0e /src/bun.js/bindings/webcore/HTTPHeaderNames.gperf | |
parent | 25f820c6bf1d8ec6d444ef579cc036b8c0607b75 (diff) | |
download | bun-jarred/rename.tar.gz bun-jarred/rename.tar.zst bun-jarred/rename.zip |
change the directory structurejarred/rename
Diffstat (limited to 'src/bun.js/bindings/webcore/HTTPHeaderNames.gperf')
-rw-r--r-- | src/bun.js/bindings/webcore/HTTPHeaderNames.gperf | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/src/bun.js/bindings/webcore/HTTPHeaderNames.gperf b/src/bun.js/bindings/webcore/HTTPHeaderNames.gperf new file mode 100644 index 000000000..66a4b24e8 --- /dev/null +++ b/src/bun.js/bindings/webcore/HTTPHeaderNames.gperf @@ -0,0 +1,295 @@ + +%{ +/* + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +/// This file is generated by create-http-header-name-table, do not edit. + +#include "config.h" +#include "HTTPHeaderNames.h" + +#include <wtf/text/StringView.h> + +IGNORE_WARNINGS_BEGIN("implicit-fallthrough") + +// Older versions of gperf like to use the `register` keyword. +#define register + +namespace WebCore { + +static const struct HeaderNameString { + const char* const name; + unsigned length; +} headerNameStrings[] = { + { "Accept", 6 }, + { "Accept-Charset", 14 }, + { "Accept-Encoding", 15 }, + { "Accept-Language", 15 }, + { "Accept-Ranges", 13 }, + { "Access-Control-Allow-Credentials", 32 }, + { "Access-Control-Allow-Headers", 28 }, + { "Access-Control-Allow-Methods", 28 }, + { "Access-Control-Allow-Origin", 27 }, + { "Access-Control-Expose-Headers", 29 }, + { "Access-Control-Max-Age", 22 }, + { "Access-Control-Request-Headers", 30 }, + { "Access-Control-Request-Method", 29 }, + { "Age", 3 }, + { "Authorization", 13 }, + { "Cache-Control", 13 }, + { "Connection", 10 }, + { "Content-Disposition", 19 }, + { "Content-Encoding", 16 }, + { "Content-Language", 16 }, + { "Content-Length", 14 }, + { "Content-Location", 16 }, + { "Content-Range", 13 }, + { "Content-Security-Policy", 23 }, + { "Content-Security-Policy-Report-Only", 35 }, + { "Content-Type", 12 }, + { "Cookie", 6 }, + { "Cookie2", 7 }, + { "Cross-Origin-Embedder-Policy", 28 }, + { "Cross-Origin-Embedder-Policy-Report-Only", 40 }, + { "Cross-Origin-Opener-Policy", 26 }, + { "Cross-Origin-Opener-Policy-Report-Only", 38 }, + { "Cross-Origin-Resource-Policy", 28 }, + { "DNT", 3 }, + { "Date", 4 }, + { "Default-Style", 13 }, + { "ETag", 4 }, + { "Expect", 6 }, + { "Expires", 7 }, + { "Host", 4 }, + { "Icy-MetaInt", 11 }, + { "Icy-Metadata", 12 }, + { "If-Match", 8 }, + { "If-Modified-Since", 17 }, + { "If-None-Match", 13 }, + { "If-Range", 8 }, + { "If-Unmodified-Since", 19 }, + { "Keep-Alive", 10 }, + { "Last-Event-ID", 13 }, + { "Last-Modified", 13 }, + { "Link", 4 }, + { "Location", 8 }, + { "Origin", 6 }, + { "Ping-From", 9 }, + { "Ping-To", 7 }, + { "Pragma", 6 }, + { "Proxy-Authorization", 19 }, + { "Purpose", 7 }, + { "Range", 5 }, + { "Referer", 7 }, + { "Referrer-Policy", 15 }, + { "Refresh", 7 }, + { "Report-To", 9 }, + { "Sec-Fetch-Dest", 14 }, + { "Sec-Fetch-Mode", 14 }, + { "Sec-WebSocket-Accept", 20 }, + { "Sec-WebSocket-Extensions", 24 }, + { "Sec-WebSocket-Key", 17 }, + { "Sec-WebSocket-Protocol", 22 }, + { "Sec-WebSocket-Version", 21 }, + { "Server-Timing", 13 }, + { "Service-Worker", 14 }, + { "Service-Worker-Allowed", 22 }, + { "Service-Worker-Navigation-Preload", 33 }, + { "Set-Cookie", 10 }, + { "Set-Cookie2", 11 }, + { "SourceMap", 9 }, + { "TE", 2 }, + { "Timing-Allow-Origin", 19 }, + { "Trailer", 7 }, + { "Transfer-Encoding", 17 }, + { "Upgrade", 7 }, + { "Upgrade-Insecure-Requests", 25 }, + { "User-Agent", 10 }, + { "Vary", 4 }, + { "Via", 3 }, + { "X-Content-Type-Options", 22 }, + { "X-DNS-Prefetch-Control", 22 }, + { "X-Frame-Options", 15 }, + { "X-SourceMap", 11 }, + { "X-Temp-Tablet", 13 }, + { "X-XSS-Protection", 16 }, +}; + + +%} + +%language=C++ +%readonly-tables +%global-table +%compare-strncmp +%ignore-case +%struct-type +struct HeaderNameHashEntry { + const char* name; + HTTPHeaderName headerName; +}; +%define class-name HTTPHeaderNamesHash +%define lookup-function-name findHeaderNameImpl +%define hash-function-name header_name_hash_function +%define word-array-name header_name_wordlist +%enum +%% +Accept, HTTPHeaderName::Accept +Accept-Charset, HTTPHeaderName::AcceptCharset +Accept-Encoding, HTTPHeaderName::AcceptEncoding +Accept-Language, HTTPHeaderName::AcceptLanguage +Accept-Ranges, HTTPHeaderName::AcceptRanges +Access-Control-Allow-Credentials, HTTPHeaderName::AccessControlAllowCredentials +Access-Control-Allow-Headers, HTTPHeaderName::AccessControlAllowHeaders +Access-Control-Allow-Methods, HTTPHeaderName::AccessControlAllowMethods +Access-Control-Allow-Origin, HTTPHeaderName::AccessControlAllowOrigin +Access-Control-Expose-Headers, HTTPHeaderName::AccessControlExposeHeaders +Access-Control-Max-Age, HTTPHeaderName::AccessControlMaxAge +Access-Control-Request-Headers, HTTPHeaderName::AccessControlRequestHeaders +Access-Control-Request-Method, HTTPHeaderName::AccessControlRequestMethod +Age, HTTPHeaderName::Age +Authorization, HTTPHeaderName::Authorization +Cache-Control, HTTPHeaderName::CacheControl +Connection, HTTPHeaderName::Connection +Content-Disposition, HTTPHeaderName::ContentDisposition +Content-Encoding, HTTPHeaderName::ContentEncoding +Content-Language, HTTPHeaderName::ContentLanguage +Content-Length, HTTPHeaderName::ContentLength +Content-Location, HTTPHeaderName::ContentLocation +Content-Range, HTTPHeaderName::ContentRange +Content-Security-Policy, HTTPHeaderName::ContentSecurityPolicy +Content-Security-Policy-Report-Only, HTTPHeaderName::ContentSecurityPolicyReportOnly +Content-Type, HTTPHeaderName::ContentType +Cookie, HTTPHeaderName::Cookie +Cookie2, HTTPHeaderName::Cookie2 +Cross-Origin-Embedder-Policy, HTTPHeaderName::CrossOriginEmbedderPolicy +Cross-Origin-Embedder-Policy-Report-Only, HTTPHeaderName::CrossOriginEmbedderPolicyReportOnly +Cross-Origin-Opener-Policy, HTTPHeaderName::CrossOriginOpenerPolicy +Cross-Origin-Opener-Policy-Report-Only, HTTPHeaderName::CrossOriginOpenerPolicyReportOnly +Cross-Origin-Resource-Policy, HTTPHeaderName::CrossOriginResourcePolicy +DNT, HTTPHeaderName::DNT +Date, HTTPHeaderName::Date +Default-Style, HTTPHeaderName::DefaultStyle +ETag, HTTPHeaderName::ETag +Expect, HTTPHeaderName::Expect +Expires, HTTPHeaderName::Expires +Host, HTTPHeaderName::Host +Icy-MetaInt, HTTPHeaderName::IcyMetaInt +Icy-Metadata, HTTPHeaderName::IcyMetadata +If-Match, HTTPHeaderName::IfMatch +If-Modified-Since, HTTPHeaderName::IfModifiedSince +If-None-Match, HTTPHeaderName::IfNoneMatch +If-Range, HTTPHeaderName::IfRange +If-Unmodified-Since, HTTPHeaderName::IfUnmodifiedSince +Keep-Alive, HTTPHeaderName::KeepAlive +Last-Event-ID, HTTPHeaderName::LastEventID +Last-Modified, HTTPHeaderName::LastModified +Link, HTTPHeaderName::Link +Location, HTTPHeaderName::Location +Origin, HTTPHeaderName::Origin +Ping-From, HTTPHeaderName::PingFrom +Ping-To, HTTPHeaderName::PingTo +Pragma, HTTPHeaderName::Pragma +Proxy-Authorization, HTTPHeaderName::ProxyAuthorization +Purpose, HTTPHeaderName::Purpose +Range, HTTPHeaderName::Range +Referer, HTTPHeaderName::Referer +Referrer-Policy, HTTPHeaderName::ReferrerPolicy +Refresh, HTTPHeaderName::Refresh +Report-To, HTTPHeaderName::ReportTo +Sec-Fetch-Dest, HTTPHeaderName::SecFetchDest +Sec-Fetch-Mode, HTTPHeaderName::SecFetchMode +Sec-WebSocket-Accept, HTTPHeaderName::SecWebSocketAccept +Sec-WebSocket-Extensions, HTTPHeaderName::SecWebSocketExtensions +Sec-WebSocket-Key, HTTPHeaderName::SecWebSocketKey +Sec-WebSocket-Protocol, HTTPHeaderName::SecWebSocketProtocol +Sec-WebSocket-Version, HTTPHeaderName::SecWebSocketVersion +Server-Timing, HTTPHeaderName::ServerTiming +Service-Worker, HTTPHeaderName::ServiceWorker +Service-Worker-Allowed, HTTPHeaderName::ServiceWorkerAllowed +Service-Worker-Navigation-Preload, HTTPHeaderName::ServiceWorkerNavigationPreload +Set-Cookie, HTTPHeaderName::SetCookie +Set-Cookie2, HTTPHeaderName::SetCookie2 +SourceMap, HTTPHeaderName::SourceMap +TE, HTTPHeaderName::TE +Timing-Allow-Origin, HTTPHeaderName::TimingAllowOrigin +Trailer, HTTPHeaderName::Trailer +Transfer-Encoding, HTTPHeaderName::TransferEncoding +Upgrade, HTTPHeaderName::Upgrade +Upgrade-Insecure-Requests, HTTPHeaderName::UpgradeInsecureRequests +User-Agent, HTTPHeaderName::UserAgent +Vary, HTTPHeaderName::Vary +Via, HTTPHeaderName::Via +X-Content-Type-Options, HTTPHeaderName::XContentTypeOptions +X-DNS-Prefetch-Control, HTTPHeaderName::XDNSPrefetchControl +X-Frame-Options, HTTPHeaderName::XFrameOptions +X-SourceMap, HTTPHeaderName::XSourceMap +X-Temp-Tablet, HTTPHeaderName::XTempTablet +X-XSS-Protection, HTTPHeaderName::XXSSProtection +%% +bool findHTTPHeaderName(StringView stringView, HTTPHeaderName& headerName) +{ + unsigned length = stringView.length(); + if (length > maxHTTPHeaderNameLength || length < minHTTPHeaderNameLength) + return false; + + if (stringView.is8Bit()) { + if (auto nameAndString = HTTPHeaderNamesHash::findHeaderNameImpl(reinterpret_cast<const char*>(stringView.characters8()), length)) { + headerName = nameAndString->headerName; + return true; + } + } else { + LChar characters[maxHTTPHeaderNameLength]; + for (unsigned i = 0; i < length; ++i) { + UChar character = stringView.characters16()[i]; + if (!isASCII(character)) + return false; + + characters[i] = static_cast<LChar>(character); + } + + if (auto nameAndString = HTTPHeaderNamesHash::findHeaderNameImpl(reinterpret_cast<const char*>(characters), length)) { + headerName = nameAndString->headerName; + return true; + } + } + + return false; +} + +StringView httpHeaderNameString(HTTPHeaderName headerName) +{ + ASSERT(static_cast<unsigned>(headerName) < numHTTPHeaderNames); + + const auto& name = headerNameStrings[static_cast<unsigned>(headerName)]; + + return StringView { reinterpret_cast<const LChar*>(name.name), static_cast<unsigned>(name.length) }; +} + +} // namespace WebCore + +#if defined(__clang__) +IGNORE_WARNINGS_END +#endif |