using System.Text;
using System.Web;
using System.IO.Compression;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using SevenZip.Compression.LZMA;
namespace CompressedCookies
{
public static class CpCookiesLzma
{
public static int Set(string cookieName, object cookieValue, DateTime expirationDate)
{
int siz = 0;
try
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, cookieValue);
byte[] inbyt = ms.ToArray();
byte[] b = SevenZip.Compression.LZMA.SevenZipHelper.Compress(inbyt);
string sCookieVal = Convert.ToBase64String(b);
HttpCookie cook = new HttpCookie(cookieName);
cook.Value = sCookieVal;
siz = sCookieVal.Length;
cook.Expires = expirationDate;
HttpContext.Current.Response.Cookies.Add(cook);
}
catch
{
throw ;
}
return siz;
}
public static object Get(string cookieName)
{
object retval = null;
try
{
byte[] bytCook = Convert.FromBase64String(HttpContext.Current.Request.Cookies[cookieName].Value);
byte[] outByt = SevenZip.Compression.LZMA.SevenZipHelper.Decompress(bytCook);
MemoryStream outMs = new MemoryStream(outByt);
outMs.Seek(0, 0);
BinaryFormatter bf = new BinaryFormatter();
retval = (object)bf.Deserialize(outMs, null);
}
catch(Exception ex)
{
throw ex;
}
return retval;
}
public static bool Delete(string cookieName)
{
bool retval = true;
try
{
HttpContext.Current.Request.Cookies[cookieName].Expires = DateTime.Now.AddDays(-365);
}
catch
{
retval = false;
}
return retval;
}
}
}
