mirror of
https://github.com/gwdevhub/Daybreak.git
synced 2026-07-24 03:56:30 +00:00
46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using System.Extensions;
|
|
using System.Reflection;
|
|
using System.Text.Json;
|
|
|
|
namespace Daybreak.Configuration;
|
|
|
|
public static class SecretManager
|
|
{
|
|
private static JsonDocument? SecretsHolder;
|
|
|
|
public static string GetSecret(SecretKeys secretKey)
|
|
{
|
|
SecretsHolder ??= LoadSecrets();
|
|
if (SecretsHolder.RootElement.TryGetProperty(secretKey.Key, out var element))
|
|
{
|
|
return element.GetString() ?? string.Empty;
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
|
|
private static JsonDocument LoadSecrets()
|
|
{
|
|
try
|
|
{
|
|
var serializedSecrets = Assembly.GetExecutingAssembly().GetManifestResourceStream("Daybreak.secrets.json")?.ReadAllBytes().GetString() ?? throw new InvalidOperationException("Could not load Daybreak.secrets.json from assembly");
|
|
serializedSecrets = TrimUnwantedCharacters(serializedSecrets);
|
|
return JsonDocument.Parse(serializedSecrets);
|
|
}
|
|
catch
|
|
{
|
|
return JsonDocument.Parse("{}");
|
|
}
|
|
}
|
|
|
|
private static string TrimUnwantedCharacters(string s)
|
|
{
|
|
return new string([.. s.Where(c =>
|
|
char.IsWhiteSpace(c) ||
|
|
char.IsLetterOrDigit(c) ||
|
|
char.IsSymbol(c) ||
|
|
char.IsSeparator(c) ||
|
|
char.IsPunctuation(c))]);
|
|
}
|
|
}
|