Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
GenericHeaderParser.cs
Go to the documentation of this file.
2
4
5internal sealed class GenericHeaderParser : BaseHeaderParser
6{
7 private delegate int GetParsedValueLengthDelegate(string value, int startIndex, out object parsedValue);
8
9 internal static readonly GenericHeaderParser HostParser = new GenericHeaderParser(supportsMultipleValues: false, ParseHost, StringComparer.OrdinalIgnoreCase);
10
11 internal static readonly GenericHeaderParser TokenListParser = new GenericHeaderParser(supportsMultipleValues: true, ParseTokenList, StringComparer.OrdinalIgnoreCase);
12
13 internal static readonly GenericHeaderParser SingleValueNameValueWithParametersParser = new GenericHeaderParser(supportsMultipleValues: false, NameValueWithParametersHeaderValue.GetNameValueWithParametersLength);
14
15 internal static readonly GenericHeaderParser MultipleValueNameValueWithParametersParser = new GenericHeaderParser(supportsMultipleValues: true, NameValueWithParametersHeaderValue.GetNameValueWithParametersLength);
16
17 internal static readonly GenericHeaderParser SingleValueNameValueParser = new GenericHeaderParser(supportsMultipleValues: false, ParseNameValue);
18
19 internal static readonly GenericHeaderParser MultipleValueNameValueParser = new GenericHeaderParser(supportsMultipleValues: true, ParseNameValue);
20
21 internal static readonly GenericHeaderParser SingleValueParserWithoutValidation = new GenericHeaderParser(supportsMultipleValues: false, ParseWithoutValidation);
22
23 internal static readonly GenericHeaderParser SingleValueProductParser = new GenericHeaderParser(supportsMultipleValues: false, ParseProduct);
24
25 internal static readonly GenericHeaderParser MultipleValueProductParser = new GenericHeaderParser(supportsMultipleValues: true, ParseProduct);
26
27 internal static readonly GenericHeaderParser RangeConditionParser = new GenericHeaderParser(supportsMultipleValues: false, RangeConditionHeaderValue.GetRangeConditionLength);
28
29 internal static readonly GenericHeaderParser SingleValueAuthenticationParser = new GenericHeaderParser(supportsMultipleValues: false, AuthenticationHeaderValue.GetAuthenticationLength);
30
31 internal static readonly GenericHeaderParser MultipleValueAuthenticationParser = new GenericHeaderParser(supportsMultipleValues: true, AuthenticationHeaderValue.GetAuthenticationLength);
32
33 internal static readonly GenericHeaderParser RangeParser = new GenericHeaderParser(supportsMultipleValues: false, RangeHeaderValue.GetRangeLength);
34
35 internal static readonly GenericHeaderParser RetryConditionParser = new GenericHeaderParser(supportsMultipleValues: false, RetryConditionHeaderValue.GetRetryConditionLength);
36
37 internal static readonly GenericHeaderParser ContentRangeParser = new GenericHeaderParser(supportsMultipleValues: false, ContentRangeHeaderValue.GetContentRangeLength);
38
39 internal static readonly GenericHeaderParser ContentDispositionParser = new GenericHeaderParser(supportsMultipleValues: false, ContentDispositionHeaderValue.GetDispositionTypeLength);
40
41 internal static readonly GenericHeaderParser SingleValueStringWithQualityParser = new GenericHeaderParser(supportsMultipleValues: false, StringWithQualityHeaderValue.GetStringWithQualityLength);
42
43 internal static readonly GenericHeaderParser MultipleValueStringWithQualityParser = new GenericHeaderParser(supportsMultipleValues: true, StringWithQualityHeaderValue.GetStringWithQualityLength);
44
45 internal static readonly GenericHeaderParser SingleValueEntityTagParser = new GenericHeaderParser(supportsMultipleValues: false, ParseSingleEntityTag);
46
47 internal static readonly GenericHeaderParser MultipleValueEntityTagParser = new GenericHeaderParser(supportsMultipleValues: true, ParseMultipleEntityTags);
48
49 internal static readonly GenericHeaderParser SingleValueViaParser = new GenericHeaderParser(supportsMultipleValues: false, ViaHeaderValue.GetViaLength);
50
51 internal static readonly GenericHeaderParser MultipleValueViaParser = new GenericHeaderParser(supportsMultipleValues: true, ViaHeaderValue.GetViaLength);
52
53 internal static readonly GenericHeaderParser SingleValueWarningParser = new GenericHeaderParser(supportsMultipleValues: false, WarningHeaderValue.GetWarningLength);
54
55 internal static readonly GenericHeaderParser MultipleValueWarningParser = new GenericHeaderParser(supportsMultipleValues: true, WarningHeaderValue.GetWarningLength);
56
58
59 private readonly IEqualityComparer _comparer;
60
62
63 private GenericHeaderParser(bool supportsMultipleValues, GetParsedValueLengthDelegate getParsedValueLength)
64 : this(supportsMultipleValues, getParsedValueLength, null)
65 {
66 }
67
68 private GenericHeaderParser(bool supportsMultipleValues, GetParsedValueLengthDelegate getParsedValueLength, IEqualityComparer comparer)
69 : base(supportsMultipleValues)
70 {
71 _getParsedValueLength = getParsedValueLength;
73 }
74
75 protected override int GetParsedValueLength(string value, int startIndex, object storeValue, out object parsedValue)
76 {
77 return _getParsedValueLength(value, startIndex, out parsedValue);
78 }
79
80 private static int ParseNameValue(string value, int startIndex, out object parsedValue)
81 {
82 NameValueHeaderValue parsedValue2;
83 int nameValueLength = NameValueHeaderValue.GetNameValueLength(value, startIndex, out parsedValue2);
84 parsedValue = parsedValue2;
85 return nameValueLength;
86 }
87
88 private static int ParseProduct(string value, int startIndex, out object parsedValue)
89 {
90 ProductHeaderValue parsedValue2;
91 int productLength = ProductHeaderValue.GetProductLength(value, startIndex, out parsedValue2);
92 parsedValue = parsedValue2;
93 return productLength;
94 }
95
96 private static int ParseSingleEntityTag(string value, int startIndex, out object parsedValue)
97 {
98 parsedValue = null;
99 EntityTagHeaderValue parsedValue2;
100 int entityTagLength = EntityTagHeaderValue.GetEntityTagLength(value, startIndex, out parsedValue2);
101 if (parsedValue2 == EntityTagHeaderValue.Any)
102 {
103 return 0;
104 }
105 parsedValue = parsedValue2;
106 return entityTagLength;
107 }
108
109 private static int ParseMultipleEntityTags(string value, int startIndex, out object parsedValue)
110 {
111 EntityTagHeaderValue parsedValue2;
112 int entityTagLength = EntityTagHeaderValue.GetEntityTagLength(value, startIndex, out parsedValue2);
113 parsedValue = parsedValue2;
114 return entityTagLength;
115 }
116
117 private static int ParseWithoutValidation(string value, int startIndex, out object parsedValue)
118 {
120 {
121 parsedValue = null;
122 return 0;
123 }
124 return ((string)(parsedValue = value.Substring(startIndex))).Length;
125 }
126
127 private static int ParseHost(string value, int startIndex, out object parsedValue)
128 {
129 string host;
130 int hostLength = HttpRuleParser.GetHostLength(value, startIndex, allowToken: false, out host);
131 parsedValue = host;
132 return hostLength;
133 }
134
135 private static int ParseTokenList(string value, int startIndex, out object parsedValue)
136 {
137 int tokenLength = HttpRuleParser.GetTokenLength(value, startIndex);
138 parsedValue = value.Substring(startIndex, tokenLength);
139 return tokenLength;
140 }
141}
static int GetEntityTagLength(string input, int startIndex, out EntityTagHeaderValue parsedValue)
static readonly GenericHeaderParser ContentRangeParser
static int ParseMultipleEntityTags(string value, int startIndex, out object parsedValue)
static readonly GenericHeaderParser RangeConditionParser
static int ParseProduct(string value, int startIndex, out object parsedValue)
static readonly GenericHeaderParser SingleValueNameValueWithParametersParser
static int ParseSingleEntityTag(string value, int startIndex, out object parsedValue)
static readonly GenericHeaderParser SingleValueProductParser
static readonly GenericHeaderParser RetryConditionParser
static int ParseHost(string value, int startIndex, out object parsedValue)
static readonly GenericHeaderParser MultipleValueNameValueWithParametersParser
static readonly GenericHeaderParser MultipleValueProductParser
readonly GetParsedValueLengthDelegate _getParsedValueLength
static readonly GenericHeaderParser RangeParser
static readonly GenericHeaderParser SingleValueEntityTagParser
static readonly GenericHeaderParser SingleValueViaParser
static readonly GenericHeaderParser MultipleValueStringWithQualityParser
static int ParseWithoutValidation(string value, int startIndex, out object parsedValue)
static readonly GenericHeaderParser SingleValueNameValueParser
static readonly GenericHeaderParser SingleValueStringWithQualityParser
static readonly GenericHeaderParser HostParser
static readonly GenericHeaderParser MultipleValueNameValueParser
static readonly GenericHeaderParser MultipleValueAuthenticationParser
GenericHeaderParser(bool supportsMultipleValues, GetParsedValueLengthDelegate getParsedValueLength, IEqualityComparer comparer)
override int GetParsedValueLength(string value, int startIndex, object storeValue, out object parsedValue)
static readonly GenericHeaderParser MultipleValueViaParser
static readonly GenericHeaderParser MultipleValueEntityTagParser
static readonly GenericHeaderParser SingleValueWarningParser
static int ParseTokenList(string value, int startIndex, out object parsedValue)
delegate int GetParsedValueLengthDelegate(string value, int startIndex, out object parsedValue)
GenericHeaderParser(bool supportsMultipleValues, GetParsedValueLengthDelegate getParsedValueLength)
static int ParseNameValue(string value, int startIndex, out object parsedValue)
static readonly GenericHeaderParser SingleValueAuthenticationParser
static readonly GenericHeaderParser TokenListParser
static readonly GenericHeaderParser ContentDispositionParser
static readonly GenericHeaderParser SingleValueParserWithoutValidation
static readonly GenericHeaderParser MultipleValueWarningParser
static int GetNameValueLength(string input, int startIndex, out NameValueHeaderValue parsedValue)
static int GetProductLength(string input, int startIndex, out ProductHeaderValue parsedValue)
static bool ContainsNewLine(string value, int startIndex=0)
static int GetHostLength(string input, int startIndex, bool allowToken, out string host)
static int GetTokenLength(string input, int startIndex)