using Newtonsoft.Json;
using System;
using System.Web;
namespace Site.Services.Common
{
public static class CookieHelper
{
public static T GetCookieValue<T>(CookieKey key)
{
var cookies = HttpContext.Current?.Request?.Cookies;
if (cookies != null)
{
var compositeKey = CompositeKey(key);
if (cookies[compositeKey] != null)
{
var val = JsonConvert.DeserializeObject<T>(cookies[compositeKey].Value);
if (val != null)
{
return val;
}
}
}
return default(T);
}
public static void SetCookieValue(CookieKey key, object value, DateTime expiration)
{
var cookies = HttpContext.Current?.Response?.Cookies;
if (cookies != null)
{
var compositeKey = CompositeKey(key);
var json = JsonConvert.SerializeObject(value);
var cookie = new HttpCookie(compositeKey);
cookie.Value = json;
cookie.Expires = expiration;
if (cookies[compositeKey] != null)
{
cookies.Remove(compositeKey);
}
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
private static string CompositeKey(CookieKey key)
{
var format = "Key_{0}";
return string.Format(format, millId, environment, key.ToString());
}
}
}