public static HttpHeaderDictionary FromString(string value) { if (null == value) { throw new ArgumentNullException("value"); } var result = new HttpHeaderDictionary(); #if NET20 var lines = IEnumerableExtensionMethods.ToQueue(StringExtensionMethods.Split(value, Environment.NewLine, StringSplitOptions.None)); #else var lines = value.Split(Environment.NewLine, StringSplitOptions.None).ToQueue(); #endif if (0 == lines.Count) { return(result); } while (0 != lines.Count) { var line = lines.Dequeue(); if (0 == line.Length) { break; } result.Add(HttpHeader.FromString(line)); } return(result); }
public static HttpStatusLine FromString(string value) { if (null == value) { throw new ArgumentNullException("value"); } if (0 == value.Length) { throw new ArgumentOutOfRangeException("value"); } #if NET20 var parts = IEnumerableExtensionMethods.ToQueue(StringExtensionMethods.Split(value, ' ', StringSplitOptions.RemoveEmptyEntries)); #else var parts = value.Split(' ', StringSplitOptions.RemoveEmptyEntries).ToQueue(); #endif var version = parts.Peek().StartsWith("HTTP/", StringComparison.Ordinal) ? (HttpVersion)parts.Dequeue() : HttpVersion.Latest; if (0 == parts.Count) { throw new FormatException(); } var code = XmlConvert.ToInt32(parts.Dequeue()); if (0 == parts.Count) { return(new HttpStatusLine(version, (HttpStatusCode)code)); } #if NET20 var reason = string.Empty; foreach (var part in parts) { reason += " " + part; } #else var reason = parts.Aggregate(string.Empty, (current, part) => current + (" " + part)); #endif return(new HttpStatusLine(version, code, reason.Trim())); }