From 5b7bc894f09aaa6b41b4dfcacfb48bff8b9c4b32 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Mon, 7 Mar 2022 15:08:01 +0100 Subject: [PATCH] Update HttpEndpoint to not block when input is received --- .../Activities/HttpEndpoint.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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) {