elsa-core/src/modules/Elsa.Modules.Http/Activities/HttpTrigger.cs

32 lines
1.2 KiB
C#
Raw Normal View History

2022-01-04 08:42:12 +00:00
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using Elsa.Attributes;
using Elsa.Management.Models;
using Elsa.Models;
2022-02-01 19:45:11 +00:00
namespace Elsa.Modules.Http;
2022-01-04 08:42:12 +00:00
public class HttpTrigger : TriggerActivity
2022-01-04 08:42:12 +00:00
{
[Input] public Input<string> Path { get; set; } = default!;
[Input(
Options = new[] { "GET", "POST", "PUT" },
UIHint = InputUIHints.CheckList
)]
public Input<ICollection<string>> SupportedMethods { get; set; } = new(new[] { HttpMethod.Get.Method });
[Output] public Output<HttpRequestModel>? Result { get; set; }
protected override IEnumerable<object> GetHashInputs(TriggerIndexingContext context) => GetHashInputs(context.ExpressionExecutionContext);
protected override void Execute(ActivityExecutionContext context) => context.SetBookmarks(GetHashInputs(context.ExpressionExecutionContext));
2022-01-04 08:42:12 +00:00
private IEnumerable<object> GetHashInputs(ExpressionExecutionContext context)
2022-01-04 08:42:12 +00:00
{
// Generate a bookmark hash for path and selected methods.
var path = context.Get(Path);
var methods = context.Get(SupportedMethods);
return methods!.Select(x => (path!.ToLowerInvariant(), x.ToLowerInvariant())).Cast<object>().ToArray();
2022-01-04 08:42:12 +00:00
}
}