public static IXabarilBuilder AddXabarilInMemoryStore(this IXabarilBuilder xabarilBuilder, Action <InMemoryOptions> configure)
        {
            var options = new InMemoryOptions();

            var setup = configure ?? (opts => { });

            setup(options);

            xabarilBuilder
            .Services
            .AddMemoryCache()
            .AddSingleton <IFeaturesStore, InMemoryFeaturesStore>(provider =>
            {
                var logger = provider.GetService <ILogger <XabarilModule> >();
                var cache  = provider.GetService <IMemoryCache>();

                var store = new InMemoryFeaturesStore(logger, cache);

                if (options.FeatureConfiguration != null)
                {
                    store.PersistConfiguratioAsync(options.FeatureConfiguration);
                }

                return(store);
            });

            return(xabarilBuilder);
        }
        public static IXabarilBuilder AddRedisStore(this IXabarilBuilder builder, Action <RedisOptions> configurer)
        {
            var options = new RedisOptions();

            var setup = configurer ?? (opts => { });

            setup(options);

            builder.Services
            .AddSingleton <IRedisClientsManager>(new RedisManagerPool(options.RedisHost));

            builder.Services.AddSingleton <IFeaturesStore, RedisFeaturesStore>(provider =>
            {
                var logger             = provider.GetService <ILogger <XabarilModule> >();
                var redisClientManager = provider.GetService <IRedisClientsManager>();
                var libraries          = DependencyContext.Default.CompileLibraries
                                         .Select(c => c.Name);

                var store = new RedisFeaturesStore(logger, redisClientManager, libraries);

                if (options.FeatureConfiguration != null)
                {
                    store.PersistConfiguratioAsync(options.FeatureConfiguration);
                }

                return(store);
            });

            return(builder);
        }
Пример #3
0
        public static IXabarilBuilder AddRoleProvider <TRoleProvider>(this IXabarilBuilder builder)
            where TRoleProvider : class, IRoleProvider
        {
            builder.Services
            .AddScoped <IRoleProvider, TRoleProvider>();

            return(builder);
        }
Пример #4
0
        public static IXabarilBuilder AddUserProvider <TUserProvider>(this IXabarilBuilder builder)
            where TUserProvider : class, IUserProvider
        {
            builder.Services
            .AddScoped <IUserProvider, TUserProvider>();

            return(builder);
        }
Пример #5
0
        public static IXabarilBuilder AddGeoLocationProvider <TGeoLocationProvider>(this IXabarilBuilder builder)
            where TGeoLocationProvider : class, IGeoLocationProvider
        {
            builder.Services
            .AddScoped <IGeoLocationProvider, TGeoLocationProvider>();

            return(builder);
        }
Пример #6
0
        public static IXabarilBuilder AddXabarilOptions(this IXabarilBuilder builder, Action <XabarilOptions> setup)
        {
            if (setup == null)
            {
                throw new ArgumentNullException(nameof(setup));
            }

            builder.Services
            .Configure <XabarilOptions>(setup);

            return(builder);
        }
Пример #7
0
        public static IXabarilBuilder AddCustomActivators(this IXabarilBuilder builder, Assembly assembly)
        {
            if (assembly != null)
            {
                var activators = assembly.GetTypes()
                                 .Where(type => typeof(IFeatureActivator).GetTypeInfo().IsAssignableFrom(type));

                foreach (var item in activators)
                {
                    builder.Services
                    .AddTransient(item);
                }
            }

            return(builder);
        }
 public static IXabarilBuilder AddRedisStore(this IXabarilBuilder builder)
 {
     return(AddRedisStore(builder, options => { }));
 }
 public static IXabarilBuilder AddXabarilInMemoryStore(this IXabarilBuilder xabarilBuilder)
 {
     return(AddXabarilInMemoryStore(xabarilBuilder, options => { }));
 }