using System; using Elsa.Http.Handlers; using Elsa.Http.Implementations; using Elsa.Http.Options; using Elsa.Http.Services; using Elsa.Mediator.Extensions; using Elsa.ServiceConfiguration.Abstractions; using Elsa.ServiceConfiguration.Services; using Microsoft.Extensions.DependencyInjection; namespace Elsa.Http.Configuration; public class HttpConfigurator : ConfiguratorBase { public HttpConfigurator(IServiceConfiguration serviceConfiguration) : base(serviceConfiguration) { } public string BasePath { get; set; } = "/workflows"; public Func HttpEndpointAuthorizationHandlerFactory { get; set; } = ActivatorUtilities.GetServiceOrCreateInstance; public Func HttpEndpointWorkflowFaultHandlerFactory { get; set; } = ActivatorUtilities.GetServiceOrCreateInstance; public HttpConfigurator WithBasePath(string value) { BasePath = value; return this; } public HttpConfigurator WithAuthorizationHandlerFactory(Func value) { HttpEndpointAuthorizationHandlerFactory = value; return this; } public HttpConfigurator WithWorkflowFaultHandlerFactory(Func value) { HttpEndpointWorkflowFaultHandlerFactory = value; return this; } public override void Apply() { Services.Configure(options => options.BasePath = BasePath); Services .AddSingleton() .AddSingleton() .AddNotificationHandlersFrom() .AddHttpContextAccessor(); } }