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