Describes an HTTP header parameter.
Example #1
0
        private static HeaderParameter ParseInternal(string key, string rest)
        {
            HeaderParameter result = new HeaderParameter(key);

            if (rest == null)
            {
                return(result);
            }

            if ((rest.Length > 2) && (rest[0] == '"') && (rest[rest.Length - 1] == '"'))
            {
                result.Value = rest.Trim('"').Unescape();
            }
            else if ((rest.Length > 2) && (rest[0] == '<') && (rest[rest.Length - 1] == '>'))
            {
                result.Value = new Uri(rest.Trim('<', '>').Unescape());
            }
            else
            {
                double numericValue;
                result.Value = (Double.TryParse(rest, AllowedNumberStyles, CultureInfo.InvariantCulture, out numericValue) ?
                                numericValue :
                                AppDomain.CurrentDomain.GetAssemblies().FindEnumValue(rest)) ?? rest;
            }

            return(result);
        }
        public void it_should_override_old_parameter_when_setting_by_name()
        {
            var parameters = new HeaderParameterCollection();

            parameters["some"] = new HeaderParameter("some", "test");
            parameters["some"] = new HeaderParameter("some", "other");

            parameters["some"].Value.Should().Be("other");
        }
        public void it_should_set_parameter_by_name()
        {
            var parameters = new HeaderParameterCollection();
            
            parameters["some"] = new HeaderParameter("some", "test");

            parameters["some"].Should().NotBeNull();
            parameters["some"].Value.Should().Be("test");
        }
Example #4
0
        /// <inheritdoc />
        public override bool Equals(object obj)
        {
            if ((Object.Equals(obj, null)) || (!(obj is HeaderParameter)))
            {
                return(false);
            }

            HeaderParameter parameter = (HeaderParameter)obj;

            return(Name.Equals(parameter.Name) && (Value != null ? Value.Equals(parameter.Value) : parameter.Value == null));
        }
Example #5
0
        /// <summary>Tries to parse the HTTP header parameter.</summary>
        /// <param name="parameter">Parameter string to be parsed.</param>
        /// <param name="headerParameter">Resulting parameter if successfully parsed; otherwise <b>null</b>.</param>
        /// <returns><b>true</b> if the parsing was successful; otherwise <b>false</b>.</returns>
        public static bool TryParse(string parameter, out HeaderParameter headerParameter)
        {
            bool result = false;
            headerParameter = null;
            try
            {
                headerParameter = Parse(parameter);
                result = true;
            }
            catch
            {
            }

            return result;
        }
Example #6
0
        /// <summary>Tries to parse the HTTP header parameter.</summary>
        /// <param name="parameter">Parameter string to be parsed.</param>
        /// <param name="headerParameter">Resulting parameter if successfully parsed; otherwise <b>null</b>.</param>
        /// <returns><b>true</b> if the parsing was successful; otherwise <b>false</b>.</returns>
        public static bool TryParse(string parameter, out HeaderParameter headerParameter)
        {
            bool result = false;

            headerParameter = null;
            try
            {
                headerParameter = Parse(parameter);
                result          = true;
            }
            catch
            {
            }

            return(result);
        }
Example #7
0
        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));
        }
Example #8
0
 private static void ParseSeparatorChar(char chr, ref StringBuilder currentTarget, ref bool isInString, ref bool isEscape, StringBuilder currentValue, StringBuilder currentParameter, HeaderParameterCollection parameters)
 {
     if (isEscape)
     {
         isEscape = false;
         currentTarget.Append("\\" + chr);
     }
     else if (isInString)
     {
         currentTarget.Append(chr);
     }
     else
     {
         if (currentTarget == currentValue)
         {
             currentTarget = currentParameter;
         }
         else
         {
             parameters.Add(HeaderParameter.Parse(currentParameter.ToString().Trim()));
             currentParameter.Clear();
         }
     }
 }
 public void it_should_throw_when_setting_parameter_with_incorrect_name()
 {
     new HeaderParameterCollection().Invoking(parameters => parameters["test"] = new HeaderParameter("some")).ShouldThrow<InvalidOperationException>();
 }
Example #10
0
 public void it_should_consider_same_instance_as_equal()
 {
     var param = new HeaderParameter("key", 1);
     param.Equals(param).Should().BeTrue();
 }
Example #11
0
        private static HeaderParameter ParseInternal(string key, string rest)
        {
            HeaderParameter result = new HeaderParameter(key);
            if (rest == null)
            {
                return result;
            }

            if ((rest.Length > 2) && (rest[0] == '"') && (rest[rest.Length - 1] == '"'))
            {
                result.Value = rest.Trim('"').Unescape();
            }
            else if ((rest.Length > 2) && (rest[0] == '<') && (rest[rest.Length - 1] == '>'))
            {
                result.Value = new Uri(rest.Trim('<', '>').Unescape());
            }
            else
            {
                double numericValue;
                result.Value = (Double.TryParse(rest, AllowedNumberStyles, CultureInfo.InvariantCulture, out numericValue) ? 
                    numericValue :
                    AppDomain.CurrentDomain.GetAssemblies().FindEnumValue(rest)) ?? rest;
            }

            return result;
        }