mirror of
https://github.com/bitwarden/server.git
synced 2025-04-07 05:58:13 -05:00
48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
using System.Text.Json;
|
|
using Microsoft.Extensions.Caching.Distributed;
|
|
|
|
namespace Bit.Core.Utilities;
|
|
|
|
public static class DistributedCacheExtensions
|
|
{
|
|
public static void Set<T>(this IDistributedCache cache, string key, T value)
|
|
{
|
|
Set(cache, key, value, new DistributedCacheEntryOptions());
|
|
}
|
|
|
|
public static void Set<T>(this IDistributedCache cache, string key, T value,
|
|
DistributedCacheEntryOptions options)
|
|
{
|
|
var bytes = JsonSerializer.SerializeToUtf8Bytes(value);
|
|
cache.Set(key, bytes, options);
|
|
}
|
|
|
|
public static Task SetAsync<T>(this IDistributedCache cache, string key, T value)
|
|
{
|
|
return SetAsync(cache, key, value, new DistributedCacheEntryOptions());
|
|
}
|
|
|
|
public static Task SetAsync<T>(this IDistributedCache cache, string key, T value,
|
|
DistributedCacheEntryOptions options)
|
|
{
|
|
var bytes = JsonSerializer.SerializeToUtf8Bytes(value);
|
|
return cache.SetAsync(key, bytes, options);
|
|
}
|
|
|
|
public static bool TryGetValue<T>(this IDistributedCache cache, string key, out T value)
|
|
{
|
|
var val = cache.Get(key);
|
|
value = default;
|
|
if (val == null) return false;
|
|
try
|
|
{
|
|
value = JsonSerializer.Deserialize<T>(val);
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|