Exemplo n.º 1
0
 public void ConfigureServices(IServiceCollection services)
 {
     services
     .AddHttpContextAccessor()
     .AddHttpClient()
     .AddSingleton <EmailProcessor>()
     .AddSingleton(serviceProvider => DispatcherConfig.FromConfiguration(serviceProvider, _configuration.GetSection("Dispatchers")))
     .AddCors(b => b.AddDefaultPolicy(opts => opts
                                      .AllowAnyHeader()
                                      .AllowAnyMethod()
                                      .AllowCredentials()
                                      // must be at least 2 domains for CORS middleware to send Vary: Origin
                                      .WithOrigins("https://example.com", "http://127.0.0.1")
                                      .SetIsOriginAllowed(_ => true)
                                      ))
     .AddRouting();
 }
Exemplo n.º 2
0
        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            var configuration = CreateConfiguration();
            // MQTT client options
            var mqttConfig        = configuration.GetSection("Mqtt:Client").Get <MqttClientConfiguration>() ?? new MqttClientConfiguration();
            var mqttClientOptions =
                new MqttClientOptionsBuilder()
                .WithTcpServer(mqttConfig.Host ?? throw new InvalidOperationException("No MQTT host supplied."), mqttConfig.Port)
                .WithCleanSession(mqttConfig.CleanSession ?? true)
                .WithClientId(mqttConfig.ClientId ?? "ncoreutils-email-client")
                .Build();

            return(new HostBuilder()
                   .UseConsoleLifetime()
                   .UseContentRoot(Environment.CurrentDirectory)
                   .UseEnvironment(Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT") ?? "Development")
                   .ConfigureLogging(b => b
                                     .ClearProviders()
                                     .AddConfiguration(configuration.GetSection("Logging"))
                                     .AddConsole()
                                     )
                   .ConfigureServices((context, services) =>
            {
                services
                // HTTP client
                .AddHttpClient()
                // JSON serialization
                .AddOptions <JsonSerializerOptions>().Services
                .ConfigureOptions <ConfigureJson>()
                .AddTransient(serviceProvider => serviceProvider.GetRequiredService <IOptionsMonitor <JsonSerializerOptions> >().CurrentValue)
                // MQTT client
                .AddSingleton <IMqttClientServiceOptions>(serviceProvider =>
                {
                    var options = ActivatorUtilities.CreateInstance <MqttClientServiceOptions>(serviceProvider);
                    configuration.GetSection("Mqtt").Bind(options);
                    return options;
                })
                .AddSingleton(mqttClientOptions)
                .AddHostedService <MqttSubscriberService>()
                .AddSingleton <EmailProcessor>()
                .AddSingleton(serviceProvider => DispatcherConfig.FromConfiguration(serviceProvider, configuration.GetSection("Dispatchers")));
            }));
        }
Exemplo n.º 3
0
 public EmailProcessor(ILogger <EmailProcessor> logger, DispatcherConfig config)
 {
     Logger  = logger ?? throw new System.ArgumentNullException(nameof(logger));
     _config = config ?? throw new System.ArgumentNullException(nameof(config));
 }