Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros
BaseHeaderParser.cs
Go to the documentation of this file.
2
3internal abstract class BaseHeaderParser : HttpHeaderParser
4{
5 protected BaseHeaderParser(bool supportsMultipleValues)
6 : base(supportsMultipleValues)
7 {
8 }
9
10 protected abstract int GetParsedValueLength(string value, int startIndex, object storeValue, out object parsedValue);
11
12 public sealed override bool TryParseValue(string value, object storeValue, ref int index, out object parsedValue)
13 {
14 parsedValue = null;
15 if (string.IsNullOrEmpty(value) || index == value.Length)
16 {
17 return base.SupportsMultipleValues;
18 }
19 bool separatorFound = false;
20 int nextNonEmptyOrWhitespaceIndex = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(value, index, base.SupportsMultipleValues, out separatorFound);
21 if (separatorFound && !base.SupportsMultipleValues)
22 {
23 return false;
24 }
25 if (nextNonEmptyOrWhitespaceIndex == value.Length)
26 {
27 if (base.SupportsMultipleValues)
28 {
29 index = nextNonEmptyOrWhitespaceIndex;
30 }
31 return base.SupportsMultipleValues;
32 }
33 object parsedValue2;
34 int parsedValueLength = GetParsedValueLength(value, nextNonEmptyOrWhitespaceIndex, storeValue, out parsedValue2);
35 if (parsedValueLength == 0)
36 {
37 return false;
38 }
39 nextNonEmptyOrWhitespaceIndex += parsedValueLength;
40 nextNonEmptyOrWhitespaceIndex = HeaderUtilities.GetNextNonEmptyOrWhitespaceIndex(value, nextNonEmptyOrWhitespaceIndex, base.SupportsMultipleValues, out separatorFound);
41 if ((separatorFound && !base.SupportsMultipleValues) || (!separatorFound && nextNonEmptyOrWhitespaceIndex < value.Length))
42 {
43 return false;
44 }
45 index = nextNonEmptyOrWhitespaceIndex;
46 parsedValue = parsedValue2;
47 return true;
48 }
49}
int GetParsedValueLength(string value, int startIndex, object storeValue, out object parsedValue)
BaseHeaderParser(bool supportsMultipleValues)
override bool TryParseValue(string value, object storeValue, ref int index, out object parsedValue)
static int GetNextNonEmptyOrWhitespaceIndex(string input, int startIndex, bool skipEmptyValues, out bool separatorFound)