Esempio n. 1
0
        /// <summary>
        /// Initialises a new instance of <see cref="TenantResolver"/>.
        /// </summary>
        /// <param name="featureStateProvider">The feature state provider.</param>
        /// <param name="configuration">The configuration.</param>
        public TenantResolver(IFeatureStateProvider featureStateProvider)
        {
            _featureStateProvider = Ensure.IsNotNull(featureStateProvider, nameof(featureStateProvider));

            _tenancyFeatureState = featureStateProvider.GetFeatureState(CoreInfo.TenancyFeatureId);
            _configThunk         = new Lazy <TenantsConfiguration>(() => ResolveConfiguration(_tenancyFeatureState.ConfigurationSection));
        }
Esempio n. 2
0
 /// <summary>
 /// Initialises a new instance of <see cref="FeatureFactory{TService}"/>
 /// </summary>
 /// <param name="featureStateProvider">The feature state provider.</param>
 public FeatureFactory(IFeatureStateProvider featureStateProvider, IWorkContext workContext)
 {
     _featureStateProvider = Ensure.IsNotNull(featureStateProvider, nameof(featureStateProvider));
     _workContext          = Ensure.IsNotNull(workContext, nameof(workContext));
 }
        /// <summary>
        /// Adds the set of feature services to the collection.
        /// </summary>
        /// <param name="services">The set of services.</param>
        /// <param name="featureProvider">The feature provider.</param>
        /// <param name="featureStateProvider">The feature state provider.</param>
        /// <returns>The set of services.</returns>
        public static IServiceCollection AddFeatureServices(this IServiceCollection services, IFeatureProvider featureProvider, IFeatureStateProvider featureStateProvider)
        {
            Ensure.IsNotNull(services, nameof(services));
            Ensure.IsNotNull(featureProvider, nameof(featureProvider));
            Ensure.IsNotNull(featureStateProvider, nameof(featureStateProvider));

            services.AddSingleton(featureProvider);
            services.AddSingleton(featureStateProvider);

            foreach (var feature in featureProvider.Features)
            {
                if (feature is IServicesBuilder builder)
                {
                    var featureServices = new ServiceCollection();

                    builder.BuildServices(featureServices);

                    foreach (var descriptor in featureServices)
                    {
                        services.Add(descriptor);
                        services.Add(CreateFeatureServiceDescriptor(descriptor, feature));
                    }
                }
            }

            return(services);
        }
 /// <summary>
 /// Initialises a new instance of <see cref="FeatureInitialiserStartupFilter"/>.
 /// </summary>
 /// <param name="serviceProvider">The service provider.</param>
 /// <param name="featureProvider">The feature provider.</param>
 /// <param name="featureStateProvider">The feature state provider.</param>
 public FeatureInitialiserStartupFilter(IServiceProvider serviceProvider, IFeatureProvider featureProvider, IFeatureStateProvider featureStateProvider)
 {
     _serviceProvider      = Ensure.IsNotNull(serviceProvider, nameof(serviceProvider));
     _featureProvider      = Ensure.IsNotNull(featureProvider, nameof(featureProvider));
     _featureStateProvider = Ensure.IsNotNull(featureStateProvider, nameof(featureStateProvider));
 }
Esempio n. 5
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IModuleProvider moduleProvider, IFeatureProvider featureProvider, IFeatureStateProvider featureStateProvider)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            foreach (var module in moduleProvider.Modules)
            {
                Console.WriteLine($"Module: {module.Id}");
            }

            foreach (var feature in featureProvider.Features)
            {
                if ((featureStateProvider.GetFeatureState(feature.Id)?.Enabled).GetValueOrDefault(false))
                {
                    Console.WriteLine($"Feature: {feature.Id}");
                }
            }

            app.Run(async(context) =>
            {
                Console.WriteLine($"Executing for {context.Request.Path}");

                var feature1 = context.RequestServices.GetRequiredService <IFeature <IAppService> >();
                var feature2 = context.RequestServices.GetRequiredService <IFeature <IAppService, AppFeatureConfiguration> >();

                if (feature1.Enabled)
                {
                    feature1.Service.DoAction();
                }

                if (feature2.Enabled)
                {
                    feature2.Service.DoAction(feature2.Configuration);
                }

                var tenantService = context.RequestServices.GetRequiredService <ITenantService>();
                tenantService.DoAction();
            });
        }