Skip to content

Commit 85a0f63

Browse files
feat: Add builder for key vault uri
1 parent 21ba100 commit 85a0f63

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/Core/EnvironmentConfigurationExtension.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,23 @@ public static class EnvironmentConfigurationExtension
1717
/// <param name="services">DI Service Collection.</param>
1818
/// <param name="configuration">Configuration Manager.</param>
1919
/// <param name="applicationName">Application name.</param>
20+
/// <param name="keyVaultUriFunc">Function to build key vault Uri based in contemporary environment configuration.</param>
2021
/// <param name="applicationDescription">Application description.</param>
21-
/// <param name="managedIdentityResourceIdFunc">Resource Identifier if using user assigned managed identity.</param>
22+
/// <param name="managedIdentityResourceIdFunc">Function to build managed identity resource id based in contemporary environment configuration.</param>
2223
/// <returns>Environment Configuration</returns>
2324
/// <exception cref="NotSupportedException">If RuntimeEnvironment is unsupported.</exception>
2425
/// <exception cref="ArgumentException">If AZ is not authenticated.</exception>
26+
/// <exception cref="InvalidOperationException">When environment variables are missing.</exception>
2527
public static EnvironmentConfiguration AddEnvironmentConfiguration(
2628
this IServiceCollection services,
2729
ConfigurationManager configuration,
2830
string applicationName,
31+
Func<EnvironmentConfiguration, Uri> keyVaultUriFunc,
2932
string applicationDescription = "N/A",
3033
Func<EnvironmentConfiguration, ResourceIdentifier>? managedIdentityResourceIdFunc = null)
3134
{
35+
ArgumentNullException.ThrowIfNull(keyVaultUriFunc);
36+
3237
var environmentConfiguration =
3338
GetEnvironmentConfiguration(configuration, applicationName, applicationDescription);
3439

@@ -49,10 +54,7 @@ public static EnvironmentConfiguration AddEnvironmentConfiguration(
4954
if (environmentConfiguration.RuntimeEnvironment is
5055
RuntimeEnvironment.LocalDeveloperMachine or RuntimeEnvironment.Cloud)
5156
{
52-
var keuVaultUri = configuration["ApplicationConfiguration:KeyVaultUri"];
53-
ArgumentNullException.ThrowIfNull(keuVaultUri);
54-
55-
configuration.AddAzureKeyVault(new Uri(keuVaultUri), credential);
57+
configuration.AddAzureKeyVault(keyVaultUriFunc(environmentConfiguration), credential);
5658

5759
services.AddAzureClients(configure => configure.UseCredential(credential));
5860
}
@@ -108,11 +110,11 @@ private static EnvironmentConfiguration GetEnvironmentConfiguration(
108110
Console.WriteLine($" Infrastructure environment: {infrastructureEnvironment}");
109111
Console.WriteLine($" Runtime environment: {runtimeEnvironment}");
110112

111-
var tenantId = configuration["ApplicationConfiguration:TenantId"];
112-
ArgumentNullException.ThrowIfNull(tenantId);
113+
var tenantId = configuration["ApplicationConfiguration:TenantId"]
114+
?? throw new InvalidOperationException("ApplicationConfiguration:TenantId is not set.");
113115

114-
var resourceGroupName = configuration["ApplicationConfiguration:ResourceGroupName"];
115-
ArgumentNullException.ThrowIfNull(resourceGroupName);
116+
var resourceGroupName = configuration["ApplicationConfiguration:ResourceGroupName"] ??
117+
throw new InvalidOperationException("ApplicationConfiguration:ResourceGroupName is not set.");
116118

117119
configuration.AddJsonFile("appsettings.json", optional: true)
118120
.AddJsonFile($"appsettings.{applicationEnvironment}.json", optional: true);

0 commit comments

Comments
 (0)