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"); }
/// <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)); }
/// <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; }
/// <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); }
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)); }
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>(); }
public void it_should_consider_same_instance_as_equal() { var param = new HeaderParameter("key", 1); param.Equals(param).Should().BeTrue(); }
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; }