This repository was archived by the owner on Dec 24, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 613
Expand file tree
/
Copy pathHttpHeaders.cs
More file actions
213 lines (138 loc) · 5.65 KB
/
Copy pathHttpHeaders.cs
File metadata and controls
213 lines (138 loc) · 5.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
using System;
using System.Collections.Generic;
namespace ServiceStack;
public static class HttpHeaders
{
public const string XParamOverridePrefix = "X-Param-Override-";
public const string XHttpMethodOverride = "X-Http-Method-Override";
public const string XAutoBatchCompleted = "X-AutoBatch-Completed"; // How many requests were completed before first failure
public const string XTag = "X-Tag";
public const string XUserAuthId = "X-UAId";
public const string XTrigger = "X-Trigger"; // Trigger Events on UserAgent
public const string XForwardedFor = "X-Forwarded-For"; // IP Address
public const string XForwardedPort = "X-Forwarded-Port"; // 80
public const string XForwardedProtocol = "X-Forwarded-Proto"; // http or https
public const string XRealIp = "X-Real-IP";
public const string XLocation = "X-Location";
public const string XStatus = "X-Status";
public const string XPoweredBy = "X-Powered-By";
public const string Referer = "Referer";
public const string CacheControl = "Cache-Control";
public const string IfModifiedSince = "If-Modified-Since";
public const string IfUnmodifiedSince = "If-Unmodified-Since";
public const string IfNoneMatch = "If-None-Match";
public const string IfMatch = "If-Match";
public const string LastModified = "Last-Modified";
public const string Accept = "Accept";
public const string AcceptEncoding = "Accept-Encoding";
public const string ContentType = "Content-Type";
public const string ContentEncoding = "Content-Encoding";
public const string ContentLength = "Content-Length";
public const string ContentDisposition = "Content-Disposition";
public const string Location = "Location";
public const string SetCookie = "Set-Cookie";
public const string ETag = "ETag";
public const string Age = "Age";
public const string Expires = "Expires";
public const string Vary = "Vary";
public const string Authorization = "Authorization";
public const string WwwAuthenticate = "WWW-Authenticate";
public const string AllowOrigin = "Access-Control-Allow-Origin";
public const string AllowMethods = "Access-Control-Allow-Methods";
public const string AllowHeaders = "Access-Control-Allow-Headers";
public const string AllowCredentials = "Access-Control-Allow-Credentials";
public const string ExposeHeaders = "Access-Control-Expose-Headers";
public const string AccessControlMaxAge = "Access-Control-Max-Age";
public const string Origin = "Origin";
public const string RequestMethod = "Access-Control-Request-Method";
public const string RequestHeaders = "Access-Control-Request-Headers";
public const string AcceptRanges = "Accept-Ranges";
public const string ContentRange = "Content-Range";
public const string Range = "Range";
public const string SOAPAction = "SOAPAction";
public const string Allow = "Allow";
public const string AcceptCharset = "Accept-Charset";
public const string AcceptLanguage = "Accept-Language";
public const string Connection = "Connection";
public const string Cookie = "Cookie";
public const string ContentLanguage = "Content-Language";
public const string Expect = "Expect";
public const string Pragma = "Pragma";
public const string ProxyAuthenticate = "Proxy-Authenticate";
public const string ProxyAuthorization = "Proxy-Authorization";
public const string ProxyConnection = "Proxy-Connection";
public const string SetCookie2 = "Set-Cookie2";
public const string TE = "TE";
public const string Trailer = "Trailer";
public const string TransferEncoding = "Transfer-Encoding";
public const string Upgrade = "Upgrade";
public const string Via = "Via";
public const string Warning = "Warning";
public const string Date = "Date";
public const string Host = "Host";
public const string UserAgent = "User-Agent";
public static HashSet<string> RestrictedHeaders = new(StringComparer.OrdinalIgnoreCase)
{
Accept,
Connection,
ContentLength,
ContentType,
Date,
Expect,
Host,
IfModifiedSince,
Range,
Referer,
TransferEncoding,
UserAgent,
ProxyConnection,
};
}
public static class CompressionTypes
{
public static readonly string[] AllCompressionTypes =
{
#if NET6_0_OR_GREATER
Brotli,
#endif
Deflate,
GZip,
};
#if NET6_0_OR_GREATER
public const string Default = Brotli;
#else
public const string Default = Deflate;
#endif
public const string Brotli = "br";
public const string Deflate = "deflate";
public const string GZip = "gzip";
public static bool IsValid(string compressionType)
{
#if NET6_0_OR_GREATER
return compressionType is Deflate or GZip or Brotli;
#else
return compressionType is Deflate or GZip;
#endif
}
public static void AssertIsValid(string compressionType)
{
if (!IsValid(compressionType))
{
throw new NotSupportedException(compressionType
+ " is not a supported compression type. Valid types: " + string.Join(", ", AllCompressionTypes));
}
}
public static string GetExtension(string compressionType)
{
switch (compressionType)
{
case Brotli:
case Deflate:
case GZip:
return "." + compressionType;
default:
throw new NotSupportedException(
"Unknown compressionType: " + compressionType);
}
}
}