Simplify Options, get rid of OptionsBuilder (#431)
* Minor cleanup * Fix namespaces * Simplify options
This commit is contained in:
parent
fad9082d6b
commit
6551b61ead
|
|
@ -11,15 +11,17 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddDropbox(this IServiceCollection services, Action<OptionsBuilder<DropboxOptions>>? options = null) =>
|
||||
public static IServiceCollection AddDropbox(this IServiceCollection services, Action<DropboxOptions>? configureOptions = null) =>
|
||||
services
|
||||
.AddDropboxServices(options)
|
||||
.AddDropboxServices(configureOptions)
|
||||
.AddDropboxActivities();
|
||||
|
||||
public static IServiceCollection AddDropboxServices(this IServiceCollection services, Action<OptionsBuilder<DropboxOptions>>? options = null)
|
||||
public static IServiceCollection AddDropboxServices(this IServiceCollection services, Action<DropboxOptions>? configureOptions = null)
|
||||
{
|
||||
var optionsBuilder = services.AddOptions<DropboxOptions>();
|
||||
options?.Invoke(optionsBuilder);
|
||||
if (configureOptions != null)
|
||||
{
|
||||
services.Configure(configureOptions);
|
||||
}
|
||||
|
||||
services
|
||||
.AddHttpClient<IFilesApi, FilesApi>()
|
||||
|
|
|
|||
|
|
@ -2,22 +2,23 @@ using System;
|
|||
using Elsa.Activities.Email;
|
||||
using Elsa.Activities.Email.Options;
|
||||
using Elsa.Activities.Email.Services;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace Microsoft.Extensions.DependencyInjection
|
||||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddEmailActivities(this IServiceCollection services, Action<OptionsBuilder<SmtpOptions>> options = null) =>
|
||||
public static IServiceCollection AddEmailActivities(this IServiceCollection services, Action<SmtpOptions> configureOptions = null) =>
|
||||
services
|
||||
.AddEmailServices(options)
|
||||
.AddEmailServices(configureOptions)
|
||||
.AddEmailActivitiesInternal();
|
||||
|
||||
public static IServiceCollection AddEmailServices(this IServiceCollection services, Action<OptionsBuilder<SmtpOptions>> options = null)
|
||||
public static IServiceCollection AddEmailServices(this IServiceCollection services, Action<SmtpOptions> configureOptions = null)
|
||||
{
|
||||
var optionsBuilder = services.AddOptions<SmtpOptions>();
|
||||
options?.Invoke(optionsBuilder);
|
||||
if (configureOptions != null)
|
||||
{
|
||||
services.Configure(configureOptions);
|
||||
}
|
||||
|
||||
return services
|
||||
.AddSingleton<ISmtpService, SmtpService>();
|
||||
|
|
|
|||
|
|
@ -12,21 +12,23 @@ using Elsa.Triggers;
|
|||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc.Infrastructure;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace Microsoft.Extensions.DependencyInjection
|
||||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddHttpActivities(this IServiceCollection services, Action<OptionsBuilder<HttpActivityOptions>> options = null) =>
|
||||
public static IServiceCollection AddHttpActivities(this IServiceCollection services, Action<HttpActivityOptions>? configureOptions = null) =>
|
||||
services
|
||||
.AddHttpServices(options)
|
||||
.AddHttpServices(configureOptions)
|
||||
.AddHttpActivitiesInternal();
|
||||
|
||||
public static IServiceCollection AddHttpServices(this IServiceCollection services, Action<OptionsBuilder<HttpActivityOptions>> options = null)
|
||||
public static IServiceCollection AddHttpServices(this IServiceCollection services, Action<HttpActivityOptions>? configureOptions = null)
|
||||
{
|
||||
options?.Invoke(services.AddOptions<HttpActivityOptions>());
|
||||
if (configureOptions != null)
|
||||
{
|
||||
services.Configure(configureOptions);
|
||||
}
|
||||
|
||||
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
|
||||
services.AddHttpClient(nameof(SendHttpRequest));
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ using Elsa.Activities.MassTransit.Options;
|
|||
using MassTransit;
|
||||
using MassTransit.ConsumeConfigurators;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace Elsa.Activities.MassTransit.Extensions
|
||||
{
|
||||
|
|
@ -44,10 +43,12 @@ namespace Elsa.Activities.MassTransit.Extensions
|
|||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddRabbitMqActivities(this IServiceCollection services, Action<OptionsBuilder<RabbitMqOptions>> options = null, params Type[] messageTypes)
|
||||
public static IServiceCollection AddRabbitMqActivities(this IServiceCollection services, Action<RabbitMqOptions>? configureOptions = null, params Type[] messageTypes)
|
||||
{
|
||||
var optionsBuilder = services.AddOptions<RabbitMqOptions>();
|
||||
options?.Invoke(optionsBuilder);
|
||||
if (configureOptions != null)
|
||||
{
|
||||
services.Configure(configureOptions);
|
||||
}
|
||||
|
||||
services
|
||||
.AddMassTransitActivities();
|
||||
|
|
@ -71,7 +72,7 @@ namespace Elsa.Activities.MassTransit.Extensions
|
|||
public static void ConfigureWorkflowConsumer<TMessage>(
|
||||
this IReceiveEndpointConfigurator configurator,
|
||||
IServiceProvider provider,
|
||||
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>> configure = null)
|
||||
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>>? configure = null)
|
||||
where TMessage : class
|
||||
{
|
||||
provider.GetRequiredService<IRegistration>().ConfigureConsumer(configurator, configure);
|
||||
|
|
@ -81,7 +82,7 @@ namespace Elsa.Activities.MassTransit.Extensions
|
|||
|
||||
public static IConsumerRegistrationConfigurator<WorkflowConsumer<TMessage>> AddWorkflowConsumer<TMessage>(
|
||||
this IRegistrationConfigurator configurator,
|
||||
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>> configure = null)
|
||||
Action<IConsumerConfigurator<WorkflowConsumer<TMessage>>>? configure = null)
|
||||
where TMessage : class
|
||||
{
|
||||
return configurator.AddConsumer(configure);
|
||||
|
|
|
|||
|
|
@ -2,18 +2,19 @@ using System;
|
|||
using Elsa.Activities.Timers;
|
||||
using Elsa.Activities.Timers.HostedServices;
|
||||
using Elsa.Activities.Timers.Options;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace Microsoft.Extensions.DependencyInjection
|
||||
{
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddTimerActivities(this IServiceCollection services, Action<OptionsBuilder<TimersOptions>> options = null)
|
||||
public static IServiceCollection AddTimerActivities(this IServiceCollection services, Action<TimersOptions>? configureOptions = null)
|
||||
{
|
||||
var optionsBuilder = services.AddOptions<TimersOptions>();
|
||||
options?.Invoke(optionsBuilder);
|
||||
|
||||
if (configureOptions != null)
|
||||
{
|
||||
services.Configure(configureOptions);
|
||||
}
|
||||
|
||||
return services
|
||||
.AddHostedService<TimersHostedService>()
|
||||
.AddActivity<CronEvent>()
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace Elsa.Samples.DistributedLock
|
|||
.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared"))
|
||||
.UseRedisLockProvider("localhost:6379,abortConnect=false"))
|
||||
.AddConsoleActivities()
|
||||
.AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5)))
|
||||
.AddTimerActivities(timer => timer.SweepInterval = Duration.FromSeconds(5))
|
||||
.AddWorkflow<RecurringWorkflow>();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
using Elsa.Activities.Console;
|
||||
using Elsa.Activities.MassTransit;
|
||||
using Elsa.Builders;
|
||||
using Elsa.Models;
|
||||
using NodaTime;
|
||||
using System;
|
||||
using Elsa.Activities.Timers;
|
||||
|
||||
namespace Elsa.Samples.DistributedLock
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
using Elsa.Activities.Console;
|
||||
using Elsa.Activities.MassTransit;
|
||||
using Elsa.Activities.Timers;
|
||||
using Elsa.Builders;
|
||||
|
||||
namespace Elsa.Samples.Timers
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using NodaTime;
|
||||
|
|
@ -18,7 +18,7 @@ namespace Elsa.Samples.Timers
|
|||
services
|
||||
.AddElsa(options => options.UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared")))
|
||||
.AddConsoleActivities()
|
||||
.AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5)))
|
||||
.AddTimerActivities(timer => timer.SweepInterval = Duration.FromSeconds(5))
|
||||
.AddWorkflow<RecurringTaskWorkflow>()
|
||||
.AddWorkflow<CronTaskWorkflow>();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
using System;
|
||||
using Elsa.Activities.Console;
|
||||
using Elsa.Activities.MassTransit;
|
||||
using Elsa.Activities.Timers;
|
||||
using Elsa.Builders;
|
||||
using Elsa.Models;
|
||||
using NodaTime;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
using Elsa.Extensions;
|
||||
using Elsa.Scripting.JavaScript.Options;
|
||||
using Elsa.Scripting.JavaScript.Services;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System;
|
||||
using Elsa.Expressions;
|
||||
|
||||
|
|
@ -17,10 +16,9 @@ namespace Microsoft.Extensions.DependencyInjection
|
|||
.AddNotificationHandlers(typeof(JavaScriptServiceCollectionExtensions));
|
||||
}
|
||||
|
||||
public static IServiceCollection WithJavaScriptOptions(this IServiceCollection services, Action<OptionsBuilder<ScriptOptions>> options)
|
||||
public static IServiceCollection WithJavaScriptOptions(this IServiceCollection services, Action<ScriptOptions> configureOptions)
|
||||
{
|
||||
var scriptOptions = services.AddOptions<ScriptOptions>();
|
||||
options(scriptOptions);
|
||||
services.Configure(configureOptions);
|
||||
|
||||
return services;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using Elsa.Serialization;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Newtonsoft.Json;
|
||||
|
|
@ -7,11 +7,11 @@ namespace Elsa.Server.Api.Extensions
|
|||
{
|
||||
public static class JsonMvcBuilderExtensions
|
||||
{
|
||||
public static IMvcBuilder AddJsonSerialization(this IMvcBuilder builder, Action<JsonSerializerSettings>? configure = default) =>
|
||||
public static IMvcBuilder AddJsonSerialization(this IMvcBuilder builder, Action<JsonSerializerSettings>? configureOptions = default) =>
|
||||
builder.AddNewtonsoftJson(
|
||||
options =>
|
||||
{
|
||||
configure ??= DefaultContentSerializer.ConfigureDefaultJsonSerializationSettings;
|
||||
configureOptions ??= DefaultContentSerializer.ConfigureDefaultJsonSerializationSettings;
|
||||
//configure(options.SerializerSettings);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,9 +40,9 @@ namespace Elsa.Server.Host
|
|||
.AllowAnyHeader()))
|
||||
|
||||
.AddConsoleActivities()
|
||||
.AddHttpActivities(options => options.Bind(elsaSection.GetSection("Http")))
|
||||
.AddEmailActivities(options => options.Bind(elsaSection.GetSection("Smtp")))
|
||||
.AddTimerActivities(options => options.Bind(elsaSection.GetSection("BackgroundRunner")))
|
||||
.AddHttpActivities(elsaSection.GetSection("Http").Bind)
|
||||
.AddEmailActivities(elsaSection.GetSection("Smtp").Bind)
|
||||
.AddTimerActivities(elsaSection.GetSection("BackgroundRunner").Bind)
|
||||
.AddStartupTask<ResumeRunningWorkflowsTask>();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue