in src/Infrastructure/Extensions/SecretConfigurationExtension.cs [34:65]
public static void AddSecretProvider(
this IConfigurationBuilder configurationBuilder,
SecretsConfigurationSection secretsConfigurationSection)
{
if (secretsConfigurationSection?.Mapping == null ||
secretsConfigurationSection.Mapping.Count == 0)
{
throw new ArgumentException($"Invalid arguments were passes." +
$"SecretsConfigurationSection - cannot be null: {secretsConfigurationSection}." +
$"SecretsConfigurationSection.Mapping - cannot be null or empty: {secretsConfigurationSection?.Mapping}.");
}
var operationName = $"{nameof(SecretConfigurationExtension)}::{nameof(AddSecretProvider)} -";
var secrets = secretsConfigurationSection.Mapping.Keys.Cast<string>();
var secretNameToValueMap = new FileSecretProvider(secretsConfigurationSection.Path, secrets).GetSecretNameToValueMap();
Console.WriteLine($"{operationName} resolved {secretNameToValueMap.Count} secrets.");
// Creating a map that will represent the configuration.
var configToSecretValueMap = new Dictionary<string, string>();
foreach (var secretName in secretNameToValueMap.Keys)
{
var map = MapConfigToSecretValueWithSecretAsKey(secretName, secretsConfigurationSection.Mapping, secretNameToValueMap);
foreach (var mapEntry in map)
{
Console.WriteLine($"{operationName} mapped the following: '{secretName}' -> '{mapEntry.Key}'.");
configToSecretValueMap.Add(mapEntry.Key, mapEntry.Value);
}
}
configurationBuilder.AddInMemoryCollection(configToSecretValueMap);
}