/// <summary> /// Creates a new object. /// </summary> /// <param name="response"></param> /// <param name="collection"></param> public HeadersWrapper_Response(IHttpListenerResponse response) : base(StringComparer.OrdinalIgnoreCase) { _Response = response; _DoingInitialCopy = true; try { foreach (var key in response.Headers.AllKeys) { var value = response.Headers[key]; base[key] = HeadersDictionary.SplitRawHeaderValue(value).ToArray(); } } finally { _DoingInitialCopy = false; } }
/// <summary> /// See interface docs. /// </summary> /// <param name="key"></param> /// <returns></returns> public virtual string[] this[string key] { get { var headerValue = _Collection[key]; return(headerValue == null ? null : HeadersDictionary.SplitRawHeaderValue(headerValue)?.ToArray()); } set { if (key == null) { throw new ArgumentNullException(nameof(key)); } _Collection[key] = HeadersDictionary.JoinCookedHeaderValues(value); } }
public void Static_SplitRawHeaderValue_Round_Trips_With_JoinCookedHeaderValues(string [] splitValues, string headerValue) { var splitHeaderValues = HeadersDictionary.SplitRawHeaderValue(headerValue); if (splitValues == null) { Assert.IsNull(splitHeaderValues); } else { Assert.IsTrue(splitValues.SequenceEqual(splitHeaderValues)); } var rejoinedHeader = HeadersDictionary.JoinCookedHeaderValues(splitHeaderValues); if (headerValue == null) { Assert.IsNull(rejoinedHeader); } else { Assert.AreEqual(headerValue, rejoinedHeader); } }
public void Static_SplitRawHeaderValue_Returns_Correct_Array_For_Header_Value(string[] expected, string rawString) { var actual = HeadersDictionary.SplitRawHeaderValue(rawString); Assert.IsTrue(expected.SequenceEqual(actual)); }