URSA.Web.Http.HeaderValue.ParseInternal C# (CSharp) Метод

ParseInternal() статический приватный Метод

static private ParseInternal ( string header, string value ) : HeaderValue
header string
value string
Результат HeaderValue
        internal static HeaderValue ParseInternal(string header, string value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            HeaderParameterCollection parameters = new HeaderParameterCollection();
            StringBuilder currentValue = new StringBuilder(64);
            StringBuilder currentParameter = new StringBuilder(128);
            StringBuilder currentTarget = currentValue;
            bool isInString = false;
            bool isEscape = false;
            foreach (char letter in value)
            {
                switch (letter)
                {
                    default:
                        ParseOtherChars(letter, currentTarget, ref isInString, ref isEscape);
                        break;
                    case '\\':
                        ParseEscapeChar(letter, currentTarget, ref isInString, ref isEscape);
                        break;
                    case '"':
                        ParseStringChar(letter, currentTarget, ref isInString, ref isEscape);
                        break;
                    case ';':
                        ParseSeparatorChar(letter, ref currentTarget, ref isInString, ref isEscape, currentValue, currentParameter, parameters);
                        break;
                }
            }

            if (currentParameter.Length > 0)
            {
                parameters.Add(HeaderParameter.Parse(currentParameter.ToString().Trim()));
            }

            return CreateInstance(header, currentValue.ToString(), parameters);
        }

Usage Example

Пример #1
0
        private static void ParseValues(string name, IList <HeaderValue> values, string valuesString)
        {
            StringBuilder value      = new StringBuilder(128);
            bool          isInString = false;
            bool          isEscape   = false;

            for (int index = 0; index < valuesString.Length; index++)
            {
                switch (valuesString[index])
                {
                default:
                    ParseOtherChars(valuesString[index], ref isInString, ref isEscape, value);
                    break;

                case '\\':
                    ParseEscapeChar(valuesString[index], ref isInString, ref isEscape, value);
                    break;

                case '"':
                    ParseStringChar(valuesString[index], ref isInString, ref isEscape, value);
                    break;

                case ',':
                    ParseSeparatorChar(valuesString[index], ref isInString, ref isEscape, value, values);
                    break;
                }
            }

            if (value.Length > 0)
            {
                values.Add(HeaderValue.ParseInternal(name, value.ToString().Trim()));
            }
        }