ln.build/ln.build/secrets/SecretStorage.cs

44 lines
1.2 KiB
C#

using System.Collections.Generic;
using System.IO;
using System.IO.Enumeration;
using ln.json;
using ln.logging;
namespace ln.build.secrets
{
public class SecretStorage
{
public string FileName { get; }
Dictionary<string,string> secrets = new Dictionary<string, string>();
public SecretStorage(string filename)
{
FileName = filename;
LoadSecrets();
}
void LoadSecrets()
{
lock (this)
{
Logging.Log(LogLevel.INFO, "loading secrets from {0}", FileName);
if (File.Exists(FileName))
{
JSONObject secretsObject = JSONParser.ParseFile(FileName) as JSONObject;
foreach (string key in secretsObject.Keys)
{
secrets.Add(key, secretsObject[key].ToNative().ToString());
}
}
}
}
public string GetSecret(string key)
{
TryGetSecret(key, out string secret);
return secret;
}
public bool TryGetSecret(string key, out string secret) => secrets.TryGetValue(key, out secret);
}
}