up
Some checks failed
Build Test Deploy / build-test (push) Has been cancelled
Build Test Deploy / authority-container (push) Has been cancelled
Build Test Deploy / docs (push) Has been cancelled
Build Test Deploy / deploy (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Some checks failed
Build Test Deploy / build-test (push) Has been cancelled
Build Test Deploy / authority-container (push) Has been cancelled
Build Test Deploy / docs (push) Has been cancelled
Build Test Deploy / deploy (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using Microsoft.AspNetCore.DataProtection.Repositories;
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Ablera.Serdica.Authentication.Utilities;
|
||||
|
||||
// Move this to ...Authentication.Redis or something
|
||||
public sealed class RedisAndFileSystemXmlRepository : IXmlRepository
|
||||
{
|
||||
private readonly IDatabase _db;
|
||||
private readonly string _prefix;
|
||||
|
||||
public RedisAndFileSystemXmlRepository(IDatabase db, string prefix)
|
||||
{
|
||||
_db = db;
|
||||
_prefix = prefix;
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<XElement> GetAllElements()
|
||||
{
|
||||
var keys = _db.SetMembers(_prefix);
|
||||
var list = new List<XElement>();
|
||||
|
||||
foreach (var redisValue in keys)
|
||||
{
|
||||
var xml = redisValue.ToString();
|
||||
try { list.Add(XElement.Parse(xml)); }
|
||||
catch { /* ignore corrupted entry */ }
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public void StoreElement(XElement element, string friendlyName)
|
||||
{
|
||||
var xml = element.ToString(SaveOptions.DisableFormatting);
|
||||
|
||||
/* 1) write to Redis (set-add = idempotent) */
|
||||
_db.SetAdd(_prefix, xml);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user