예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #4
0
        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);
        }