예제 #1
0
        public static Cookie ToCookie(string headerValue)
        {
            if (headerValue.IsEmpty())
            {
                return(null);
            }

            var cookie = new Cookie();

            var segments = headerValue.TrimEnd().TrimEnd(';').Split(';').Select(x => new Segment(x.Trim()));

            segments.Each(segment => {
                string canonicalKey = segment.Key.ToLowerInvariant();

                if (_setters.Has(canonicalKey))
                {
                    _setters[canonicalKey](cookie, segment.Value);
                }
                else
                {
                    var state = CookieState.For(segment);
                    cookie.Add(state);
                }
            });

            return(cookie);
        }