public UserAgentHelper(IHttpContextAccessor httpContextAccessor, ISmiFileProvider fileProvider, SmiConfig SmiConfig) { _httpContextAccessor = httpContextAccessor; _fileProvider = fileProvider; _SmiConfig = SmiConfig; }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public void Register(ContainerBuilder builder, ITypeFinder typeFinder, SmiConfig config) { //register custom services builder.RegisterType <SendinBlueManager>().AsSelf().InstancePerLifetimeScope(); builder.RegisterType <SendinBlueMarketingAutomationManager>().AsSelf().InstancePerLifetimeScope(); //override services builder.RegisterType <SendinBlueMessageService>().As <IWorkflowMessageService>().InstancePerLifetimeScope(); builder.RegisterType <SendinBlueEmailSender>().As <IEmailSender>().InstancePerLifetimeScope(); }
public RedisCacheManager(IRedisConnectionWrapper connectionWrapper, SmiConfig config) { if (string.IsNullOrEmpty(config.RedisConnectionString)) { throw new Exception("Redis connection string is empty"); } // ConnectionMultiplexer.Connect should only be called once and shared between callers _connectionWrapper = connectionWrapper; _db = _connectionWrapper.GetDatabase(config.RedisDatabaseId ?? (int)RedisDatabaseNumber.Cache); _memoryCacheManager = new MemoryCacheManager(new MemoryCache(new MemoryCacheOptions())); }
/// <summary> /// Register dependencies /// </summary> /// <param name="containerBuilder">Container builder</param> /// <param name="SmiConfig">Smi configuration parameters</param> public virtual void RegisterDependencies(ContainerBuilder containerBuilder, SmiConfig SmiConfig) { //register engine containerBuilder.RegisterInstance(this).As <IEngine>().SingleInstance(); //register type finder containerBuilder.RegisterInstance(_typeFinder).As <ITypeFinder>().SingleInstance(); //find dependency registrars provided by other assemblies var dependencyRegistrars = _typeFinder.FindClassesOfType <IDependencyRegistrar>(); //create and sort instances of dependency registrars var instances = dependencyRegistrars .Select(dependencyRegistrar => (IDependencyRegistrar)Activator.CreateInstance(dependencyRegistrar)) .OrderBy(dependencyRegistrar => dependencyRegistrar.Order); //register all provided dependencies foreach (var dependencyRegistrar in instances) { dependencyRegistrar.Register(containerBuilder, _typeFinder, SmiConfig); } }
protected void OneTimeInit(SmiConfig config) { if (_isInitialized) { return; } if (string.IsNullOrEmpty(config.AzureBlobStorageConnectionString)) { throw new Exception("Azure connection string for BLOB is not specified"); } if (string.IsNullOrEmpty(config.AzureBlobStorageContainerName)) { throw new Exception("Azure container name for BLOB is not specified"); } if (string.IsNullOrEmpty(config.AzureBlobStorageEndPoint)) { throw new Exception("Azure end point for BLOB is not specified"); } lock (_locker) { if (_isInitialized) { return; } _azureBlobStorageAppendContainerName = config.AzureBlobStorageAppendContainerName; _azureBlobStorageConnectionString = config.AzureBlobStorageConnectionString; _azureBlobStorageContainerName = config.AzureBlobStorageContainerName.Trim().ToLower(); _azureBlobStorageEndPoint = config.AzureBlobStorageEndPoint.Trim().ToLower().TrimEnd('/'); CreateCloudBlobContainer(); _isInitialized = true; } }
public AzurePictureService(ISmiDataProvider dataProvider, IDownloadService downloadService, ICacheKeyService cacheKeyService, IEventPublisher eventPublisher, IHttpContextAccessor httpContextAccessor, ISmiFileProvider fileProvider, IProductAttributeParser productAttributeParser, IRepository <Picture> pictureRepository, IRepository <PictureBinary> pictureBinaryRepository, IRepository <ProductPicture> productPictureRepository, ISettingService settingService, IStaticCacheManager staticCacheManager, IUrlRecordService urlRecordService, IWebHelper webHelper, MediaSettings mediaSettings, SmiConfig config) : base(dataProvider, downloadService, eventPublisher, httpContextAccessor, fileProvider, productAttributeParser, pictureRepository, pictureBinaryRepository, productPictureRepository, settingService, urlRecordService, webHelper, mediaSettings) { _cacheKeyService = cacheKeyService; _staticCacheManager = staticCacheManager; _mediaSettings = mediaSettings; OneTimeInit(config); }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, SmiConfig config) { builder.RegisterType <AvalaraTaxManager>().AsSelf().InstancePerLifetimeScope(); builder.RegisterType <TaxTransactionLogService>().AsSelf().InstancePerLifetimeScope(); }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, SmiConfig config) { builder.RegisterType <FacebookPixelService>().AsSelf().InstancePerLifetimeScope(); }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, SmiConfig config) { //file provider builder.RegisterType <SmiFileProvider>().As <ISmiFileProvider>().InstancePerLifetimeScope(); //web helper builder.RegisterType <WebHelper>().As <IWebHelper>().InstancePerLifetimeScope(); //user agent helper builder.RegisterType <UserAgentHelper>().As <IUserAgentHelper>().InstancePerLifetimeScope(); //data layer builder.RegisterType <DataProviderManager>().As <IDataProviderManager>().InstancePerDependency(); builder.Register(context => context.Resolve <IDataProviderManager>().DataProvider).As <ISmiDataProvider>().InstancePerDependency(); //repositories builder.RegisterGeneric(typeof(EntityRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope(); //plugins builder.RegisterType <PluginService>().As <IPluginService>().InstancePerLifetimeScope(); builder.RegisterType <OfficialFeedManager>().AsSelf().InstancePerLifetimeScope(); //redis connection wrapper if (config.RedisEnabled) { builder.RegisterType <RedisConnectionWrapper>() .As <ILocker>() .As <IRedisConnectionWrapper>() .SingleInstance(); } //static cache manager if (config.RedisEnabled && config.UseRedisForCaching) { builder.RegisterType <RedisCacheManager>().As <IStaticCacheManager>().InstancePerLifetimeScope(); } else { builder.RegisterType <MemoryCacheManager>() .As <ILocker>() .As <IStaticCacheManager>() .SingleInstance(); } //work context builder.RegisterType <WebWorkContext>().As <IWorkContext>().InstancePerLifetimeScope(); //store context builder.RegisterType <WebStoreContext>().As <IStoreContext>().InstancePerLifetimeScope(); //services builder.RegisterType <BackInStockSubscriptionService>().As <IBackInStockSubscriptionService>().InstancePerLifetimeScope(); builder.RegisterType <CategoryService>().As <ICategoryService>().InstancePerLifetimeScope(); builder.RegisterType <CompareProductsService>().As <ICompareProductsService>().InstancePerLifetimeScope(); builder.RegisterType <RecentlyViewedProductsService>().As <IRecentlyViewedProductsService>().InstancePerLifetimeScope(); builder.RegisterType <ManufacturerService>().As <IManufacturerService>().InstancePerLifetimeScope(); builder.RegisterType <PriceFormatter>().As <IPriceFormatter>().InstancePerLifetimeScope(); builder.RegisterType <ProductAttributeFormatter>().As <IProductAttributeFormatter>().InstancePerLifetimeScope(); builder.RegisterType <ProductAttributeParser>().As <IProductAttributeParser>().InstancePerLifetimeScope(); builder.RegisterType <ProductAttributeService>().As <IProductAttributeService>().InstancePerLifetimeScope(); builder.RegisterType <ProductService>().As <IProductService>().InstancePerLifetimeScope(); builder.RegisterType <CopyProductService>().As <ICopyProductService>().InstancePerLifetimeScope(); builder.RegisterType <SpecificationAttributeService>().As <ISpecificationAttributeService>().InstancePerLifetimeScope(); builder.RegisterType <ProductTemplateService>().As <IProductTemplateService>().InstancePerLifetimeScope(); builder.RegisterType <CategoryTemplateService>().As <ICategoryTemplateService>().InstancePerLifetimeScope(); builder.RegisterType <ManufacturerTemplateService>().As <IManufacturerTemplateService>().InstancePerLifetimeScope(); builder.RegisterType <TopicTemplateService>().As <ITopicTemplateService>().InstancePerLifetimeScope(); builder.RegisterType <ProductTagService>().As <IProductTagService>().InstancePerLifetimeScope(); builder.RegisterType <AddressAttributeFormatter>().As <IAddressAttributeFormatter>().InstancePerLifetimeScope(); builder.RegisterType <AddressAttributeParser>().As <IAddressAttributeParser>().InstancePerLifetimeScope(); builder.RegisterType <AddressAttributeService>().As <IAddressAttributeService>().InstancePerLifetimeScope(); builder.RegisterType <AddressService>().As <IAddressService>().InstancePerLifetimeScope(); builder.RegisterType <AffiliateService>().As <IAffiliateService>().InstancePerLifetimeScope(); builder.RegisterType <VendorService>().As <IVendorService>().InstancePerLifetimeScope(); builder.RegisterType <VendorAttributeFormatter>().As <IVendorAttributeFormatter>().InstancePerLifetimeScope(); builder.RegisterType <VendorAttributeParser>().As <IVendorAttributeParser>().InstancePerLifetimeScope(); builder.RegisterType <VendorAttributeService>().As <IVendorAttributeService>().InstancePerLifetimeScope(); builder.RegisterType <SearchTermService>().As <ISearchTermService>().InstancePerLifetimeScope(); builder.RegisterType <GenericAttributeService>().As <IGenericAttributeService>().InstancePerLifetimeScope(); builder.RegisterType <FulltextService>().As <IFulltextService>().InstancePerLifetimeScope(); builder.RegisterType <MaintenanceService>().As <IMaintenanceService>().InstancePerLifetimeScope(); builder.RegisterType <CustomerAttributeFormatter>().As <ICustomerAttributeFormatter>().InstancePerLifetimeScope(); builder.RegisterType <CustomerAttributeParser>().As <ICustomerAttributeParser>().InstancePerLifetimeScope(); builder.RegisterType <CustomerAttributeService>().As <ICustomerAttributeService>().InstancePerLifetimeScope(); builder.RegisterType <CustomerService>().As <ICustomerService>().InstancePerLifetimeScope(); builder.RegisterType <CustomerRegistrationService>().As <ICustomerRegistrationService>().InstancePerLifetimeScope(); builder.RegisterType <CustomerReportService>().As <ICustomerReportService>().InstancePerLifetimeScope(); builder.RegisterType <PermissionService>().As <IPermissionService>().InstancePerLifetimeScope(); builder.RegisterType <AclService>().As <IAclService>().InstancePerLifetimeScope(); builder.RegisterType <PriceCalculationService>().As <IPriceCalculationService>().InstancePerLifetimeScope(); builder.RegisterType <GeoLookupService>().As <IGeoLookupService>().InstancePerLifetimeScope(); builder.RegisterType <CountryService>().As <ICountryService>().InstancePerLifetimeScope(); builder.RegisterType <CurrencyService>().As <ICurrencyService>().InstancePerLifetimeScope(); builder.RegisterType <MeasureService>().As <IMeasureService>().InstancePerLifetimeScope(); builder.RegisterType <StateProvinceService>().As <IStateProvinceService>().InstancePerLifetimeScope(); builder.RegisterType <StoreService>().As <IStoreService>().InstancePerLifetimeScope(); builder.RegisterType <StoreMappingService>().As <IStoreMappingService>().InstancePerLifetimeScope(); builder.RegisterType <DiscountService>().As <IDiscountService>().InstancePerLifetimeScope(); builder.RegisterType <LocalizationService>().As <ILocalizationService>().InstancePerLifetimeScope(); builder.RegisterType <LocalizedEntityService>().As <ILocalizedEntityService>().InstancePerLifetimeScope(); builder.RegisterType <LanguageService>().As <ILanguageService>().InstancePerLifetimeScope(); builder.RegisterType <DownloadService>().As <IDownloadService>().InstancePerLifetimeScope(); builder.RegisterType <MessageTemplateService>().As <IMessageTemplateService>().InstancePerLifetimeScope(); builder.RegisterType <QueuedEmailService>().As <IQueuedEmailService>().InstancePerLifetimeScope(); builder.RegisterType <NewsLetterSubscriptionService>().As <INewsLetterSubscriptionService>().InstancePerLifetimeScope(); builder.RegisterType <NotificationService>().As <INotificationService>().InstancePerLifetimeScope(); builder.RegisterType <CampaignService>().As <ICampaignService>().InstancePerLifetimeScope(); builder.RegisterType <EmailAccountService>().As <IEmailAccountService>().InstancePerLifetimeScope(); builder.RegisterType <WorkflowMessageService>().As <IWorkflowMessageService>().InstancePerLifetimeScope(); builder.RegisterType <MessageTokenProvider>().As <IMessageTokenProvider>().InstancePerLifetimeScope(); builder.RegisterType <Tokenizer>().As <ITokenizer>().InstancePerLifetimeScope(); builder.RegisterType <SmtpBuilder>().As <ISmtpBuilder>().InstancePerLifetimeScope(); builder.RegisterType <EmailSender>().As <IEmailSender>().InstancePerLifetimeScope(); builder.RegisterType <CheckoutAttributeFormatter>().As <ICheckoutAttributeFormatter>().InstancePerLifetimeScope(); builder.RegisterType <CheckoutAttributeParser>().As <ICheckoutAttributeParser>().InstancePerLifetimeScope(); builder.RegisterType <CheckoutAttributeService>().As <ICheckoutAttributeService>().InstancePerLifetimeScope(); builder.RegisterType <GiftCardService>().As <IGiftCardService>().InstancePerLifetimeScope(); builder.RegisterType <OrderService>().As <IOrderService>().InstancePerLifetimeScope(); builder.RegisterType <OrderReportService>().As <IOrderReportService>().InstancePerLifetimeScope(); builder.RegisterType <OrderProcessingService>().As <IOrderProcessingService>().InstancePerLifetimeScope(); builder.RegisterType <OrderTotalCalculationService>().As <IOrderTotalCalculationService>().InstancePerLifetimeScope(); builder.RegisterType <ReturnRequestService>().As <IReturnRequestService>().InstancePerLifetimeScope(); builder.RegisterType <RewardPointService>().As <IRewardPointService>().InstancePerLifetimeScope(); builder.RegisterType <ShoppingCartService>().As <IShoppingCartService>().InstancePerLifetimeScope(); builder.RegisterType <CustomNumberFormatter>().As <ICustomNumberFormatter>().InstancePerLifetimeScope(); builder.RegisterType <PaymentService>().As <IPaymentService>().InstancePerLifetimeScope(); builder.RegisterType <EncryptionService>().As <IEncryptionService>().InstancePerLifetimeScope(); builder.RegisterType <CookieAuthenticationService>().As <IAuthenticationService>().InstancePerLifetimeScope(); builder.RegisterType <UrlRecordService>().As <IUrlRecordService>().InstancePerLifetimeScope(); builder.RegisterType <ShipmentService>().As <IShipmentService>().InstancePerLifetimeScope(); builder.RegisterType <ShippingService>().As <IShippingService>().InstancePerLifetimeScope(); builder.RegisterType <DateRangeService>().As <IDateRangeService>().InstancePerLifetimeScope(); builder.RegisterType <TaxCategoryService>().As <ITaxCategoryService>().InstancePerLifetimeScope(); builder.RegisterType <TaxService>().As <ITaxService>().InstancePerLifetimeScope(); builder.RegisterType <DefaultLogger>().As <ILogger>().InstancePerLifetimeScope(); builder.RegisterType <CustomerActivityService>().As <ICustomerActivityService>().InstancePerLifetimeScope(); builder.RegisterType <ForumService>().As <IForumService>().InstancePerLifetimeScope(); builder.RegisterType <GdprService>().As <IGdprService>().InstancePerLifetimeScope(); builder.RegisterType <PollService>().As <IPollService>().InstancePerLifetimeScope(); builder.RegisterType <BlogService>().As <IBlogService>().InstancePerLifetimeScope(); builder.RegisterType <TopicService>().As <ITopicService>().InstancePerLifetimeScope(); builder.RegisterType <NewsService>().As <INewsService>().InstancePerLifetimeScope(); builder.RegisterType <DateTimeHelper>().As <IDateTimeHelper>().InstancePerLifetimeScope(); builder.RegisterType <SitemapGenerator>().As <ISitemapGenerator>().InstancePerLifetimeScope(); builder.RegisterType <PageHeadBuilder>().As <IPageHeadBuilder>().InstancePerLifetimeScope(); builder.RegisterType <ScheduleTaskService>().As <IScheduleTaskService>().InstancePerLifetimeScope(); builder.RegisterType <ExportManager>().As <IExportManager>().InstancePerLifetimeScope(); builder.RegisterType <ImportManager>().As <IImportManager>().InstancePerLifetimeScope(); builder.RegisterType <PdfService>().As <IPdfService>().InstancePerLifetimeScope(); builder.RegisterType <UploadService>().As <IUploadService>().InstancePerLifetimeScope(); builder.RegisterType <ThemeProvider>().As <IThemeProvider>().InstancePerLifetimeScope(); builder.RegisterType <ThemeContext>().As <IThemeContext>().InstancePerLifetimeScope(); builder.RegisterType <ExternalAuthenticationService>().As <IExternalAuthenticationService>().InstancePerLifetimeScope(); builder.RegisterType <RoutePublisher>().As <IRoutePublisher>().SingleInstance(); builder.RegisterType <CacheKeyService>().As <ICacheKeyService>().InstancePerLifetimeScope(); //slug route transformer builder.RegisterType <SlugRouteTransformer>().AsSelf().InstancePerLifetimeScope(); builder.RegisterType <ReviewTypeService>().As <IReviewTypeService>().SingleInstance(); builder.RegisterType <EventPublisher>().As <IEventPublisher>().SingleInstance(); builder.RegisterType <SettingService>().As <ISettingService>().InstancePerLifetimeScope(); //plugin managers builder.RegisterGeneric(typeof(PluginManager <>)).As(typeof(IPluginManager <>)).InstancePerLifetimeScope(); builder.RegisterType <AuthenticationPluginManager>().As <IAuthenticationPluginManager>().InstancePerLifetimeScope(); builder.RegisterType <WidgetPluginManager>().As <IWidgetPluginManager>().InstancePerLifetimeScope(); builder.RegisterType <ExchangeRatePluginManager>().As <IExchangeRatePluginManager>().InstancePerLifetimeScope(); builder.RegisterType <DiscountPluginManager>().As <IDiscountPluginManager>().InstancePerLifetimeScope(); builder.RegisterType <PaymentPluginManager>().As <IPaymentPluginManager>().InstancePerLifetimeScope(); builder.RegisterType <PickupPluginManager>().As <IPickupPluginManager>().InstancePerLifetimeScope(); builder.RegisterType <ShippingPluginManager>().As <IShippingPluginManager>().InstancePerLifetimeScope(); builder.RegisterType <TaxPluginManager>().As <ITaxPluginManager>().InstancePerLifetimeScope(); builder.RegisterType <ActionContextAccessor>().As <IActionContextAccessor>().InstancePerLifetimeScope(); //register all settings builder.RegisterSource(new SettingsSource()); //picture service if (config.AzureBlobStorageEnabled) { builder.RegisterType <AzurePictureService>().As <IPictureService>().InstancePerLifetimeScope(); } else { builder.RegisterType <PictureService>().As <IPictureService>().InstancePerLifetimeScope(); } //roxy file manager service builder.Register(context => { var pictureService = context.Resolve <IPictureService>(); return(EngineContext.Current.ResolveUnregistered(pictureService.StoreInDb ? typeof(DatabaseRoxyFilemanService) : typeof(FileRoxyFilemanService))); }).As <IRoxyFilemanService>().InstancePerLifetimeScope(); //installation service if (!DataSettingsManager.DatabaseIsInstalled) { builder.RegisterType <CodeFirstInstallationService>().As <IInstallationService>().InstancePerLifetimeScope(); } //event consumers var consumers = typeFinder.FindClassesOfType(typeof(IConsumer <>)).ToList(); foreach (var consumer in consumers) { builder.RegisterType(consumer) .As(consumer.FindInterfaces((type, criteria) => { var isMatch = type.IsGenericType && ((Type)criteria).IsAssignableFrom(type.GetGenericTypeDefinition()); return(isMatch); }, typeof(IConsumer <>))) .InstancePerLifetimeScope(); } }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, SmiConfig config) { builder.RegisterType <ShipStationService>().As <IShipStationService>().InstancePerLifetimeScope(); }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, SmiConfig config) { builder.RegisterType <StorePickupPointService>().As <IStorePickupPointService>().InstancePerLifetimeScope(); builder.RegisterType <StorePickupPointModelFactory>().As <IStorePickupPointModelFactory>().InstancePerLifetimeScope(); }
public RedisConnectionWrapper(SmiConfig config) { _config = config; _connectionString = new Lazy <string>(GetConnectionString); _redisLockFactory = CreateRedisLockFactory(); }
public RedisPluginsInfo(ISmiFileProvider fileProvider, IRedisConnectionWrapper connectionWrapper, SmiConfig config) : base(fileProvider) { _db = connectionWrapper.GetDatabase(config.RedisDatabaseId ?? (int)RedisDatabaseNumber.Plugin); }
/// <summary> /// Add and configure services /// </summary> /// <param name="services">Collection of service descriptors</param> /// <param name="configuration">Configuration of the application</param> /// <param name="SmiConfig">Smi configuration parameters</param> public void ConfigureServices(IServiceCollection services, IConfiguration configuration, SmiConfig SmiConfig) { //find startup configurations provided by other assemblies _typeFinder = new WebAppTypeFinder(); var startupConfigurations = _typeFinder.FindClassesOfType <ISmiStartup>(); //create and sort instances of startup configurations var instances = startupConfigurations .Select(startup => (ISmiStartup)Activator.CreateInstance(startup)) .OrderBy(startup => startup.Order); //configure services foreach (var instance in instances) { instance.ConfigureServices(services, configuration); } //register mapper configurations AddAutoMapper(services, _typeFinder); //run startup tasks RunStartupTasks(_typeFinder); //resolve assemblies here. otherwise, plugins can throw an exception when rendering views AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, SmiConfig config) { builder.RegisterType <FixedOrByCountryStateZipTaxProvider>().As <ITaxProvider>().InstancePerLifetimeScope(); builder.RegisterType <CountryStateZipService>().As <ICountryStateZipService>().InstancePerLifetimeScope(); }