elsa-core/src/activities/webhooks/Elsa.Activities.Webhooks/Extensions/WebhookOptionsBuilderExtensions.cs

41 lines
1.4 KiB
C#
Raw Normal View History

using System;
using Elsa.Activities.Webhooks.ActivityTypes;
2021-06-09 16:08:22 +00:00
using Elsa.Activities.Webhooks.Bookmarks;
using Elsa.Activities.Webhooks.Persistence.Decorators;
using Elsa.Activities.Webhooks.Services;
2021-04-16 10:48:06 +00:00
using Elsa.Services;
2021-05-30 11:30:07 +00:00
using Elsa.Webhooks.Abstractions.Persistence;
using Elsa.Webhooks.Abstractions.Services;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Activities.Webhooks.Extensions
{
public static class WebhookOptionsBuilderExtensions
{
public static ElsaOptionsBuilder AddWebhooks(
this ElsaOptionsBuilder elsaOptions,
Action<WebhookOptionsBuilder>? configure = default)
{
var services = elsaOptions.Services;
// Configure Webhooks.
var webhookOptionsBuilder = new WebhookOptionsBuilder(elsaOptions.Services);
configure?.Invoke(webhookOptionsBuilder);
// Services.
services
.AddScoped<IActivityTypeProvider, WebhookActivityTypeProvider>()
.AddScoped(sp => webhookOptionsBuilder.WebhookOptions.WebhookDefinitionStoreFactory(sp))
2021-06-09 16:08:22 +00:00
.AddScoped<IWebhookPublisher, WebhookPublisher>()
.AddBookmarkProvider<WebhookBookmarkProvider>();
services.Decorate<IWebhookDefinitionStore, InitializingWebhookDefinitionStore>();
services.Decorate<IWebhookDefinitionStore, EventPublishingWebhookDefinitionStore>();
return elsaOptions;
}
}
}