up
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
|
||||
namespace StellaOps.Cryptography;
|
||||
|
||||
public sealed class CryptoRegistryProfiles
|
||||
{
|
||||
public IReadOnlyList<string> PreferredProviders { get; }
|
||||
public string ActiveProfile { get; }
|
||||
public IReadOnlyDictionary<string, IReadOnlyList<string>> Profiles { get; }
|
||||
|
||||
public CryptoRegistryProfiles(
|
||||
IEnumerable<string> preferredProviders,
|
||||
string activeProfile,
|
||||
IDictionary<string, IReadOnlyList<string>> profiles)
|
||||
{
|
||||
PreferredProviders = (preferredProviders ?? throw new ArgumentNullException(nameof(preferredProviders)))
|
||||
.Where(p => !string.IsNullOrWhiteSpace(p))
|
||||
.Select(p => p.Trim())
|
||||
.ToArray();
|
||||
|
||||
ActiveProfile = string.IsNullOrWhiteSpace(activeProfile)
|
||||
? throw new ArgumentException("Active profile is required", nameof(activeProfile))
|
||||
: activeProfile.Trim();
|
||||
|
||||
Profiles = new ReadOnlyDictionary<string, IReadOnlyList<string>>(profiles ??
|
||||
throw new ArgumentNullException(nameof(profiles)));
|
||||
}
|
||||
|
||||
public IReadOnlyList<string> ResolvePreferredOrder(string? profileName = null)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(profileName) && Profiles.TryGetValue(profileName!, out var specific))
|
||||
{
|
||||
return specific;
|
||||
}
|
||||
|
||||
if (Profiles.TryGetValue(ActiveProfile, out var active))
|
||||
{
|
||||
return active;
|
||||
}
|
||||
|
||||
return PreferredProviders;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user