[Modify] Polish it

master
sta 7 years ago
parent 816272a908
commit 3da7b49a47

@ -331,111 +331,160 @@ namespace WebSocketSharp.Net
if (pair.Length == 0) if (pair.Length == 0)
continue; continue;
if (pair.IndexOf ("version", compType) == 0) { var idx = pair.IndexOf ('=');
if (cookie != null) if (idx == -1) {
cookie.Version = Int32.Parse (pair.GetValue ('=', true)); if (cookie == null)
continue;
continue;
}
if (pair.IndexOf ("expires", compType) == 0) { if (pair.Equals ("port", compType)) {
if (i == pairs.Length - 1) cookie.Port = "\"\"";
break; continue;
}
i++; if (pair.Equals ("discard", compType)) {
cookie.Discard = true;
continue;
}
if (cookie != null) { if (pair.Equals ("secure", compType)) {
if (cookie.Expires != DateTime.MinValue) cookie.Secure = true;
continue; continue;
}
var buff = new StringBuilder (pair.GetValue ('='), 32);
buff.AppendFormat (", {0}", pairs[i].Trim ());
DateTime expires;
if (
!DateTime.TryParseExact (
buff.ToString (),
new[] { "ddd, dd'-'MMM'-'yyyy HH':'mm':'ss 'GMT'", "r" },
CultureInfo.CreateSpecificCulture ("en-US"),
DateTimeStyles.AdjustToUniversal
| DateTimeStyles.AssumeUniversal,
out expires
)
)
expires = DateTime.Now;
cookie.Expires = expires.ToLocalTime (); if (pair.Equals ("httponly", compType)) {
cookie.HttpOnly = true;
continue;
} }
continue; continue;
} }
if (pair.IndexOf ("max-age", compType) == 0) { if (idx == 0) {
if (cookie != null) { if (cookie != null) {
var max = Int32.Parse (pair.GetValue ('=', true)); ret.Add (cookie);
var expires = DateTime.Now.AddSeconds ((double) max); cookie = null;
cookie.Expires = expires;
} }
continue; continue;
} }
if (pair.IndexOf ("path", compType) == 0) { var name = pair.Substring (0, idx).TrimEnd (' ');
if (cookie != null) var val = idx < pair.Length - 1
cookie.Path = pair.GetValue ('='); ? pair.Substring (idx + 1).TrimStart (' ')
: String.Empty;
if (name.Equals ("version", compType)) {
if (cookie == null)
continue;
if (val.Length == 0)
continue;
cookie.Version = Int32.Parse (val.Unquote ());
continue; continue;
} }
if (pair.IndexOf ("domain", compType) == 0) { if (name.Equals ("expires", compType)) {
if (cookie != null) if (val.Length == 0)
cookie.Domain = pair.GetValue ('='); continue;
if (i == pairs.Length - 1)
break;
i++;
if (cookie == null)
continue;
if (cookie.Expires != DateTime.MinValue)
continue;
var buff = new StringBuilder (val, 32);
buff.AppendFormat (", {0}", pairs[i].Trim ());
DateTime expires;
if (
!DateTime.TryParseExact (
buff.ToString (),
new[] { "ddd, dd'-'MMM'-'yyyy HH':'mm':'ss 'GMT'", "r" },
CultureInfo.CreateSpecificCulture ("en-US"),
DateTimeStyles.AdjustToUniversal
| DateTimeStyles.AssumeUniversal,
out expires
)
)
expires = DateTime.Now;
cookie.Expires = expires.ToLocalTime ();
continue; continue;
} }
if (pair.IndexOf ("port", compType) == 0) { if (name.Equals ("max-age", compType)) {
if (cookie != null) { if (cookie == null)
cookie.Port = !pair.Equals ("port", compType) continue;
? pair.GetValue ('=')
: "\"\""; if (val.Length == 0)
} continue;
var max = Int32.Parse (val.Unquote ());
var expires = DateTime.Now.AddSeconds ((double) max);
cookie.Expires = expires;
continue; continue;
} }
if (pair.IndexOf ("comment", compType) == 0) { if (name.Equals ("path", compType)) {
if (cookie != null) if (cookie == null)
cookie.Comment = urlDecode (pair.GetValue ('='), Encoding.UTF8); continue;
if (val.Length == 0)
continue;
cookie.Path = val;
continue; continue;
} }
if (pair.IndexOf ("commenturl", compType) == 0) { if (name.Equals ("domain", compType)) {
if (cookie != null) if (cookie == null)
cookie.CommentUri = pair.GetValue ('=', true).ToUri (); continue;
if (val.Length == 0)
continue;
cookie.Domain = val;
continue; continue;
} }
if (pair.Equals ("discard", compType)) { if (name.Equals ("port", compType)) {
if (cookie != null) if (cookie == null)
cookie.Discard = true; continue;
if (val.Length == 0)
continue;
cookie.Port = val;
continue; continue;
} }
if (pair.Equals ("secure", compType)) { if (name.Equals ("comment", compType)) {
if (cookie != null) if (cookie == null)
cookie.Secure = true; continue;
if (val.Length == 0)
continue;
cookie.Comment = urlDecode (val, Encoding.UTF8);
continue; continue;
} }
if (pair.Equals ("httponly", compType)) { if (name.Equals ("commenturl", compType)) {
if (cookie != null) if (cookie == null)
cookie.HttpOnly = true; continue;
if (val.Length == 0)
continue;
cookie.CommentUri = val.Unquote ().ToUri ();
continue; continue;
} }
@ -444,18 +493,6 @@ namespace WebSocketSharp.Net
cookie = null; cookie = null;
} }
var idx = pair.IndexOf ('=');
if (idx == -1)
continue;
if (idx == 0)
continue;
var name = pair.Substring (0, idx).TrimEnd (' ');
var val = idx < pair.Length - 1
? pair.Substring (idx + 1).TrimStart (' ')
: String.Empty;
cookie = new Cookie (name, val); cookie = new Cookie (name, val);
} }

Loading…
Cancel
Save