From dda0adbd6c00ed0a66e5de0629baa09ccaa05619 Mon Sep 17 00:00:00 2001 From: sta Date: Tue, 9 Apr 2019 21:45:44 +0900 Subject: [PATCH] [Modify] Polish it --- websocket-sharp/Net/CookieCollection.cs | 79 ++++++++++++++----------- 1 file changed, 45 insertions(+), 34 deletions(-) diff --git a/websocket-sharp/Net/CookieCollection.cs b/websocket-sharp/Net/CookieCollection.cs index 1a7caf54..79e7769a 100644 --- a/websocket-sharp/Net/CookieCollection.cs +++ b/websocket-sharp/Net/CookieCollection.cs @@ -249,64 +249,75 @@ namespace WebSocketSharp.Net private static CookieCollection parseRequest (string value) { - var cookies = new CookieCollection (); + var ret = new CookieCollection (); Cookie cookie = null; + var compType = StringComparison.InvariantCultureIgnoreCase; var ver = 0; + var pairs = splitCookieHeaderValue (value); + for (var i = 0; i < pairs.Length; i++) { var pair = pairs[i].Trim (); if (pair.Length == 0) continue; - if (pair.StartsWith ("$version", StringComparison.InvariantCultureIgnoreCase)) { + if (pair.StartsWith ("$version", compType)) { ver = Int32.Parse (pair.GetValue ('=', true)); + continue; } - else if (pair.StartsWith ("$path", StringComparison.InvariantCultureIgnoreCase)) { + + if (pair.StartsWith ("$path", compType)) { if (cookie != null) cookie.Path = pair.GetValue ('='); + + continue; } - else if (pair.StartsWith ("$domain", StringComparison.InvariantCultureIgnoreCase)) { + + if (pair.StartsWith ("$domain", compType)) { if (cookie != null) cookie.Domain = pair.GetValue ('='); - } - else if (pair.StartsWith ("$port", StringComparison.InvariantCultureIgnoreCase)) { - var port = pair.Equals ("$port", StringComparison.InvariantCultureIgnoreCase) - ? "\"\"" - : pair.GetValue ('='); - if (cookie != null) - cookie.Port = port; + continue; + } + + if (pair.StartsWith ("$port", compType)) { + if (cookie != null) { + cookie.Port = !pair.Equals ("$port", compType) + ? pair.GetValue ('=') + : "\"\""; + } + + continue; + } + + if (cookie != null) + ret.Add (cookie); + + string name = null; + string val = String.Empty; + + var idx = pair.IndexOf ('='); + if (idx == -1) { + name = pair; + } + else if (idx == pair.Length - 1) { + name = pair.Substring (0, idx).TrimEnd (' '); } else { - if (cookie != null) - cookies.Add (cookie); - - string name; - string val = String.Empty; - - var pos = pair.IndexOf ('='); - if (pos == -1) { - name = pair; - } - else if (pos == pair.Length - 1) { - name = pair.Substring (0, pos).TrimEnd (' '); - } - else { - name = pair.Substring (0, pos).TrimEnd (' '); - val = pair.Substring (pos + 1).TrimStart (' '); - } - - cookie = new Cookie (name, val); - if (ver != 0) - cookie.Version = ver; + name = pair.Substring (0, idx).TrimEnd (' '); + val = pair.Substring (idx + 1).TrimStart (' '); } + + cookie = new Cookie (name, val); + if (ver != 0) + cookie.Version = ver; } if (cookie != null) - cookies.Add (cookie); + ret.Add (cookie); - return cookies; + return ret; } private static CookieCollection parseResponse (string value)