| | | 1 | | using Elsa.Expressions.Contracts; |
| | | 2 | | using Elsa.Expressions.Helpers; |
| | | 3 | | using Elsa.Expressions.Models; |
| | | 4 | | |
| | | 5 | | namespace Elsa.Secrets.Expressions; |
| | | 6 | | |
| | | 7 | | /// <summary> |
| | | 8 | | /// Resolves Secret expressions through the configured secret resolver. |
| | | 9 | | /// </summary> |
| | 12 | 10 | | public class SecretExpressionHandler(ISecretResolver secretResolver, IWellKnownTypeRegistry wellKnownTypeRegistry) : IEx |
| | | 11 | | { |
| | | 12 | | /// <inheritdoc /> |
| | | 13 | | public async ValueTask<object?> EvaluateAsync(Expression expression, Type returnType, ExpressionExecutionContext con |
| | | 14 | | { |
| | 5 | 15 | | if (expression.Value is not SecretReference reference) |
| | 0 | 16 | | throw new InvalidOperationException("Secret expression value must be a SecretReference."); |
| | | 17 | | |
| | 5 | 18 | | if (string.IsNullOrWhiteSpace(reference.Name)) |
| | 0 | 19 | | throw new InvalidOperationException("Secret expression reference must specify a secret name."); |
| | | 20 | | |
| | 5 | 21 | | var value = await secretResolver.ResolveAsync(reference, context.CancellationToken); |
| | 2 | 22 | | return value.ConvertTo(returnType, new ObjectConverterOptions(WellKnownTypeRegistry: wellKnownTypeRegistry)); |
| | 2 | 23 | | } |
| | | 24 | | } |