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
				
			
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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);
 | |
|     }
 | |
| }
 | |
| 
 |