diff --git a/src/modules/Elsa.Modules.Http/Activities/HttpEndpoint.cs b/src/modules/Elsa.Modules.Http/Activities/HttpEndpoint.cs index 0f61067e6..92a97f175 100644 --- a/src/modules/Elsa.Modules.Http/Activities/HttpEndpoint.cs +++ b/src/modules/Elsa.Modules.Http/Activities/HttpEndpoint.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Net.Http; using Elsa.Attributes; +using Elsa.Extensions; using Elsa.Management.Models; using Elsa.Models; using Elsa.Modules.Http.Models; @@ -10,6 +11,8 @@ namespace Elsa.Modules.Http; public class HttpEndpoint : Trigger { + public const string InputKey = "HttpRequest"; + [Input] public Input Path { get; set; } = default!; [Input( @@ -18,10 +21,22 @@ public class HttpEndpoint : Trigger )] public Input> SupportedMethods { get; set; } = new(new[] { HttpMethod.Get.Method }); - [Output] public Output? Result { get; set; } + [Output] public Output? Request { get; set; } protected override IEnumerable GetTriggerData(TriggerIndexingContext context) => GetBookmarkData(context.ExpressionExecutionContext); - protected override void Execute(ActivityExecutionContext context) => context.SetBookmarks(GetBookmarkData(context.ExpressionExecutionContext)); + protected override void Execute(ActivityExecutionContext context) + { + // If we did not receive external input, it means we are just now encountering this activity. + if (!context.TryGetInput(InputKey, out var request )) + { + // Create bookmarks for when we receive the expected HTTP request. + context.CreateBookmarks(GetBookmarkData(context.ExpressionExecutionContext)); + return; + } + + // Provide the received HTTP request as output. + context.Set(Request, request); + } private IEnumerable GetBookmarkData(ExpressionExecutionContext context) {