elsa-core/src/modules/Elsa.Http/Activities/HttpEndpointBase.cs
RalfvandenBurg 30c1f16c15
Explicit state Bookmarkname (#6963)
* Explicit stat5e Bookmarkname

* Removed dutch comment

* compile fixes

* Update src/modules/Elsa.Http/Extensions/HttpEndpointActivityExecutionContextExtensions.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Ralf <Ralf@Careconnections.nl>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-11 19:10:03 +01:00

42 lines
1.5 KiB
C#

using Elsa.Http.Extensions;
using Elsa.Workflows;
using Microsoft.AspNetCore.Http;
namespace Elsa.Http;
public abstract class HttpEndpointBase : HttpEndpointBase<object>;
public abstract class HttpEndpointBase<TResult> : Trigger<TResult>
{
protected abstract HttpEndpointOptions GetOptions();
protected virtual ValueTask OnHttpRequestReceivedAsync(ActivityExecutionContext activityExecutionContext, HttpContext httpContext)
{
OnHttpRequestReceived(activityExecutionContext, httpContext);
return default;
}
protected virtual void OnHttpRequestReceived(ActivityExecutionContext activityExecutionContext, HttpContext httpContext)
{
}
protected override async ValueTask ExecuteAsync(ActivityExecutionContext context)
{
var options = GetOptions();
await context.WaitForHttpRequestAsync(options, HttpRequestReceivedAsync, Elsa.Http.HttpStimulusNames.HttpEndpoint);
}
protected override IEnumerable<object> GetTriggerPayloads(TriggerIndexingContext context)
{
var options = GetOptions();
context.TriggerName = HttpStimulusNames.HttpEndpoint;
return context.GetHttpEndpointStimuli(options);
}
private async ValueTask HttpRequestReceivedAsync(ActivityExecutionContext context)
{
var httpContext = context.GetRequiredService<IHttpContextAccessor>().HttpContext!;
await OnHttpRequestReceivedAsync(context, httpContext);
await context.CompleteActivityAsync();
}
}