public static class CookieExtensions { ////// Sets a persistent cookie which expires after the given number of days /// /// The HtmDocument to extend /// the cookie key /// the cookie value /// The number of days before the cookie expires public static void SetCookie(this HtmlDocument doc, string key, string value, int days) { DateTime expiration = DateTime.UtcNow + TimeSpan.FromDays(days); SetCookie(doc, key, value, expiration); } ////// Sets a persistent cookie with an expiration date /// /// The HtmDocument to extend /// the cookie key /// the cookie value public static void SetCookie(this HtmlDocument doc, string key, string value, DateTime expiration) { string oldCookie = doc.GetProperty("cookie") as String; string cookie = String.Format("{0}={1};expires={2}", key, value, expiration.ToString("R")); doc.SetProperty("cookie", cookie); } ////// Retrieves an existing cookie /// /// The HtmDocument to extend /// cookie key ///null if the cookie does not exist, otherwise the cookie value public static string GetCookie(this HtmlDocument doc, string key) { string[] cookies = doc.Cookies.Split(';'); key += '='; foreach (string cookie in cookies) { string cookieStr = cookie.Trim(); if (cookieStr.StartsWith(key, StringComparison.OrdinalIgnoreCase)) { string[] vals = cookieStr.Split('='); if (vals.Length >= 2) { return vals[1]; } return string.Empty; } } return null; } ////// Deletes a specified cookie by setting its value to empty and expiration to -1 days /// /// The HtmDocument to extend /// the cookie key to delete public static void DeleteCookie(this HtmlDocument doc, string key) { string oldCookie = doc.GetProperty("cookie") as String; DateTime expiration = DateTime.UtcNow - TimeSpan.FromDays(1); string cookie = String.Format("{0}=;expires={1}", key, expiration.ToString("R")); doc.SetProperty("cookie", cookie); } }
Monday, January 30, 2012
Best Extension Methods: Cookie Extension Methods
Best Cookies Extension Methods
Share This!
Labels:
C#.NET,
Extension Methods
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment