MemoryCookieProvider
Represents the default cookie service. This class can be inherited.
using System;
using System.Globalization;
using System.Net;
namespace AngleSharp.Services.Default
{
public class MemoryCookieProvider : ICookieProvider
{
private readonly CookieContainer _container;
public CookieContainer Container => _container;
public MemoryCookieProvider()
{
_container = new CookieContainer();
}
public string GetCookie(string origin)
{
return _container.GetCookieHeader(new Uri(origin));
}
public void SetCookie(string origin, string value)
{
string cookieHeader = Sanatize(value);
_container.SetCookies(new Uri(origin), cookieHeader);
}
private static string Sanatize(string cookie)
{
string text = "expires=";
int num4;
for (int num = 0; num < cookie.Length; num = num4) {
int num2 = cookie.IndexOf(text, num, StringComparison.OrdinalIgnoreCase);
if (num2 == -1)
break;
int num3 = num2 + text.Length;
num4 = cookie.IndexOfAny(new char[2] {
';',
','
}, num3 + 4);
if (num4 == -1)
num4 = cookie.Length;
string text2 = cookie.Substring(0, num3);
string text3 = cookie.Substring(num3, num4 - num3);
string text4 = cookie.Substring(num4);
DateTime result = DateTime.Now;
if (DateTime.TryParse(text3.Replace("UTC", "GMT"), out result)) {
string text5 = result.ToString("ddd, dd MMM yyyy HH:mm:ss", CultureInfo.InvariantCulture);
cookie = string.Format("{0}{1}{2}", new object[3] {
text2,
text5,
text4
});
}
}
return cookie;
}
}
}