Пример #1
0
        private static int GetValueLength(string input, int startIndex, out StringSegment value)
        {
            var current = startIndex;

            current++; // skip '='.
            current += HttpTokenParsingRules.GetWhitespaceLength(input, current);

            var valueLength = HttpTokenParsingRules.GetTokenLength(input, current);

            if (valueLength == 0)
            {
                // A value can either be a token or a quoted string. Check if it is a quoted string.
                var result = HttpTokenParsingRules.GetQuotedStringLength(input, current, out valueLength);
                if (result != HttpParseResult.Parsed)
                {
                    // We have an invalid value. Reset the name and return.
                    value = default(StringSegment);
                    return(0);
                }

                // Quotation marks are not part of a quoted parameter value.
                value = new StringSegment(input, current + 1, valueLength - 2);
            }
            else
            {
                value = new StringSegment(input, current, valueLength);
            }

            current += valueLength;
            current += HttpTokenParsingRules.GetWhitespaceLength(input, current);

            return(current - startIndex);
        }