| | | 1 | | namespace Elsa.Secrets.Services; |
| | | 2 | | |
| | 31 | 3 | | public class DefaultSecretResolver(ISecretManager secretManager) : ISecretResolver |
| | | 4 | | { |
| | 6 | 5 | | public Task<string> ResolveAsync(string name, CancellationToken cancellationToken = default) => ResolveAsync(new Sec |
| | | 6 | | |
| | | 7 | | public async Task<string> ResolveAsync(SecretReference reference, CancellationToken cancellationToken = default) |
| | | 8 | | { |
| | 7 | 9 | | var secret = await secretManager.GetAsync(reference.Name, cancellationToken); |
| | 7 | 10 | | if (secret == null) |
| | 0 | 11 | | throw new InvalidOperationException($"Secret '{reference.Name}' was not found."); |
| | | 12 | | |
| | 7 | 13 | | if (!string.IsNullOrWhiteSpace(reference.TypeName) && !string.Equals(secret.TypeName, reference.TypeName, String |
| | 1 | 14 | | throw new InvalidOperationException($"Secret '{reference.Name}' is not compatible with required type '{refer |
| | | 15 | | |
| | 6 | 16 | | if (!string.IsNullOrWhiteSpace(reference.Scope) && !string.Equals(secret.Scope, reference.Scope, StringCompariso |
| | 0 | 17 | | throw new InvalidOperationException($"Secret '{reference.Name}' is not compatible with required scope '{refe |
| | | 18 | | |
| | 6 | 19 | | var payload = await secretManager.ResolvePayloadAsync(secret, cancellationToken); |
| | 5 | 20 | | return payload.Value!; |
| | 5 | 21 | | } |
| | | 22 | | } |