Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MediaTypeHeaderValue.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
using
System.Diagnostics.CodeAnalysis
;
3
using
System.Globalization
;
4
using
System.Text
;
5
6
namespace
System.Net.Http.Headers
;
7
8
public
class
MediaTypeHeaderValue
:
ICloneable
9
{
10
private
ObjectCollection<NameValueHeaderValue>
_parameters
;
11
12
private
string
_mediaType
;
13
14
public
string
? CharSet
15
{
16
get
17
{
18
return
NameValueHeaderValue
.
Find
(
_parameters
,
"charset"
)?.Value;
19
}
20
set
21
{
22
NameValueHeaderValue
nameValueHeaderValue
=
NameValueHeaderValue
.
Find
(
_parameters
,
"charset"
);
23
if
(
string
.IsNullOrEmpty(
value
))
24
{
25
if
(
nameValueHeaderValue
!=
null
)
26
{
27
_parameters
.
Remove
(
nameValueHeaderValue
);
28
}
29
}
30
else
if
(
nameValueHeaderValue
!=
null
)
31
{
32
nameValueHeaderValue.Value =
value
;
33
}
34
else
35
{
36
Parameters
.
Add
(
new
NameValueHeaderValue
(
"charset"
,
value
));
37
}
38
}
39
}
40
41
public
ICollection<NameValueHeaderValue>
Parameters
=>
_parameters
?? (
_parameters
=
new
ObjectCollection<NameValueHeaderValue>
());
42
43
public
string
?
MediaType
44
{
45
get
46
{
47
return
_mediaType
;
48
}
49
[
param
:
DisallowNull
]
50
set
51
{
52
CheckMediaTypeFormat
(
value
,
"value"
);
53
_mediaType
=
value
;
54
}
55
}
56
57
internal
MediaTypeHeaderValue
()
58
{
59
}
60
61
protected
MediaTypeHeaderValue
(
MediaTypeHeaderValue
source
)
62
{
63
_mediaType
=
source
._mediaType;
64
_parameters
=
source
._parameters.Clone();
65
}
66
67
public
MediaTypeHeaderValue
(
string
mediaType)
68
{
69
CheckMediaTypeFormat
(mediaType,
"mediaType"
);
70
_mediaType
= mediaType;
71
}
72
73
public
override
string
ToString
()
74
{
75
if
(
_parameters
==
null
||
_parameters
.
Count
== 0)
76
{
77
return
_mediaType
??
string
.Empty;
78
}
79
StringBuilder
stringBuilder
=
System
.
Text
.
StringBuilderCache
.
Acquire
();
80
stringBuilder
.Append(
_mediaType
);
81
NameValueHeaderValue
.
ToString
(
_parameters
,
';'
,
leadingSeparator
:
true
,
stringBuilder
);
82
return
System
.
Text
.
StringBuilderCache
.
GetStringAndRelease
(
stringBuilder
);
83
}
84
85
public
override
bool
Equals
([
NotNullWhen
(
true
)]
object
?
obj
)
86
{
87
if
(!(
obj
is
MediaTypeHeaderValue
mediaTypeHeaderValue
))
88
{
89
return
false
;
90
}
91
if
(
string
.
Equals
(
_mediaType
,
mediaTypeHeaderValue
._mediaType,
StringComparison
.OrdinalIgnoreCase))
92
{
93
return
HeaderUtilities
.AreEqualCollections(
_parameters
,
mediaTypeHeaderValue
._parameters);
94
}
95
return
false
;
96
}
97
98
public
override
int
GetHashCode
()
99
{
100
return
StringComparer
.
OrdinalIgnoreCase
.GetHashCode(
_mediaType
) ^
NameValueHeaderValue
.
GetHashCode
(
_parameters
);
101
}
102
103
public
static
MediaTypeHeaderValue
Parse
(
string
?
input
)
104
{
105
int
index
= 0;
106
return
(
MediaTypeHeaderValue
)
MediaTypeHeaderParser
.
SingleValueParser
.ParseValue(
input
,
null
,
ref
index
);
107
}
108
109
public
static
bool
TryParse
([
NotNullWhen
(
true
)]
string
?
input
, [
NotNullWhen
(
true
)]
out
MediaTypeHeaderValue
?
parsedValue
)
110
{
111
int
index
= 0;
112
parsedValue
=
null
;
113
if
(
MediaTypeHeaderParser
.
SingleValueParser
.TryParseValue(
input
,
null
,
ref
index
,
out
var
parsedValue2
))
114
{
115
parsedValue
= (
MediaTypeHeaderValue
)
parsedValue2
;
116
return
true
;
117
}
118
return
false
;
119
}
120
121
internal
static
int
GetMediaTypeLength
(
string
input
,
int
startIndex
,
Func<MediaTypeHeaderValue>
mediaTypeCreator
,
out
MediaTypeHeaderValue
parsedValue
)
122
{
123
parsedValue
=
null
;
124
if
(
string
.IsNullOrEmpty(
input
) ||
startIndex
>=
input
.Length)
125
{
126
return
0;
127
}
128
string
mediaType;
129
int
mediaTypeExpressionLength
=
GetMediaTypeExpressionLength
(
input
,
startIndex
,
out
mediaType);
130
if
(
mediaTypeExpressionLength
== 0)
131
{
132
return
0;
133
}
134
int
num =
startIndex
+
mediaTypeExpressionLength
;
135
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
136
MediaTypeHeaderValue
mediaTypeHeaderValue
;
137
if
(num <
input
.Length &&
input
[num] ==
';'
)
138
{
139
mediaTypeHeaderValue
=
mediaTypeCreator
();
140
mediaTypeHeaderValue._mediaType = mediaType;
141
num++;
142
int
nameValueListLength
=
NameValueHeaderValue
.
GetNameValueListLength
(
input
, num,
';'
, (
ObjectCollection<NameValueHeaderValue>
)
mediaTypeHeaderValue
.Parameters);
143
if
(
nameValueListLength
== 0)
144
{
145
return
0;
146
}
147
parsedValue
=
mediaTypeHeaderValue
;
148
return
num +
nameValueListLength
-
startIndex
;
149
}
150
mediaTypeHeaderValue
=
mediaTypeCreator
();
151
mediaTypeHeaderValue._mediaType = mediaType;
152
parsedValue
=
mediaTypeHeaderValue
;
153
return
num -
startIndex
;
154
}
155
156
private
static
int
GetMediaTypeExpressionLength
(
string
input
,
int
startIndex
,
out
string
mediaType)
157
{
158
mediaType =
null
;
159
int
tokenLength
=
HttpRuleParser
.
GetTokenLength
(
input
,
startIndex
);
160
if
(
tokenLength
== 0)
161
{
162
return
0;
163
}
164
int
num =
startIndex
+
tokenLength
;
165
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
166
if
(num >=
input
.Length ||
input
[num] !=
'/'
)
167
{
168
return
0;
169
}
170
num++;
171
num +=
HttpRuleParser
.
GetWhitespaceLength
(
input
, num);
172
int
tokenLength2
=
HttpRuleParser
.
GetTokenLength
(
input
, num);
173
if
(
tokenLength2
== 0)
174
{
175
return
0;
176
}
177
int
num2
= num +
tokenLength2
-
startIndex
;
178
if
(
tokenLength
+
tokenLength2
+ 1 ==
num2
)
179
{
180
mediaType =
input
.Substring(
startIndex
,
num2
);
181
}
182
else
183
{
184
mediaType =
string
.Concat(
input
.AsSpan(
startIndex
,
tokenLength
),
"/"
,
input
.AsSpan(num,
tokenLength2
));
185
}
186
return
num2
;
187
}
188
189
private
static
void
CheckMediaTypeFormat
(
string
mediaType,
string
parameterName
)
190
{
191
if
(
string
.IsNullOrEmpty(mediaType))
192
{
193
throw
new
ArgumentException
(
System
.
SR
.
net_http_argument_empty_string
,
parameterName
);
194
}
195
if
(
GetMediaTypeExpressionLength
(mediaType, 0,
out
var
mediaType2
) == 0 ||
mediaType2
.Length != mediaType.Length)
196
{
197
throw
new
FormatException
(
System
.
SR
.
Format
(
CultureInfo
.
InvariantCulture
,
System
.
SR
.
net_http_headers_invalid_value
, mediaType));
198
}
199
}
200
201
object
ICloneable
.
Clone
()
202
{
203
return
new
MediaTypeHeaderValue
(
this
);
204
}
205
}
System.ArgumentException
Definition
ArgumentException.cs:9
System.Collections.Generic.Dictionary.Remove
bool ICollection< KeyValuePair< TKey, TValue > >. Remove(KeyValuePair< TKey, TValue > keyValuePair)
Definition
Dictionary.cs:893
System.Collections.Generic.Dictionary.Count
int Count
Definition
Dictionary.cs:682
System.Collections.Generic.Dictionary.Add
void Add(TKey key, TValue value)
Definition
Dictionary.cs:873
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
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.HeaderUtilities
Definition
HeaderUtilities.cs:9
System.Net.Http.Headers.MediaTypeHeaderParser.SingleValueParser
static readonly MediaTypeHeaderParser SingleValueParser
Definition
MediaTypeHeaderParser.cs:7
System.Net.Http.Headers.MediaTypeHeaderParser
Definition
MediaTypeHeaderParser.cs:4
System.Net.Http.Headers.MediaTypeHeaderValue._mediaType
string _mediaType
Definition
MediaTypeHeaderValue.cs:12
System.Net.Http.Headers.MediaTypeHeaderValue.ToString
override string ToString()
Definition
MediaTypeHeaderValue.cs:73
System.Net.Http.Headers.MediaTypeHeaderValue.MediaType
string? MediaType
Definition
MediaTypeHeaderValue.cs:44
System.Net.Http.Headers.MediaTypeHeaderValue.MediaTypeHeaderValue
MediaTypeHeaderValue(MediaTypeHeaderValue source)
Definition
MediaTypeHeaderValue.cs:61
System.Net.Http.Headers.MediaTypeHeaderValue.GetHashCode
override int GetHashCode()
Definition
MediaTypeHeaderValue.cs:98
System.Net.Http.Headers.MediaTypeHeaderValue.CheckMediaTypeFormat
static void CheckMediaTypeFormat(string mediaType, string parameterName)
Definition
MediaTypeHeaderValue.cs:189
System.Net.Http.Headers.MediaTypeHeaderValue.MediaTypeHeaderValue
MediaTypeHeaderValue(string mediaType)
Definition
MediaTypeHeaderValue.cs:67
System.Net.Http.Headers.MediaTypeHeaderValue.GetMediaTypeLength
static int GetMediaTypeLength(string input, int startIndex, Func< MediaTypeHeaderValue > mediaTypeCreator, out MediaTypeHeaderValue parsedValue)
Definition
MediaTypeHeaderValue.cs:121
System.Net.Http.Headers.MediaTypeHeaderValue.MediaTypeHeaderValue
MediaTypeHeaderValue()
Definition
MediaTypeHeaderValue.cs:57
System.Net.Http.Headers.MediaTypeHeaderValue.Parameters
ICollection< NameValueHeaderValue > Parameters
Definition
MediaTypeHeaderValue.cs:41
System.Net.Http.Headers.MediaTypeHeaderValue.Parse
static MediaTypeHeaderValue Parse(string? input)
Definition
MediaTypeHeaderValue.cs:103
System.Net.Http.Headers.MediaTypeHeaderValue.GetMediaTypeExpressionLength
static int GetMediaTypeExpressionLength(string input, int startIndex, out string mediaType)
Definition
MediaTypeHeaderValue.cs:156
System.Net.Http.Headers.MediaTypeHeaderValue.TryParse
static bool TryParse([NotNullWhen(true)] string? input, [NotNullWhen(true)] out MediaTypeHeaderValue? parsedValue)
Definition
MediaTypeHeaderValue.cs:109
System.Net.Http.Headers.MediaTypeHeaderValue._parameters
ObjectCollection< NameValueHeaderValue > _parameters
Definition
MediaTypeHeaderValue.cs:10
System.Net.Http.Headers.MediaTypeHeaderValue.Equals
override bool Equals([NotNullWhen(true)] object? obj)
Definition
MediaTypeHeaderValue.cs:85
System.Net.Http.Headers.MediaTypeHeaderValue
Definition
MediaTypeHeaderValue.cs:9
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.Find
static NameValueHeaderValue Find(ObjectCollection< NameValueHeaderValue > values, string name)
Definition
NameValueHeaderValue.cs:230
System.Net.Http.Headers.NameValueHeaderValue.GetHashCode
override int GetHashCode()
Definition
NameValueHeaderValue.cs:52
System.Net.Http.Headers.NameValueHeaderValue.ToString
override string ToString()
Definition
NameValueHeaderValue.cs:105
System.Net.Http.Headers.NameValueHeaderValue
Definition
NameValueHeaderValue.cs:8
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.net_http_argument_empty_string
static string net_http_argument_empty_string
Definition
SR.cs:52
System.SR
Definition
SR.cs:7
System.StringComparer.OrdinalIgnoreCase
static StringComparer OrdinalIgnoreCase
Definition
StringComparer.cs:23
System.StringComparer
Definition
StringComparer.cs:12
System.Text.StringBuilderCache.GetStringAndRelease
static string GetStringAndRelease(StringBuilder sb)
Definition
StringBuilderCache.cs:31
System.Text.StringBuilderCache.Acquire
static StringBuilder Acquire(int capacity=16)
Definition
StringBuilderCache.cs:8
System.Text.StringBuilderCache
Definition
StringBuilderCache.cs:4
System.Text.StringBuilder
Definition
StringBuilder.cs:14
System.ICloneable.Clone
object Clone()
System.ICloneable
Definition
ICloneable.cs:4
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
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.source
@ source
System.ExceptionArgument.index
@ index
System.ExceptionArgument.input
@ input
System.ExceptionArgument.obj
@ obj
System.StringComparison
StringComparison
Definition
StringComparison.cs:4
System
Definition
BlockingCollection.cs:8
source
System.Net.Http
System.Net.Http.Headers
MediaTypeHeaderValue.cs
Generated by
1.10.0