Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 56 additions & 64 deletions src/CookieManager/DefaultCookieManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace CookieManager
{
/// <summary>
/// Implementation of <see cref="ICookieManager" />
/// </summary>
public class DefaultCookieManager : ICookieManager
/// <summary>
/// Implementation of <see cref="ICookieManager" />
/// </summary>
public class DefaultCookieManager : ICookieManager
{
private readonly ICookie _cookie;

Expand All @@ -22,30 +22,26 @@ public bool Contains(string key)
return _cookie.Contains(key);
}

/// <summary>
/// Get the value or set the value if specified key is expire
/// </summary>
/// <typeparam name="T">TSource</typeparam>
/// <param name="key">Key</param>
/// <param name="acquirer">action to execute</param>
/// <param name="expireTime">Expire time</param>
/// <returns>TSource object</returns>
public T GetOrSet<T>(string key, Func<T> acquirer, int? expireTime = default(int?))
/// <summary>
/// Get the value or set the value if specified key is expire
/// </summary>
/// <typeparam name="T">TSource</typeparam>
/// <param name="key">Key</param>
/// <param name="acquirer">action to execute</param>
/// <param name="expireTime">Expire time</param>
/// <returns>TSource object</returns>
public T GetOrSet<T>(string key, Func<T> acquirer, int? expireTime = default)
{
if(_cookie.Contains(key))
try
{
//get the existing value
return GetExisting<T>(key);
return GetExisting<T>(key);
}
else
{
var value = acquirer();
this.Set(key, value, expireTime);
catch { }

return value;
}
var value = acquirer();
Set(key, value, expireTime);

return GetExisting<T>(key);
return value;
}

private T GetExisting<T>(string key)
Expand All @@ -58,59 +54,55 @@ private T GetExisting<T>(string key)
return JsonConvert.DeserializeObject<T>(value);
}

/// <summary>
/// remove the key
/// </summary>
/// <param name="key"></param>
/// <summary>
/// remove the key
/// </summary>
/// <param name="key"></param>
public void Remove(string key)
{
_cookie.Remove(key);
}

/// <summary>
/// set the value
/// </summary>
/// <param name="key">key</param>
/// <param name="value">value</param>
/// <param name="expireTime"></param>
/// <summary>
/// set the value
/// </summary>
/// <param name="key">key</param>
/// <param name="value">value</param>
/// <param name="expireTime"></param>
public void Set(string key, object value, int? expireTime = default(int?))
{
_cookie.Set(key, JsonConvert.SerializeObject(value), expireTime);
}

/// <summary>
/// get the value of specified key
/// </summary>
/// <typeparam name="T">T object</typeparam>
/// <param name="key">Key</param>
/// <returns>T object</returns>
public T Get<T>(string key)

/// <summary>
/// get the value of specified key
/// </summary>
/// <typeparam name="T">T object</typeparam>
/// <param name="key">Key</param>
/// <returns>T object</returns>
public T Get<T>(string key)
{
return GetExisting<T>(key);
}

public void Set(string key, object value, CookieOptions option)
{
_cookie.Set(key, JsonConvert.SerializeObject(value), option);
}

public T GetOrSet<T>(string key, Func<T> acquirer, CookieOptions option)
{
if (_cookie.Contains(key))
{
//get the existing value
return GetExisting<T>(key);
}
else
{
var value = acquirer();
this.Set(key, value, option);

return value;
}

return GetExisting<T>(key);
}
}
public void Set(string key, object value, CookieOptions option)
{
_cookie.Set(key, JsonConvert.SerializeObject(value), option);
}

public T GetOrSet<T>(string key, Func<T> acquirer, CookieOptions option)
{
try
{
return GetExisting<T>(key);
}
catch { }

var value = acquirer();
Set(key, value, option);

return value;
}
}
}