Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
NameValueHeaderValue.cs
Go to the documentation of this file.
1
using
System.Diagnostics.CodeAnalysis
;
2
using
System.Globalization
;
3
using
System.Text
;
4
5
namespace
System.Net.Http.Headers
;
6
7
public
class
NameValueHeaderValue
:
ICloneable
8
{
9
private
static
readonly Func<NameValueHeaderValue>
s_defaultNameValueCreator
=
CreateNameValue
;
10
11
private
string
_name
;
12
13
private
string
_value
;
14
15
public
string
Name
=>
_name
;
16
17
public
string
?
Value
18
{
19
get
20
{
21
return
_value
;
22
}
23
set
24
{
25
CheckValueFormat
(
value
);
26
_value
=
value
;
27
}
28
}
29
30
internal
NameValueHeaderValue
()
31
{
32
}
33
34
public
NameValueHeaderValue
(
string
name)
35
: this(name, null)
36
{
37
}
38
39
public
NameValueHeaderValue
(
string
name,
string
?
value
)
40
{
41
CheckNameValueFormat
(name,
value
);
42
_name
= name;
43
_value
=
value
;
44
}
45
46
protected
internal
NameValueHeaderValue
(
NameValueHeaderValue
source
)
47
{
48
_name
=
source
._name;
49
_value
=
source
._value;
50
}
51
52
public
override
int
GetHashCode
()
53
{
54
int
hashCode =
StringComparer
.
OrdinalIgnoreCase
.GetHashCode(
_name
);
55
if
(!
string
.IsNullOrEmpty(
_value
))
56
{
57
if
(
_value
[0] ==
'"'
)
58
{
59
return
hashCode ^
_value
.GetHashCode();
60
}
61
return
hashCode ^
StringComparer
.
OrdinalIgnoreCase
.GetHashCode(
_value
);
62
}
63
return
hashCode;
64
}
65
66
public
override
bool
Equals
([NotNullWhen(
true
)]
object
?
obj
)
67
{
68
if
(!(
obj
is
NameValueHeaderValue
nameValueHeaderValue))
69
{
70
return
false
;
71
}
72
if
(!
string
.
Equals
(
_name
, nameValueHeaderValue._name,
StringComparison
.OrdinalIgnoreCase))
73
{
74
return
false
;
75
}
76
if
(
string
.IsNullOrEmpty(
_value
))
77
{
78
return
string
.IsNullOrEmpty(nameValueHeaderValue._value);
79
}
80
if
(
_value
[0] ==
'"'
)
81
{
82
return
string
.Equals(
_value
, nameValueHeaderValue._value,
StringComparison
.Ordinal);
83
}
84
return
string
.Equals(
_value
, nameValueHeaderValue._value,
StringComparison
.OrdinalIgnoreCase);
85
}
86
87
public
static
NameValueHeaderValue
Parse
(
string
?
input
)
88
{
89
int
index
= 0;
90
return
(
NameValueHeaderValue
)
GenericHeaderParser
.
SingleValueNameValueParser
.ParseValue(
input
,
null
, ref
index
);
91
}
92
93
public
static
bool
TryParse
([NotNullWhen(
true
)]
string
?
input
, [NotNullWhen(
true
)] out
NameValueHeaderValue
? parsedValue)
94
{
95
int
index
= 0;
96
parsedValue =
null
;
97
if
(
GenericHeaderParser
.
SingleValueNameValueParser
.TryParseValue(
input
,
null
, ref
index
, out var parsedValue2))
98
{
99
parsedValue = (
NameValueHeaderValue
)parsedValue2;
100
return
true
;
101
}
102
return
false
;
103
}
104
105
public
override
string
ToString
()
106
{
107
if
(!
string
.IsNullOrEmpty(
_value
))
108
{
109
return
_name
+
"="
+
_value
;
110
}
111
return
_name
;
112
}
113
114
private
void
AddToStringBuilder
(
StringBuilder
sb)
115
{
116
if
(GetType() != typeof(
NameValueHeaderValue
))
117
{
118
sb.
Append
(
ToString
());
119
return
;
120
}
121
sb.
Append
(
_name
);
122
if
(!
string
.IsNullOrEmpty(
_value
))
123
{
124
sb.
Append
(
'='
);
125
sb.
Append
(
_value
);
126
}
127
}
128
129
internal
static
void
ToString
(
ObjectCollection<NameValueHeaderValue>
values
,
char
separator,
bool
leadingSeparator,
StringBuilder
destination
)
130
{
131
if
(
values
==
null
||
values
.Count == 0)
132
{
133
return
;
134
}
135
foreach
(
NameValueHeaderValue
value
in
values
)
136
{
137
if
(leadingSeparator ||
destination
.Length > 0)
138
{
139
destination
.Append(separator);
140
destination
.Append(
' '
);
141
}
142
value
.AddToStringBuilder(
destination
);
143
}
144
}
145
146
internal
static
int
GetHashCode
(
ObjectCollection<NameValueHeaderValue>
values
)
147
{
148
if
(
values
==
null
||
values
.Count == 0)
149
{
150
return
0;
151
}
152
int
num = 0;
153
foreach
(
NameValueHeaderValue
value
in
values
)
154
{
155
num ^=
value
.GetHashCode();
156
}
157
return
num;
158
}
159
160
internal
static
int
GetNameValueLength
(
string
input
,
int
startIndex
, out
NameValueHeaderValue
parsedValue)
161
{
162
return
GetNameValueLength
(
input
,
startIndex
,
s_defaultNameValueCreator
, out parsedValue);
163
}
164
165
internal
static
int
GetNameValueLength
(
string
input
,
int
startIndex
, Func<NameValueHeaderValue> nameValueCreator, out
NameValueHeaderValue
parsedValue)
166
{
167
parsedValue =
null
;
168
if
(
string
.IsNullOrEmpty(
input
) ||
startIndex
>=
input
.Length)
169
{
170
return
0;
171
}
172
int
tokenLength =
HttpRuleParser
.
GetTokenLength
(
input
,
startIndex
);
173
if
(tokenLength == 0)
174
{
175
return
0;
176
}
177
string
name =
input
.Substring(
startIndex
, tokenLength);
178
int
num =
startIndex
+ tokenLength;
179
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
180
if
(num ==
input
.Length ||
input
[num] !=
'='
)
181
{
182
parsedValue = nameValueCreator();
183
parsedValue._name = name;
184
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
185
return
num -
startIndex
;
186
}
187
num++;
188
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
189
int
valueLength =
GetValueLength
(
input
, num);
190
if
(valueLength == 0)
191
{
192
return
0;
193
}
194
parsedValue = nameValueCreator();
195
parsedValue._name = name;
196
parsedValue._value =
input
.Substring(num, valueLength);
197
num += valueLength;
198
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
199
return
num -
startIndex
;
200
}
201
202
internal
static
int
GetNameValueListLength
(
string
input
,
int
startIndex
,
char
delimiter,
ObjectCollection<NameValueHeaderValue>
nameValueCollection)
203
{
204
if
(
string
.IsNullOrEmpty(
input
) ||
startIndex
>=
input
.Length)
205
{
206
return
0;
207
}
208
int
num =
startIndex
+
HttpRuleParser
.
GetWhitespaceLength
(
input
,
startIndex
);
209
while
(
true
)
210
{
211
NameValueHeaderValue
parsedValue;
212
int
nameValueLength =
GetNameValueLength
(
input
, num,
s_defaultNameValueCreator
, out parsedValue);
213
if
(nameValueLength == 0)
214
{
215
return
0;
216
}
217
nameValueCollection.
Add
(parsedValue);
218
num += nameValueLength;
219
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
220
if
(num ==
input
.Length ||
input
[num] != delimiter)
221
{
222
break
;
223
}
224
num++;
225
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
226
}
227
return
num -
startIndex
;
228
}
229
230
internal
static
NameValueHeaderValue
Find
(
ObjectCollection<NameValueHeaderValue>
values
,
string
name)
231
{
232
if
(
values
==
null
||
values
.Count == 0)
233
{
234
return
null
;
235
}
236
foreach
(
NameValueHeaderValue
value
in
values
)
237
{
238
if
(
string
.
Equals
(
value
.Name, name,
StringComparison
.OrdinalIgnoreCase))
239
{
240
return
value
;
241
}
242
}
243
return
null
;
244
}
245
246
internal
static
int
GetValueLength
(
string
input
,
int
startIndex
)
247
{
248
if
(
startIndex
>=
input
.Length)
249
{
250
return
0;
251
}
252
int
length
=
HttpRuleParser
.
GetTokenLength
(
input
,
startIndex
);
253
if
(
length
== 0 &&
HttpRuleParser
.
GetQuotedStringLength
(
input
,
startIndex
, out
length
) != 0)
254
{
255
return
0;
256
}
257
return
length
;
258
}
259
260
private
static
void
CheckNameValueFormat
(
string
name,
string
value
)
261
{
262
HeaderUtilities
.
CheckValidToken
(name,
"name"
);
263
CheckValueFormat
(
value
);
264
}
265
266
private
static
void
CheckValueFormat
(
string
value
)
267
{
268
if
(
string
.IsNullOrEmpty(
value
))
269
{
270
return
;
271
}
272
if
(
value
[0] ==
' '
||
value
[0] ==
'\t'
||
value
[^1] ==
' '
||
value
[^1] ==
'\t'
)
273
{
274
ThrowFormatException(
value
);
275
}
276
if
(
value
[0] ==
'"'
)
277
{
278
if
(
HttpRuleParser
.
GetQuotedStringLength
(
value
, 0, out var
length
) != 0 ||
length
!=
value
.Length)
279
{
280
ThrowFormatException(
value
);
281
}
282
}
283
else
if
(
HttpRuleParser
.
ContainsNewLine
(
value
))
284
{
285
ThrowFormatException(
value
);
286
}
287
static
void
ThrowFormatException(
string
value
)
288
{
289
throw
new
FormatException
(
System
.
SR
.
Format
(
CultureInfo
.
InvariantCulture
,
System
.
SR
.
net_http_headers_invalid_value
,
value
));
290
}
291
}
292
293
private
static
NameValueHeaderValue
CreateNameValue
()
294
{
295
return
new
NameValueHeaderValue
();
296
}
297
298
object
ICloneable
.
Clone
()
299
{
300
return
new
NameValueHeaderValue
(
this
);
301
}
302
}
System.FormatException
Definition
FormatException.cs:9
System.Globalization.CultureInfo.InvariantCulture
static CultureInfo InvariantCulture
Definition
CultureInfo.cs:144
System.Globalization.CultureInfo
Definition
CultureInfo.cs:8
System.Net.Http.Headers.GenericHeaderParser.SingleValueNameValueParser
static readonly GenericHeaderParser SingleValueNameValueParser
Definition
GenericHeaderParser.cs:17
System.Net.Http.Headers.GenericHeaderParser
Definition
GenericHeaderParser.cs:6
System.Net.Http.Headers.HeaderUtilities.CheckValidToken
static void CheckValidToken(string value, string parameterName)
Definition
HeaderUtilities.cs:105
System.Net.Http.Headers.HeaderUtilities
Definition
HeaderUtilities.cs:9
System.Net.Http.Headers.NameValueHeaderValue.Value
string? Value
Definition
NameValueHeaderValue.cs:18
System.Net.Http.Headers.NameValueHeaderValue.CreateNameValue
static NameValueHeaderValue CreateNameValue()
Definition
NameValueHeaderValue.cs:293
System.Net.Http.Headers.NameValueHeaderValue.GetNameValueListLength
static int GetNameValueListLength(string input, int startIndex, char delimiter, ObjectCollection< NameValueHeaderValue > nameValueCollection)
Definition
NameValueHeaderValue.cs:202
System.Net.Http.Headers.NameValueHeaderValue.GetNameValueLength
static int GetNameValueLength(string input, int startIndex, Func< NameValueHeaderValue > nameValueCreator, out NameValueHeaderValue parsedValue)
Definition
NameValueHeaderValue.cs:165
System.Net.Http.Headers.NameValueHeaderValue.Name
string Name
Definition
NameValueHeaderValue.cs:15
System.Net.Http.Headers.NameValueHeaderValue.Find
static NameValueHeaderValue Find(ObjectCollection< NameValueHeaderValue > values, string name)
Definition
NameValueHeaderValue.cs:230
System.Net.Http.Headers.NameValueHeaderValue.AddToStringBuilder
void AddToStringBuilder(StringBuilder sb)
Definition
NameValueHeaderValue.cs:114
System.Net.Http.Headers.NameValueHeaderValue.CheckNameValueFormat
static void CheckNameValueFormat(string name, string value)
Definition
NameValueHeaderValue.cs:260
System.Net.Http.Headers.NameValueHeaderValue.GetHashCode
override int GetHashCode()
Definition
NameValueHeaderValue.cs:52
System.Net.Http.Headers.NameValueHeaderValue.GetHashCode
static int GetHashCode(ObjectCollection< NameValueHeaderValue > values)
Definition
NameValueHeaderValue.cs:146
System.Net.Http.Headers.NameValueHeaderValue.ToString
static void ToString(ObjectCollection< NameValueHeaderValue > values, char separator, bool leadingSeparator, StringBuilder destination)
Definition
NameValueHeaderValue.cs:129
System.Net.Http.Headers.NameValueHeaderValue.NameValueHeaderValue
NameValueHeaderValue(string name, string? value)
Definition
NameValueHeaderValue.cs:39
System.Net.Http.Headers.NameValueHeaderValue.GetNameValueLength
static int GetNameValueLength(string input, int startIndex, out NameValueHeaderValue parsedValue)
Definition
NameValueHeaderValue.cs:160
System.Net.Http.Headers.NameValueHeaderValue.NameValueHeaderValue
NameValueHeaderValue(NameValueHeaderValue source)
Definition
NameValueHeaderValue.cs:46
System.Net.Http.Headers.NameValueHeaderValue.NameValueHeaderValue
NameValueHeaderValue()
Definition
NameValueHeaderValue.cs:30
System.Net.Http.Headers.NameValueHeaderValue.NameValueHeaderValue
NameValueHeaderValue(string name)
Definition
NameValueHeaderValue.cs:34
System.Net.Http.Headers.NameValueHeaderValue.Equals
override bool Equals([NotNullWhen(true)] object? obj)
Definition
NameValueHeaderValue.cs:66
System.Net.Http.Headers.NameValueHeaderValue._name
string _name
Definition
NameValueHeaderValue.cs:11
System.Net.Http.Headers.NameValueHeaderValue.ToString
override string ToString()
Definition
NameValueHeaderValue.cs:105
System.Net.Http.Headers.NameValueHeaderValue._value
string _value
Definition
NameValueHeaderValue.cs:13
System.Net.Http.Headers.NameValueHeaderValue.TryParse
static bool TryParse([NotNullWhen(true)] string? input, [NotNullWhen(true)] out NameValueHeaderValue? parsedValue)
Definition
NameValueHeaderValue.cs:93
System.Net.Http.Headers.NameValueHeaderValue.GetValueLength
static int GetValueLength(string input, int startIndex)
Definition
NameValueHeaderValue.cs:246
System.Net.Http.Headers.NameValueHeaderValue.CheckValueFormat
static void CheckValueFormat(string value)
Definition
NameValueHeaderValue.cs:266
System.Net.Http.Headers.NameValueHeaderValue.Parse
static NameValueHeaderValue Parse(string? input)
Definition
NameValueHeaderValue.cs:87
System.Net.Http.Headers.NameValueHeaderValue.s_defaultNameValueCreator
static readonly Func< NameValueHeaderValue > s_defaultNameValueCreator
Definition
NameValueHeaderValue.cs:9
System.Net.Http.Headers.NameValueHeaderValue
Definition
NameValueHeaderValue.cs:8
System.Net.Http.Headers.ObjectCollection.Add
void Add(T item)
Definition
ObjectCollection.cs:95
System.Net.Http.Headers.ObjectCollection
Definition
ObjectCollection.cs:10
System.Net.Http.HttpRuleParser.ContainsNewLine
static bool ContainsNewLine(string value, int startIndex=0)
Definition
HttpRuleParser.cs:109
System.Net.Http.HttpRuleParser.GetQuotedStringLength
static HttpParseResult GetQuotedStringLength(string input, int startIndex, out int length)
Definition
HttpRuleParser.cs:187
System.Net.Http.HttpRuleParser.GetTokenLength
static int GetTokenLength(string input, int startIndex)
Definition
HttpRuleParser.cs:47
System.Net.Http.HttpRuleParser.GetWhitespaceLength
static int GetWhitespaceLength(string input, int startIndex)
Definition
HttpRuleParser.cs:92
System.Net.Http.HttpRuleParser
Definition
HttpRuleParser.cs:6
System.SR.Format
static string Format(string resourceFormat, object p1)
Definition
SR.cs:118
System.SR.net_http_headers_invalid_value
static string net_http_headers_invalid_value
Definition
SR.cs:26
System.SR
Definition
SR.cs:7
System.StringComparer.OrdinalIgnoreCase
static StringComparer OrdinalIgnoreCase
Definition
StringComparer.cs:23
System.StringComparer
Definition
StringComparer.cs:12
System.Text.StringBuilder.Append
StringBuilder Append(char value, int repeatCount)
Definition
StringBuilder.cs:744
System.Text.StringBuilder
Definition
StringBuilder.cs:14
System.ICloneable.Clone
object Clone()
System.ICloneable
Definition
ICloneable.cs:4
System.Diagnostics.CodeAnalysis
Definition
AllowNullAttribute.cs:1
System.Globalization
Definition
Calendar.cs:1
System.Net.Http.Headers
Definition
AltSvcHeaderParser.cs:4
System.Net.CookieToken.Equals
@ Equals
System.Text
Definition
ConsoleEncoding.cs:1
System.ExceptionArgument.startIndex
@ startIndex
System.ExceptionArgument.value
@ value
System.ExceptionArgument.length
@ length
System.ExceptionArgument.source
@ source
System.ExceptionArgument.destination
@ destination
System.ExceptionArgument.index
@ index
System.ExceptionArgument.input
@ input
System.ExceptionArgument.obj
@ obj
System.ExceptionArgument.values
@ values
System.StringComparison
StringComparison
Definition
StringComparison.cs:4
System
Definition
BlockingCollection.cs:8
source
System.Net.Http
System.Net.Http.Headers
NameValueHeaderValue.cs
Generated by
1.10.0