51 lines
1.6 KiB
C#
51 lines
1.6 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)
|
|
{
|
|
//Logging.Log(LogLevel.INFO, "loading secret {0}", key);
|
|
secrets.Add(key, secretsObject[key].ToNative().ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public string GetSecret(string key)
|
|
{
|
|
//Logging.Log(LogLevel.INFO, "trying to fetch secret for: [{0}]", key);
|
|
TryGetSecret(key, out string secret);
|
|
return secret;
|
|
}
|
|
public bool TryGetSecret(string key, out string secret){
|
|
//Logging.Log(LogLevel.INFO, "trying to fetch secret for: [{0}]", key);
|
|
bool success = secrets.TryGetValue(key, out secret);
|
|
//Logging.Log(LogLevel.INFO, "{1} to fetch secret for: [{0}]", key, success ? "succeded" : "failed");
|
|
return success;
|
|
}
|
|
}
|
|
} |