< Summary

Information
Class: Elsa.Http.Services.DefaultRouteTableUpdater
Assembly: Elsa.Http
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Http/Services/DefaultRouteTableUpdater.cs
Line coverage
96%
Covered lines: 49
Uncovered lines: 2
Coverable lines: 51
Total lines: 110
Line coverage: 96%
Branch coverage
78%
Covered branches: 11
Total branches: 14
Branch coverage: 78.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
UpdateAsync()100%11100%
AddRoutesAsync()100%22100%
AddRoutesAsync()50%2260%
AddRoutesAsync()100%22100%
RemoveRoutes(...)100%11100%
RemoveRoutes(...)100%11100%
AddRoutesAsync()100%22100%
Filter(...)100%22100%
Filter(...)0%22100%
Filter(...)100%22100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Http/Services/DefaultRouteTableUpdater.cs

#LineLine coverage
 1using Elsa.Extensions;
 2using Elsa.Http.Bookmarks;
 3using Elsa.Http.Contexts;
 4using Elsa.Workflows;
 5using Elsa.Workflows.Models;
 6using Elsa.Workflows.Runtime;
 7using Elsa.Workflows.Runtime.Entities;
 8using Elsa.Workflows.Runtime.Filters;
 9
 10namespace Elsa.Http.Services;
 11
 12/// <inheritdoc />
 44913public class DefaultRouteTableUpdater(
 44914    IRouteTable routeTable,
 44915    ITriggerStore triggerStore,
 44916    IBookmarkStore bookmarkStore,
 44917    IHttpEndpointRoutesProvider httpEndpointRoutesProvider)
 18    : IRouteTableUpdater
 19{
 20    /// <inheritdoc />
 21    public async Task UpdateAsync(CancellationToken cancellationToken = default)
 22    {
 2823        var stimulusName = HttpStimulusNames.HttpEndpoint;
 2824        var triggerFilter = new TriggerFilter
 2825        {
 2826            Name = stimulusName
 2827        };
 2828        var bookmarkFilter = new BookmarkFilter
 2829        {
 2830            Name = stimulusName
 2831        };
 2832        var triggers = (await triggerStore.FindManyAsync(triggerFilter, cancellationToken)).ToList();
 2833        var bookmarks = (await bookmarkStore.FindManyAsync(bookmarkFilter, cancellationToken)).ToList();
 34
 2835        await AddRoutesAsync(triggers, cancellationToken);
 2836        await AddRoutesAsync(bookmarks, cancellationToken);
 2837    }
 38
 39    public async Task AddRoutesAsync(IEnumerable<StoredTrigger> triggers, CancellationToken cancellationToken = default)
 40    {
 224641        var httpEndpointTriggers = Filter(triggers).ToList();
 42
 533043        foreach (var trigger in httpEndpointTriggers)
 44        {
 41945            var payload = trigger.GetPayload<HttpEndpointBookmarkPayload>();
 41946            await AddRoutesAsync(payload, trigger.TenantId, cancellationToken);
 47        }
 224648    }
 49
 50    public async Task AddRoutesAsync(IEnumerable<StoredBookmark> bookmarks, CancellationToken cancellationToken = defaul
 51    {
 2852        var httpEndpointBookmarks = Filter(bookmarks).ToList();
 53
 5654        foreach (var bookmark in httpEndpointBookmarks)
 55        {
 056            var payload = bookmark.GetPayload<HttpEndpointBookmarkPayload>();
 057            await AddRoutesAsync(payload, bookmark.TenantId, cancellationToken);
 58        }
 2859    }
 60
 61    public async Task AddRoutesAsync(IEnumerable<Bookmark> bookmarks, WorkflowExecutionContext workflowExecutionContext,
 62    {
 38963        var httpEndpointBookmarks = Filter(bookmarks).ToList();
 64
 79065        foreach (var bookmark in httpEndpointBookmarks)
 66        {
 667            var payload = bookmark.GetPayload<HttpEndpointBookmarkPayload>();
 668            await AddRoutesAsync(payload, workflowExecutionContext.Workflow.Identity.TenantId, cancellationToken);
 69        }
 38970    }
 71
 72    public void RemoveRoutes(IEnumerable<StoredTrigger> triggers)
 73    {
 112574        var paths = Filter(triggers).Select(x => x.GetPayload<HttpEndpointBookmarkPayload>().Path).ToList();
 110975        routeTable.RemoveRange(paths);
 110976    }
 77
 78    public void RemoveRoutes(IEnumerable<Bookmark> bookmarks)
 79    {
 39180        var paths = Filter(bookmarks).Select(x => x.GetPayload<HttpEndpointBookmarkPayload>().Path).ToList();
 38981        routeTable.RemoveRange(paths);
 38982    }
 83
 84    private async Task AddRoutesAsync(HttpEndpointBookmarkPayload payload, string? tenantId, CancellationToken cancellat
 85    {
 42586        var context = new HttpEndpointRouteProviderContext(payload, tenantId, cancellationToken);
 42587        var routes = await httpEndpointRoutesProvider.GetRoutesAsync(context);
 88
 170089        foreach (var route in routes)
 42590            routeTable.Add(route);
 42591    }
 92
 93    private static IEnumerable<StoredTrigger> Filter(IEnumerable<StoredTrigger> triggers)
 94    {
 335595        var stimulusName = HttpStimulusNames.HttpEndpoint;
 381696        return triggers.Where(x => x.Name == stimulusName && x.Payload != null);
 97    }
 98
 99    private static IEnumerable<StoredBookmark> Filter(IEnumerable<StoredBookmark> bookmarks)
 100    {
 28101        var stimulusName = HttpStimulusNames.HttpEndpoint;
 28102        return bookmarks.Where(x => x.Name == stimulusName && x.Payload != null);
 103    }
 104
 105    private static IEnumerable<Bookmark> Filter(IEnumerable<Bookmark> bookmarks)
 106    {
 778107        var stimulusName = HttpStimulusNames.HttpEndpoint;
 856108        return bookmarks.Where(x => x.Name == stimulusName && x.Payload != null);
 109    }
 110}