public static ISopiBuilder AddMessageBus(this ISopiBuilder builder) { var config = builder.Config; builder.Services.AddCachingOptions(); builder.Log($"MessageBus Config Value: {builder.Options.MessageBus}"); switch (builder.Options.MessageBus) { case SopiOptions.MessageBusRedis: builder.Log("Adding Redis Message Bus"); builder.AddRedisMessageBus(); break; case SopiOptions.MessageBusAzureServiceBus: builder.Log("Adding AzureServiceBus Message Bus"); builder.AddAzureMessageBus(c => config.Bind("AzureServiceBus", c)); break; //case SopiOptions.MessageBusRabbitMq: // builder.Log("Adding RabbitMQ Message Bus"); // builder.AddRabbitMqMessageBus(c => config.Bind("RabbitMQ", c)); // break; default: builder.Log("Adding InMemory Bus"); builder.AddInMemoryMessageBus(); break; } return(builder); }
public static ISopiBuilder AddAuthentication(this ISopiBuilder builder) { builder.Log($"Sopi Auth Config Value: {builder.Options.Auth}"); switch (builder.Options.Auth) { case SopiOptions.AuthAuth0: { builder.Log("Adding Auth0 Config"); builder.Services.ConfigureAuth0(builder.Config, builder.Log); //builder.AddFeature("SwaggerClientOptions", swag); break; } case SopiOptions.AuthAzureAd: { builder.Log("Adding AzureAd Config"); builder.Services.ConfigureAzureAd(builder.Config, builder.Log); //builder.AddFeature("SwaggerClientOptions", swag); break; } default: throw new InvalidOperationException($"Invalid Auth: {builder.Options.Auth}"); } return(builder); }
public static ISopiBuilder AddClients(this ISopiBuilder builder) { var config = builder.Config; builder.Log("Adding Auth0 Config"); builder.Services.AddAuth0ClientOptions(config); builder.Log("Adding AzureAd Config"); builder.Services.AddAzureAdClientOptions(config); builder.Log($"Auth Config Value: {builder.Options.Auth}"); switch (builder.Options.Auth) { case SopiOptions.AuthAuth0: builder.Log("Adding Auth0 Token Provider"); builder.Services.AddAuth0TokenProvider(); break; case SopiOptions.AuthAzureAd: builder.Log("Adding AzureAd Token Provider"); builder.Services.AddAzureAdTokenProvider(); break; default: throw new InvalidOperationException($"Invalid Auth: {builder.Options.Auth}"); } return(builder); }
public static ISopiBuilder AddStorage(this ISopiBuilder builder) { var config = builder.Config; builder.Log($"Storage Config Value: {builder.Options.Storage}"); switch (builder.Options.Storage) { case SopiOptions.StorageFolder: builder.Log("Adding Folder Storage"); builder.AddFolderStorage(c => config.Bind("FolderStorage", c)); break; case SopiOptions.StorageAzureStorage: builder.Log("Adding Azure Storage"); builder.AddAzureStorage(c => config.Bind("AzureStorage", c)); break; default: builder.Log("Adding InMemory Storage"); builder.AddInMemoryStorage(); break; } return(builder); }
public static ISopiBuilder AddEventStore(this ISopiBuilder builder) { var config = builder.Config; builder.Log($"DomainEventStore Config Value: {builder.Options.DomainEventStore}"); switch (builder.Options.DomainEventStore) { case SopiOptions.DomainEventStoreEventStore: builder.Log("Adding AddDomainEventStore"); builder.AddDomainEventStore(c => config.Bind("EventStore", c)); break; } return(builder); }
//private static string CreateDatabaseId(ISopiBuilder builder) //{ // var options = new CacheOptions(); // builder.Config.Bind("Caching", options); // if (!string.IsNullOrEmpty(options.CacheScope)) // return options.CacheScope; // return builder.Options.CreateDatabaseId(); //} public static ISopiBuilder AddCacheClient(this ISopiBuilder builder) { var config = builder.Config; builder.Services.AddCachingOptions(c => config.Bind("Caching")); builder.Log($"Sopi CacheClient Config Value: {builder.Options.CacheClient}"); switch (builder.Options.CacheClient) { case SopiOptions.CacheRedis: builder.Log("Adding Redis CacheClient"); builder.Services.AddRedisCacheClient(); break; default: builder.Log("Adding InMemory CacheClient"); builder.AddInMemoryCacheClient(); break; } return(builder); }
public static ISopiBuilder AddEntityStore(this ISopiBuilder builder) { var config = builder.Config; builder.Log($"EntityStore Config Value: {builder.Options.EntityStore}"); switch (builder.Options.EntityStore) { case SopiOptions.EntityStoreMongoDb: builder.Log("Adding MongoDb EntityStore"); builder.AddMongoDbEntityStore(c => config.Bind("MongoDb", c)); builder.Services.PostConfigure <MongoDbOptions>(options => { if (string.IsNullOrEmpty(options.DatabaseId)) { builder.Log("Configuring MongoDb EntityStore Options"); options.DatabaseId = builder.Options.CreateDatabaseId(); builder.Log($"New MongoDb DatabaseId {options.DatabaseId}"); } }); break; case SopiOptions.EntityStoreAzureCosmosDb: builder.Log("Adding AzureCosmosDb EntityStore"); builder.AddAzureCosmosDbEntityStore(c => config.Bind("AzureCosmosDb", c)); builder.Services.PostConfigure <AzureCosmosDbOptions>(options => { if (string.IsNullOrEmpty(options.CollectionId)) { builder.Log("Configuring AzureCosmosDb EntityStore Options"); options.CollectionId = builder.Options.CreateDatabaseId(); builder.Log($"New AzureCosmosDb CollectionId {options.CollectionId}"); } }); break; default: builder.Log("Adding InMemory EntityStore"); builder.AddInMemoryEntityStore(); break; } return(builder); }