public static void Configuration(this IConfigurationBuilder builder, HostBuilderContext context)
 => builder
 .AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json")
 .AddEnvironmentVariables();
 private static void ConfigureLogging(HostBuilderContext _, ILoggingBuilder logging) => logging.AddConsole();
Esempio n. 3
0
        private static void configureServices(HostBuilderContext hostContext, IServiceCollection services)
        {
            IConfiguration configuration = hostContext.Configuration;

            // --> Add: BrokerFactory depending on the environment.
            if (hostContext.HostingEnvironment.IsProduction())
            {
                var brokerFactoryConfiguration = new BrokerFactoryConfiguration
                {
                    Url                       = configuration.GetConnectionString("RabbitMQ"),
                    SkipManagement            = false,
                    DefaultDeadLetterExchange = "message.morgue",
                    DefaultDeadLetterQueue    = "message.morgue.sink"
                };

                services
                .AddSingleton(brokerFactoryConfiguration)
                .AddSingleton <IBrokerFactory, BrokerFactory>();
            }
            else
            {
                // In-memory queuing.
                services.AddSingleton <IBrokerFactory, Queue.InMemory.BrokerFactory>();

                // File system queuing.
                //services.AddSingleton<IBrokerFactory>(new Queue.FileSystem.BrokerFactory(@"d:\Downloads\Messages"));

                // Redis pub/sub messaging.
                //services.AddSingleton<IBrokerFactory>(new Queue.Redis.BrokerFactory());

                var sbConfiguration = new Queue.Azure.ServiceBus.ServiceBusConfiguration
                {
                    ConnectionString = configuration.GetConnectionString("ServiceBus"),
                    SkipManagement   = false
                };

                // Azure queue.
                //services.AddSingleton<IBrokerFactory>(x => new Queue.Azure.ServiceBus.Queue.BrokerFactory(sbConfiguration));

                // Azure topic.
                //services.AddSingleton<IBrokerFactory>(x => new Queue.Azure.ServiceBus.Topic.BrokerFactory(sbConfiguration));
            }

            // --> Add: DelaySettings.
            services.AddSingleton(configuration.BindTo <DelaySettings>());

            // --> Add: Message handlers with Scrutor.
            services.Scan(scan => scan
                          .FromEntryAssembly()
                          .AddClasses(classes => classes.AssignableTo(typeof(IMessageHandler <>)))
                          //.UsingRegistrationStrategy(RegistrationStrategy.Append) // Default is Append.
                          .AsImplementedInterfaces()
                          .WithSingletonLifetime());
            // Note: If the handler has scope dependencies, it should be present as a scope handler.

            // These handlers will be added by Scrutor.
            //services.AddSingleton<IMessageHandler<LoginMessage>, LoginMessageHandler>();
            //services.AddSingleton<IMessageHandler<PurchaseMessage>, PurchaseMessageHandler>();

            // --> Add: Background services.
            // Message consumers in BackgroundService.
            services.AddHostedService <ConsumerBackgroundService <LoginMessage> >();
            services.AddHostedService <ConsumerBackgroundService <PurchaseMessage> >();

            // Demo purpose.
            services.AddHostedService <ProducerBackgroundService>();
        }
Esempio n. 4
0
 public override void Provide(HostBuilderContext context, IServiceCollection collection)
 {
     collection.AddSingleton <IDataStore>(f =>
                                          new LiteDBDataStore(ConnectionString)
                                          );
 }
Esempio n. 5
0
 protected virtual void BuildConfiguration(HostBuilderContext hostingContext, IConfigurationBuilder configApp)
 {
     //Not sure how to re-use the 'IConfigurationRoot BuildConfiguration(OptionsBase)' method above that is currently used in the stateless, shoot'n'forget code path
 }
Esempio n. 6
0
 public static void ConfigureLogging(HostBuilderContext hostingContext, LoggerConfiguration loggerConfiguration)
 {
     ConfigureLogging(hostingContext.Configuration, loggerConfiguration);
 }
 public void ConfigureServices(IServiceCollection services, HostBuilderContext hostContext)
 {
 }
