public static void AddSecretProvider()

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);
        }