Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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()));
        }