Skip to content

Commit 009eadc

Browse files
committed
all changes for new providers system
1 parent 4dbd53c commit 009eadc

34 files changed

+633
-430
lines changed

build-all.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ nuke Shared_Build --SharedLibVersion $version
99
# find all in Extensions folder
1010
#$extensions = Get-ChildItem -Path .\src\Extensions -Directory
1111
$extensions = @(
12-
[PSCustomObject]@{ Name = "RestApia.Extensions.ValuesProvider.AzureKeyVault" }
12+
[PSCustomObject]@{ Name = "RestApia.Extensions.ValuesProvider.AzureKeyVault" },
13+
[PSCustomObject]@{ Name = "RestApia.Extensions.ValuesProvider.CollectionValuesProvider" }
1314
)
1415

1516
foreach ($extension in $extensions) {
Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,57 @@
1-
using System.Text;
1+
using System.Diagnostics.CodeAnalysis;
2+
using System.Text;
3+
using RestApia.Shared.Common;
24
using RestApia.Shared.Common.Enums;
35
using RestApia.Shared.Common.Models;
4-
using RestApia.Shared.Extensions.AuthService;
6+
using RestApia.Shared.Common.Services;
7+
using RestApia.Shared.Extensions.ValuesProviderService.Enums;
8+
using RestApia.Shared.Extensions.ValuesProviderService.Interfaces;
9+
using RestApia.Shared.Extensions.ValuesProviderService.Models;
510
namespace RestApia.Extensions.Auth.Basic;
611

7-
public class BasicAuthService : IAuthService
12+
public class BasicAuthService: IAuthValuesProvider
813
{
9-
public Type SettingsType => typeof(BasicAuthSettings);
14+
private static readonly ValuesProviderSettings Settings = new ()
15+
{
16+
Title = "Basic Authorization",
17+
CanBeReloaded = true,
18+
CanBeCached = false,
19+
ReservedValues =
20+
[
21+
new () { Name = nameof(BasicAuthSettings.Name), Description = "User name" },
22+
new () { Name = nameof(BasicAuthSettings.Password), Description = "User Password" },
23+
],
24+
};
1025

11-
public string DisplayName => "Basic Authorization";
12-
public bool IsReloadFeatureAvailable => false;
13-
public bool IsShowPayloadFeatureAvailable => true;
26+
public ValuesProviderSettings GetProviderSettings() => Settings;
1427

15-
public Task<IReadOnlyCollection<ExtensionValueModel>> GetValuesAsync(object settingsObj, Guid authId) => Task.FromResult(GetValues(settingsObj));
28+
[SuppressMessage("Performance", "CA1822:Mark members as static")]
29+
public Task<ReloadValuesResults> ReloadValuesAsync(IReadOnlyCollection<ValueModel> inputValues, ValuesReloadMode mode) =>
30+
Task.FromResult(ReloadValues(inputValues));
1631

17-
private static IReadOnlyCollection<ExtensionValueModel> GetValues(object rawSettings)
32+
private static ReloadValuesResults ReloadValues(IReadOnlyCollection<ValueModel> userValues)
1833
{
19-
if (rawSettings is not BasicAuthSettings settings) return [];
20-
var token = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{settings.UserName}:{settings.Password}"));
34+
// all templated values must be replaced
35+
var hasUnresolvedValues = userValues.All(x => x.Value.Parts.All(y => !y.IsTemplatedVariable));
36+
if (!hasUnresolvedValues) return ReloadValuesResults.Failed;
37+
38+
if (!VariablesConverter.TryDeserialize<BasicAuthSettings>(userValues, out var settings))
39+
return ReloadValuesResults.Failed;
40+
41+
// validate values
42+
var settingsErrors = new List<string>();
43+
if (settings.Name.IsEmpty())
44+
settingsErrors.Add($"{nameof(settings.Name)} value cannot be empty");
2145

22-
return
46+
if (settingsErrors.Count > 0)
47+
return ReloadValuesResults.FailedWithMessage(settingsErrors.JoinString("\n"));
48+
49+
var token = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{settings.Name}:{settings.Password}"));
50+
IReadOnlyCollection<ValueModel> result =
2351
[
2452
new () { Name = "Authorization", Type = ValueTypeEnum.Header, Value = $"Basic {token}" },
2553
];
26-
}
2754

28-
public Task<bool> ReloadAsync(object settings, Guid authId) => throw new NotSupportedException();
55+
return new ReloadValuesResults { Values = result, Status = ValueReloadResultType.Success };
56+
}
2957
}
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
1-
using RestApia.Shared.Common.Attributes;
2-
namespace RestApia.Extensions.Auth.Basic;
1+
namespace RestApia.Extensions.Auth.Basic;
32

43
public record BasicAuthSettings
54
{
6-
[ContentValue("Name", "User login name", IsRequired = true)]
7-
public string UserName { get; init; } = string.Empty;
8-
9-
[ContentValue("Password", "User password", IsRequired = true)]
5+
public string Name { get; init; } = string.Empty;
106
public string Password { get; init; } = string.Empty;
117
}

0 commit comments

Comments
 (0)