Esempio n. 8
0
 protected override void ConfigureServices(HostBuilderContext context, IServiceCollection services)
 {
     _auditingStore = Substitute.For <IAuditingStore>();
     services.Replace(ServiceDescriptor.Singleton(_auditingStore));
     base.ConfigureServices(context, services);
 }
Esempio n. 9
0
 public void Configurate(HostBuilderContext context, IServiceCollection services)
 {
     // do nothing
 }
Esempio n. 10
0
 private static void SetupConfiguration(HostBuilderContext context,
                                        IConfigurationBuilder builder)
 {
     builder.AddDockerDefaultSettings(context.HostingEnvironment);
 }
Esempio n. 11
0
        private static void ConfigureElasticSearch(HostBuilderContext hostContext, IServiceCollection services)
        {
            var configuration = hostContext.Configuration.GetSection("ElasticSearch").Get <ElasticSearchConfiguration>();

            services.AddElasticSearch(configuration);
        }
Esempio n. 12
0
 private static void ConfigureRedis(HostBuilderContext hostContext, IServiceCollection services)
 {
     services.AddRedis(hostContext.Configuration.GetSection("Cache").Get <RedisConfig>());
 }
 /// <summary>
 /// Adds KeyVault configuration
 ///
 /// dotnet 5.0 style
 /// </summary>
 /// <param name="builder"></param>
 public static void AddKeyVault(HostBuilderContext context, IConfigurationBuilder configurationBuilder)
 {
     AddKeyVault(configurationBuilder, context.HostingEnvironment.ContentRootPath);
 }
 private static void ConfigureServices(HostBuilderContext _, IServiceCollection services)
 {
     services.AddSingleton(BuildConfiguration());
     services.AddHostedService <TestService>();
 }
Esempio n. 15
0
        private static string GetInstrumentationKey(this HostBuilderContext context)
        {
            var applicationInsights = context.Configuration.GetSection("ApplicationInsights").Get <AppInsightsSection>();

            return(applicationInsights.InstrumentationKey);
        }
Esempio n. 16
0
 private static void configureSerilog1(HostBuilderContext context, LoggerConfiguration configuration)
 => configuration.ReadFrom.Configuration(context.Configuration);
Esempio n. 17
0
 private static void ConfigureApplication(HostBuilderContext ctx, IConfigurationBuilder builder)
 {
     builder.AddSystemsManager("/Mackie/TodoistSync");
 }
Esempio n. 18
0
        public static void ConfigureDiscordBot <TBotConfiguration>(this IServiceCollection services, HostBuilderContext context, DiscordBotHostingContext discordContext)
            where TBotConfiguration : DiscordBotBaseConfiguration, new()
        {
            services.Configure <CommandServiceConfiguration>(x => x.CooldownBucketKeyGenerator = CooldownBucketKeyGenerator.Instance);

            if (discordContext.OwnerIds != null)
            {
                services.Configure <TBotConfiguration>(x => x.OwnerIds = discordContext.OwnerIds);
            }

            if (!discordContext.UseMentionPrefix && (discordContext.Prefixes == null || !discordContext.Prefixes.Any()))
            {
                throw new InvalidOperationException($"No prefixes were specified for the {nameof(DefaultPrefixProvider)}.");
            }

            services.AddSingleton <IConfigureOptions <DefaultPrefixProviderConfiguration> >(services => new ConfigureOptions <DefaultPrefixProviderConfiguration>(x =>
            {
                var prefixes = new List <IPrefix>();
                if (discordContext.UseMentionPrefix)
                {
                    if (services.GetService <Token>() is not BotToken botToken)
                    {
                        throw new InvalidOperationException("The mention prefix cannot be used without a bot token set.");
                    }

                    prefixes.Add(new MentionPrefix(botToken.Id));
                }

                if (discordContext.Prefixes != null)
                {
                    prefixes.AddRange(discordContext.Prefixes.Select(x => new StringPrefix(x)));
                }

                x.Prefixes = prefixes;
            }));

            services.AddHostedService <DiscordBotRunnerService>();
            services.TryAddSingleton <DiscordBotMasterService>();
        }
Esempio n. 19
0
 public static void AddConfiguration(HostBuilderContext hostingContext, IConfigurationBuilder configBuilder)
 {
     configBuilder.Sources.Clear();
     configBuilder.AddJsonFile("appsettings.json", optional: false);
 }