| File: AbstractAzureKeyVaultComponent.cs | Web Access |
| Project: src\src\Components\Aspire.Azure.Security.KeyVault\Aspire.Azure.Security.KeyVault.csproj (Aspire.Azure.Security.KeyVault) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; using Aspire.Azure.Common; using Azure.Core; using Azure.Core.Extensions; using Microsoft.Extensions.Azure; namespace Aspire.Azure.Security.KeyVault; /// <summary> /// <para>Abstracts the common configuration binding required by <see cref="AzureComponent{TSettings, TClient, TClientOptions}"/></para> /// <para>Deriving type implements KeyVaultClient specific item:</para> /// <para><see cref="AzureComponent{TSettings, TClient, TClientOptions}.CreateHealthCheck(TClient, TSettings)"/></para> /// </summary> /// <typeparam name="TClient">The KeyVaultClient type for this component.</typeparam> /// <typeparam name="TOptions">The associated configuration for the <typeparamref name="TClient"/></typeparam> internal abstract class AbstractAzureKeyVaultComponent<TClient, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TOptions> : AzureComponent<AzureSecurityKeyVaultSettings, TClient, TOptions> where TClient : class where TOptions : class { internal abstract TClient CreateComponentClient(Uri vaultUri, TOptions options, TokenCredential cred); protected override IAzureClientBuilder<TClient, TOptions> AddClient(AzureClientFactoryBuilder azureFactoryBuilder, AzureSecurityKeyVaultSettings settings, string connectionName, string configurationSectionName) { return azureFactoryBuilder.AddClient<TClient, TOptions>((options, cred, _) => { if (settings.VaultUri is null) { throw new InvalidOperationException($"VaultUri is missing. It should be provided in 'ConnectionStrings:{connectionName}' or under the 'VaultUri' key in the '{configurationSectionName}' configuration section."); } return CreateComponentClient(settings.VaultUri, options, cred); }); } protected override bool GetHealthCheckEnabled(AzureSecurityKeyVaultSettings settings) => !settings.DisableHealthChecks; protected override TokenCredential? GetTokenCredential(AzureSecurityKeyVaultSettings settings) => settings.Credential; protected override bool GetMetricsEnabled(AzureSecurityKeyVaultSettings settings) => false; protected override bool GetTracingEnabled(AzureSecurityKeyVaultSettings settings) => !settings.DisableTracing; }