Пример #1
0
 public QpUrlResolver(
     ICacheProvider cacheProvider,
     IMetaInfoRepository metaInfoRepository,
     QpSiteStructureCacheSettings qpSchemeSettings)
 {
     _cacheProvider      = cacheProvider;
     _metaInfoRepository = metaInfoRepository;
     _qpSchemeSettings   = qpSchemeSettings;
 }
 public UniversalAbstractItemFactory(ICacheProvider cacheProvider,
                                     IQpContentCacheTagNamingProvider qpContentCacheTagNamingProvider,
                                     IItemDefinitionRepository repository,
                                     QpSiteStructureCacheSettings cacheSettings,
                                     QpSiteStructureBuildSettings buildSettings)
 {
     _repository    = repository;
     _cacheProvider = cacheProvider;
     _qpContentCacheTagNamingProvider = qpContentCacheTagNamingProvider;
     _cacheSettings = cacheSettings;
     _buildSettings = buildSettings;
 }
 public SimpleAbstractItemStorageProvider(
     ICacheProvider cacheProvider,
     IAbstractItemStorageBuilder builder,
     IQpContentCacheTagNamingProvider qpContentCacheTagNamingProvider,
     QpSiteStructureBuildSettings buildSettings,
     QpSiteStructureCacheSettings cacheSettings)
 {
     _builder       = builder;
     _cacheProvider = cacheProvider;
     _qpContentCacheTagNamingProvider = qpContentCacheTagNamingProvider;
     _cacheSettings = cacheSettings;
     _buildSettings = buildSettings;
 }
Пример #4
0
        private static QpUrlResolver CreateMockedUrlResolver(IMetaInfoRepository metaInfoRepository)
        {
            var cacheSettings = new QpSiteStructureCacheSettings
            {
                ItemDefinitionCachePeriod = TimeSpan.FromSeconds(30),
                QpSchemeCachePeriod       = TimeSpan.FromSeconds(30),
                SiteStructureCachePeriod  = TimeSpan.FromSeconds(30)
            };
            var cache         = new MemoryCache(new MemoryCacheOptions());
            var cacheProvider = new VersionedCacheCoreProvider(cache);

            var urlResolver = new QpUrlResolver(cacheProvider, metaInfoRepository, cacheSettings);

            return(urlResolver);
        }
 public NameConventionalItemDefinitionProvider(
     ITypeFinder typeFinder,
     IItemDefinitionRepository repository,
     ICacheProvider cacheProvider,
     IQpContentCacheTagNamingProvider qpContentCacheTagNamingProvider,
     QpSiteStructureCacheSettings cacheSettings,
     QpSiteStructureBuildSettings buildSettings)
 {
     _typeFinder    = typeFinder;
     _repository    = repository;
     _cacheProvider = cacheProvider;
     _qpContentCacheTagNamingProvider = qpContentCacheTagNamingProvider;
     _cacheSettings = cacheSettings;
     _buildSettings = buildSettings;
 }
Пример #6
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            services.AddSwaggerGen(o =>
            {
                o.SwaggerDoc(SWAGGER_VERSION, new OpenApiInfo
                {
                    Title   = SWAGGER_TITLE,
                    Version = SWAGGER_VERSION
                });
                var xmlFile = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = System.IO.Path.Combine(AppContext.BaseDirectory, xmlFile);
                o.IncludeXmlComments(xmlPath);
            });
            services.AddMemoryCache();
            services.AddSingleton <ICacheProvider, VersionedCacheCoreProvider>();
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            services.AddScoped(sp =>
            {
                var uow = sp.GetService <IUnitOfWork>();
                return(new DBConnector(uow.Connection));
            });
            services.AddScoped <IAuthenticationService, AuthenticationService>();

            services.AddScoped <IUnitOfWork, UnitOfWork>(sp =>
            {
                var httpContextAccessor = sp.GetService <IHttpContextAccessor>();
                if (!httpContextAccessor.HttpContext.Request.Headers.TryGetValue("Customer-Code", out var customerCode))
                {
                    throw new Exception("Customer-Code header must be provided.");
                }

                var config = Configuration.GetSection("ConfigurationService").Get <ConfigurationServiceConfig>();
                if (!String.IsNullOrEmpty(config.Url) && !String.IsNullOrEmpty(config.Token))
                {
                    DBConnector.ConfigServiceUrl   = config.Url;
                    DBConnector.ConfigServiceToken = config.Token;
                }
                CustomerConfiguration dbConfig = DBConnector.GetCustomerConfiguration(customerCode.ToString()).Result;
                return(new UnitOfWork(dbConfig.ConnectionString, dbConfig.DbType.ToString()));
            });
            services.AddScoped <IMetaInfoRepository, MetaInfoRepository>();
            services.AddScoped <INetNameQueryAnalyzer, NetNameQueryAnalyzer>();
            services.AddScoped <IItemDefinitionRepository, ItemDefinitionRepository>();
            services.AddScoped <IAbTestRepository, AbTestRepository>();

            var qpUrlResolverCacheSettings = new QpSiteStructureCacheSettings
            {
                QpSchemeCachePeriod = new TimeSpan(0, 1, 0)
            };

            services.AddSingleton(typeof(QpSiteStructureCacheSettings), qpUrlResolverCacheSettings);
            services.AddScoped <IQpUrlResolver, QpUrlResolver>();
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = QpAuthDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = QpAuthDefaults.AuthenticationScheme;
            }).AddQpAuth(authOptions =>
            {
                authOptions.Settings = Configuration.GetSection("QpAuthSettings").Get <QpAuthSettings>();
            });

            services.AddAuthorization(options =>
            {
                options.DefaultPolicy = new AuthorizationPolicy(
                    new List <IAuthorizationRequirement>
                {
                    new QpUserRequirement()
                },
                    new[] { QpAuthDefaults.AuthenticationScheme });
            });

            services.AddCacheTagServices(options =>
                                         options.InvalidateByMiddleware(
                                             @"^(?!\/api\/).+$")); //инвалидировать только если запрос начинается с /api/

            services.AddHealthChecks();

            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                                  builder => builder.AllowAnyOrigin()
                                  .AllowAnyMethod()
                                  .AllowAnyHeader()
                                  );
            });
        }