< Summary

Information
Class: Elsa.Http.Extensions.HttpEndpointActivityExecutionContextExtensions
Assembly: Elsa.Http
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Http/Extensions/HttpEndpointActivityExecutionContextExtensions.cs
Line coverage
52%
Covered lines: 26
Uncovered lines: 24
Coverable lines: 50
Total lines: 96
Line coverage: 52%
Branch coverage
75%
Covered branches: 6
Total branches: 8
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
WaitForHttpRequestAsync()100%210%
WaitForHttpRequestAsync()100%11100%
WaitForHttpRequestAsync()75%8890.9%
GetHttpEndpointStimuli(...)100%210%
GetHttpEndpointStimuli(...)100%210%
GetHttpEndpointStimuli(...)100%210%
GetHttpEndpointStimuli(...)100%11100%
CreateCrossBoundaryBookmark(...)100%210%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Http/Extensions/HttpEndpointActivityExecutionContextExtensions.cs

#LineLine coverage
 1using Elsa.Expressions.Models;
 2using Elsa.Extensions;
 3using Elsa.Http.Bookmarks;
 4using Elsa.Workflows;
 5using Elsa.Workflows.Models;
 6using Microsoft.AspNetCore.Routing.Patterns;
 7
 8namespace Elsa.Http.Extensions;
 9
 10public static class HttpEndpointActivityExecutionContextExtensions
 11{
 12public static async ValueTask WaitForHttpRequestAsync(this ActivityExecutionContext context, string path, string method,
 13{
 014    var options = new HttpEndpointOptions
 015    {
 016        Path = path,
 017        Methods = [method]
 018    };
 019    await WaitForHttpRequestAsync(context, options, callback, bookmarkName);
 020}
 21
 22public static async ValueTask WaitForHttpRequestAsync(this ActivityExecutionContext context, string path, IEnumerable<st
 23{
 27024    var options = new HttpEndpointOptions
 27025    {
 27026        Path = path,
 27027        Methods = methods.ToList()
 27028    };
 27029    await WaitForHttpRequestAsync(context, options, callback, bookmarkName);
 26930}
 31
 32    public static async ValueTask WaitForHttpRequestAsync(this ActivityExecutionContext context, HttpEndpointOptions opt
 33    {
 27034        var path = options.Path;
 27035        if (path.Contains("//"))
 036            throw new RoutePatternException(path, "Path cannot contain double slashes (//)");
 37
 27038        var expressionExecutionContext = context.ExpressionExecutionContext;
 27039        if (!context.IsTriggerOfWorkflow())
 40        {
 741            var name = bookmarkName ?? Elsa.Http.HttpStimulusNames.HttpEndpoint;
 742            context.CreateBookmarks(expressionExecutionContext.GetHttpEndpointStimuli(options), includeActivityInstanceI
 743            return;
 44        }
 45
 26346        if (callback is not null)
 26347            await callback(context);
 26948    }
 49
 50    public static IEnumerable<object> GetHttpEndpointStimuli(this TriggerIndexingContext context, string path, string me
 51    {
 052        return context.GetHttpEndpointStimuli(path, [method]);
 53    }
 54
 55    public static IEnumerable<object> GetHttpEndpointStimuli(this TriggerIndexingContext context, string path, IEnumerab
 56    {
 057        var options = new HttpEndpointOptions
 058        {
 059            Path = path,
 060            Methods = methods.ToList()
 061        };
 62
 063        return context.GetHttpEndpointStimuli(options);
 64    }
 65
 66    public static IEnumerable<object> GetHttpEndpointStimuli(this TriggerIndexingContext context, HttpEndpointOptions op
 67    {
 068        return context.ExpressionExecutionContext.GetHttpEndpointStimuli(options);
 69    }
 70
 71    public static IEnumerable<object> GetHttpEndpointStimuli(this ExpressionExecutionContext context, HttpEndpointOption
 72    {
 73        // Generate bookmark data for path and selected methods.
 774        var normalizedRoute = options.Path.NormalizeRoute();
 775        var authorize = options.Authorize;
 776        var policy = options.Policy;
 777        var requestTimeout = options.RequestTimeout;
 778        var requestSizeLimit = options.RequestSizeLimit;
 79
 780        return options.Methods
 781            .Select(x => new HttpEndpointBookmarkPayload(normalizedRoute, x.ToLowerInvariant(), authorize, policy, reque
 782            .Cast<object>()
 783            .ToArray();
 84    }
 85
 86    internal static void CreateCrossBoundaryBookmark(this ActivityExecutionContext context, ExecuteActivityDelegate? cal
 87    {
 088        var bookmarkOptions = new CreateBookmarkArgs
 089        {
 090            BookmarkName = HttpStimulusNames.HttpEndpoint,
 091            Callback = callback,
 092            Metadata = BookmarkMetadata.HttpCrossBoundary,
 093        };
 094        context.CreateBookmark(bookmarkOptions);
 095    }
 96}