Exemple #1
0
        public static void AddCMS(
            this IServiceCollection services,
            IConfiguration configuration)
        {
            var cmsOptions      = configuration.GetSection("CMSOptions").Get <CMSOptions>();
            var databaseOptions = configuration.GetSection("DatabaseOptions").Get <DatabaseOptions>();

            services.AddSingleton <IThemeProvider, ThemeProvider>();
            services.AddSingleton <ISiteProvider, SiteProvider>();
            services.AddSingleton <IPageProvider, PageProvider>();
            services.AddSingleton <ISiteRouteProvider, SiteRouteProvider>();

            services.AddScoped <ISiteRequestAccessor, SiteRequestAccessor>();

            services.AddTransient <IPageService, PageService>();

            services.AddScoped <CheckingSiteRequestMiddleware>();
            services.AddScoped <CheckingPageRequestMiddleware>();
            services.AddScoped <ResolvingRequestMiddleware>();
            services.AddScoped <CheckingGoogleMetadataRequestMiddleware>();
            services.AddScoped <CheckingPageVersionRequestMiddleware>();
            services.AddScoped <CombiningPageRequestMiddleware>();
            services.AddScoped <CheckingResponseCachingMiddleware>();
            services.AddScoped <CMSTransformer>();

            services.AddTransient <ITagHelperComponent, GoogleMetadataTagHelper>();

            var allScannedAssemblies = GetModuleAssemblies(cmsOptions).ToList();

            allScannedAssemblies.ForEach(a =>
            {
                var moduleRegistration = ModuleUtils.GetModuleRegistration(a);
                if (moduleRegistration != null)
                {
                    services.AddSingleton(moduleRegistration);
                    moduleRegistration.Register(services, configuration, databaseOptions);
                }
            });
        }