Skip to content

Commit b50f309

Browse files
committed
azure key vault extension updated to use latest sharede lib
1 parent f924215 commit b50f309

File tree

3 files changed

+39
-42
lines changed

3 files changed

+39
-42
lines changed

src/Extensions/RestApia.Extensions.Auth.Basic/BasicAuthService.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ public class BasicAuthService: IAuthValuesProvider
2929
public Task<ReloadValuesResults> ReloadValuesAsync(IReadOnlyCollection<ValueModel> inputValues, ValuesReloadMode mode) =>
3030
Task.FromResult(ReloadValues(inputValues));
3131

32-
private static ReloadValuesResults ReloadValues(IReadOnlyCollection<ValueModel> userValues)
32+
private static ReloadValuesResults ReloadValues(IReadOnlyCollection<ValueModel> inputValues)
3333
{
3434
// all templated values must be replaced
35-
var hasUnresolvedValues = userValues.All(x => x.Value.Parts.All(y => !y.IsTemplatedVariable));
35+
var hasUnresolvedValues = inputValues.All(x => x.Value.Parts.All(y => !y.IsTemplatedVariable));
3636
if (!hasUnresolvedValues) return ReloadValuesResults.Failed;
3737

38-
if (!VariablesConverter.TryDeserialize<BasicAuthSettings>(userValues, out var settings))
38+
if (!VariablesConverter.TryDeserialize<BasicAuthSettings>(inputValues, out var settings))
3939
return ReloadValuesResults.Failed;
4040

4141
// validate values

src/Extensions/RestApia.Extensions.ValuesProvider.AzureKeyVault/KeyVaultValuesProvider.cs

+32-36
Original file line numberDiff line numberDiff line change
@@ -14,63 +14,59 @@
1414
namespace RestApia.Extensions.ValuesProvider.AzureKeyVault;
1515

1616
[SuppressMessage("Performance", "CA1822:Mark members as static")]
17-
public class KeyVaultValuesProvider: IUserValuesProvider
17+
public class KeyVaultValuesProvider : IUserValuesProvider
1818
{
1919
private const string ValuesLoadedDateKey = "ValuesLoadedDate";
2020

21-
private readonly ILogger _logger;
22-
private readonly IExtensionDialogs _dialogs;
23-
24-
public KeyVaultValuesProvider(ILogger logger, IExtensionDialogs dialogs)
25-
{
26-
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
27-
_dialogs = dialogs ?? throw new ArgumentNullException(nameof(dialogs));
28-
}
29-
30-
public ValuesProviderSettings GetProviderSettings() => new ()
21+
private static readonly ValuesProviderSettings Settings = new ()
3122
{
3223
Title = "Azure KeyVault Secrets",
3324
DefaultName = "Azure Secrets",
3425
CanBeReloaded = true,
3526
HelpPageUrl = "https://github.com/RestApia/RestApia.Shared/tree/main/src/Extensions/RestApia.Extensions.ValuesProvider.AzureKeyVault",
3627
ReservedValues =
3728
[
38-
new () { Name = "KeyVaultUrl", Description = "KeyVault URL", IsRequired = true },
29+
new () { Name = nameof(KeyVaultSettings.KeyVaultUrl), Description = "KeyVault URL", IsRequired = true, Placeholder = "https://my-keyvault.vault.azure.net" },
3930
],
4031
};
4132

42-
// public async Task<IReadOnlyCollection<ExtensionValueModel>> GetInjectionAsync(Guid settingsId, IReadOnlyCollection<ExtensionValueModel> userValues, bool forceReload)
43-
// {
44-
// var stored = _storage.GetValues(settingsId);
45-
//
46-
// // let's see if values are already loaded
47-
// if (stored.Any(x => x.Name.Equals(ValuesLoadedDateKey, StringComparison.Ordinal) && x.Type == ValueTypeEnum.Other))
48-
// return stored;
49-
//
50-
// stored = await GetRemoteValuesAsync(userValues);
51-
// _storage.SetValues(stored, settingsId);
52-
//
53-
// return stored;
54-
// }
33+
private readonly ILogger _logger;
34+
private readonly IExtensionDialogs _dialogs;
5535

56-
public async Task<ReloadValuesResults> ReloadValuesAsync(IReadOnlyCollection<ValueModel> inputValues, ValuesReloadMode mode)
36+
public KeyVaultValuesProvider(ILogger logger, IExtensionDialogs dialogs)
5737
{
58-
var validInputs = inputValues.All(x => x.Value.Parts.All(y => !y.IsTemplatedVariable));
59-
if (!validInputs) return ReloadValuesResults.Failed;
60-
61-
return new ReloadValuesResults
62-
{ Values = await GetRemoteValuesAsync(inputValues), Status = ValueReloadResultType.Success };
38+
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
39+
_dialogs = dialogs ?? throw new ArgumentNullException(nameof(dialogs));
6340
}
6441

65-
private async Task<IReadOnlyCollection<ValueModel>> GetRemoteValuesAsync(IReadOnlyCollection<ValueModel> userValues)
42+
public ValuesProviderSettings GetProviderSettings() => Settings;
43+
44+
public async Task<ReloadValuesResults> ReloadValuesAsync(IReadOnlyCollection<ValueModel> inputValues, ValuesReloadMode mode)
6645
{
67-
if (VariablesConverter.TryDeserialize(userValues, out KeyVaultSettings settings) is FalseResult error)
46+
// all templated values must be replaced
47+
var hasUnresolvedValues = inputValues.All(x => x.Value.Parts.All(y => !y.IsTemplatedVariable));
48+
if (!hasUnresolvedValues) return ReloadValuesResults.Failed;
49+
50+
// validate settings
51+
if (!Settings.ValidateReserved(inputValues, out var errors))
6852
{
69-
_dialogs.ShowError(error.Message ?? "Cannot read KeyVault settings.");
70-
return [];
53+
var resultError = errors.Count == 1
54+
? errors.ElementAt(0)
55+
: errors.Select(x => $"- {x}").JoinString("\r\n");
56+
return ReloadValuesResults.FailedWithMessage(resultError);
7157
}
7258

73-
if (settings.KeyVaultUrl.IsEmpty() || !Uri.TryCreate(settings.KeyVaultUrl, UriKind.Absolute, out var keyVaultUrl))
59+
// try to deserialize settings
60+
if (!VariablesConverter.TryDeserialize<KeyVaultSettings>(inputValues, out var settings))
61+
return ReloadValuesResults.Failed;
62+
63+
return new ReloadValuesResults
64+
{ Values = await GetRemoteValuesAsync(settings), Status = ValueReloadResultType.Success };
65+
}
66+
67+
private async Task<IReadOnlyCollection<ValueModel>> GetRemoteValuesAsync(KeyVaultSettings settings)
68+
{
69+
if (!Uri.TryCreate(settings.KeyVaultUrl, UriKind.Absolute, out var keyVaultUrl))
7470
{
7571
_dialogs.ShowError("Cannot read KeyVault secret values. KeyVault URL is not valid.");
7672
return [];

src/Extensions/RestApia.Extensions.ValuesProvider.AzureKeyVault/RestApia.Extensions.ValuesProvider.AzureKeyVault.csproj

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
5-
<ImplicitUsings>enable</ImplicitUsings>
6-
<Nullable>enable</Nullable>
4+
<Title>Azure KeyVault Values Provider</Title>
5+
<Description>Extensions provides Azure KeyVault secrets as variables</Description>
6+
<RepositoryUrl>https://github.com/RestApia/RestApia.Shared/tree/main/src/Extensions/RestApia.Extensions.ValuesProvider.AzureKeyVault</RepositoryUrl>
7+
<PackageTags>RestApia, Extension, Values Provider</PackageTags>
78
</PropertyGroup>
89

910
<ItemGroup>

0 commit comments

Comments
 (0)