protected override void Load(ContainerBuilder builder)
        {
            var services = new ServiceCollection();

            services.RegisterAssetsClient(AssetServiceSettings.Create(
                                              new Uri(_settings.CurrentValue.Assets.ServiceUrl),
                                              _settings.CurrentValue.Assets.CacheExpirationPeriod));

            builder.Populate(services);

            builder.RegisterLykkeServiceClient(_settings.CurrentValue.ClientAccountServiceClient.ServiceUrl);
        }
示例#2
0
        public AutofacModule(
            PersonalDataServiceClientSettings personalDataServiceClientSettings,
            AssetsServiceClientSettings assetsServiceClientSettings,
            TimeSpan assetsCacheExpirationPeriod,
            IServiceCollection services,
            ILog log)
        {
            _personalDataServiceClientSettings = personalDataServiceClientSettings;
            _log = log;

            services.RegisterAssetsClient(AssetServiceSettings.Create(
                                              new Uri(assetsServiceClientSettings.ServiceUrl), assetsCacheExpirationPeriod));
        }
示例#3
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <HealthService>()
            .As <IHealthService>()
            .SingleInstance();

            builder.RegisterAssetsClient(AssetServiceSettings.Create(
                                             new Uri(_settings.CurrentValue.AssetsServiceClient.ServiceUrl), TimeSpan.FromMinutes(3)));
            builder.AddTriggers();

            builder.RegisterType <UpdateBalanceFunctions>().SingleInstance();
            builder.RegisterType <UpdateObservableOperations>().SingleInstance();
        }
        protected override void Load(ContainerBuilder builder)
        {
            var inMemoryCacheOptions = Options.Create(new MemoryDistributedCacheOptions());
            IDistributedCache cache  = new MemoryDistributedCache(inMemoryCacheOptions);

            builder.RegisterInstance(cache)
            .As <IDistributedCache>()
            .SingleInstance();

            #region Repo

            builder.Register(c => BlackListRepository.Create(_settings.ConnectionString(x => x.BlockchainCashoutPreconditionsCheckService.Db.DataConnString)
                                                             , c.Resolve <ILogFactory>()))
            .As <IBlackListRepository>()
            .SingleInstance();

            #endregion

            builder.RegisterType <AddressExtensionService>()
            .As <AddressExtensionService>()
            .WithParameter("cacheTime", TimeSpan.FromHours(12))
            .SingleInstance();

            builder.RegisterType <BlackListService>()
            .As <IBlackListService>()
            .SingleInstance();

            builder.RegisterType <HealthService>()
            .As <IHealthService>()
            .SingleInstance();

            builder.RegisterType <StartupManager>()
            .As <IStartupManager>();

            builder.RegisterType <ShutdownManager>()
            .As <IShutdownManager>();

            builder.Register(c =>
                             new BlockchainWalletsClient(_settings.CurrentValue.BlockchainWalletsServiceClient.ServiceUrl, c.Resolve <ILogFactory>()))
            .As <IBlockchainWalletsClient>()
            .SingleInstance();

            builder.RegisterType <ValidationService>()
            .As <IValidationService>().SingleInstance();

            builder.RegisterAssetsClient(
                AssetServiceSettings.Create(new Uri(_settings.CurrentValue.Assets.ServiceUrl),
                                            _settings.CurrentValue.Assets.CacheExpirationPeriod),
                true
                );
        }
示例#5
0
        private void BuildConfiguration(IServiceCollection services)
        {
            var generalSettings = Configuration.LoadSettings <Settings>();

            services.AddSingleton(generalSettings.CurrentValue);
            _settings = generalSettings.CurrentValue;

            services.RegisterAssetsClient(AssetServiceSettings.Create(new Uri(_settings.AssetsServiceClient.ServiceUrl), TimeSpan.FromMinutes(10)));
            services.AddSingleton <ILykkeMarketProfile>(new LykkeMarketProfile(new Uri(_settings.MarketProfileServiceClient.ServiceUrl)));

            services.AddSingleton(_settings.PayServiceRates);
            services.AddSingleton(new HttpClient());
            services.RegisterRepositories(_settings.PayServiceRates.Db.AssertHistoryConnString, (ILog)null);
        }
示例#6
0
        private void RegisterServiceClients(ContainerBuilder builder, AppSettings appSettings)
        {
            builder.RegisterType <NettingEngineInstanceManager>()
            .WithParameter(TypedParameter.From(appSettings.NettingEngineServiceClient.Instances))
            .As <INettingEngineInstanceManager>()
            .SingleInstance();

            builder.RegisterInstance(
                new AssetsService(new Uri(appSettings.AssetsServiceClient.ServiceUrl)))
            .As <IAssetsService>()
            .SingleInstance();

            builder.RegisterAssetsClient(AssetServiceSettings.Create(
                                             new Uri(appSettings.AssetsServiceClient.ServiceUrl),
                                             appSettings.TelegramReporterService.AssetsCacheExpirationPeriod));

            builder.RegisterBalancesClient(appSettings.BalancesServiceClient.ServiceUrl);
            builder.RegisterMarketMakerReportsClient(appSettings.MarketMakerReportsServiceClient, null);

            RegisterFiatMarketMakerReportsClient(builder,
                                                 appSettings.FiatMarketMakerReportsServiceClient);

            builder.RegisterMarketMakerArbitrageDetectorClient(new MarketMakerArbitrageDetectorServiceClientSettings
            {
                ServiceUrl = appSettings.MarketMakerArbitrageDetectorServiceClient.ServiceUrl
            }, null);

            builder.RegisterInstance(
                new LiquidityEngineUrlSettings(appSettings.LiquidityEngineServiceClient.Instances
                                               .Select(e => e.ServiceUrl).ToArray()))
            .SingleInstance();

            builder.RegisterIndexHedgingEngineClient(appSettings.IndexHedgingEngineClient, null);

            var cryptoIndexInstances = new List <CryptoIndexClientSettings>();

            foreach (var cics in appSettings.CryptoIndexServiceClient.Instances)
            {
                cryptoIndexInstances.Add(new CryptoIndexClientSettings
                {
                    DisplayName = cics.DisplayName, ServiceUrl = cics.ServiceUrl
                });
            }
            builder.RegisterInstance(
                new CryptoIndexInstancesSettings
            {
                Instances = cryptoIndexInstances.ToArray()
            })
            .SingleInstance();
        }
示例#7
0
        protected override void Load(ContainerBuilder builder)
        {
            _services.RegisterAssetsClient(AssetServiceSettings.Create(
                                               new Uri(_settings.CurrentValue.MarginTradingMarketMaker.ExternalServices.AssetsServiceUrl),
                                               TimeSpan.FromMinutes(5)));

            builder.RegisterInstance(
                new Candleshistoryservice(new Uri(_settings.CurrentValue.CandlesHistoryServiceClient.ServiceUrl)))
            .As <ICandleshistoryservice>()
            .SingleInstance();

            _services.AddSingleton <ITelemetryInitializer, UserAgentTelemetryInitializer>();

            builder.Populate(_services);
        }
示例#8
0
        protected override void Load(ContainerBuilder builder)
        {
            _services.RegisterAssetsClient(
                AssetServiceSettings.Create(
                    new Uri(_settings.AssetsServiceClient.ServiceUrl),
                    TimeSpan.FromMinutes(5)),
                _log);

            builder.RegisterType <PersonalDataService>()
            .As <IPersonalDataService>()
            .WithParameter(TypedParameter.From(_settings.PersonalDataServiceClient));

            builder.RegisterLykkeServiceClient(_settings.ClientAccountServiceClient.ServiceUrl);

            builder.Populate(_services);
        }
示例#9
0
        protected override void Load(ContainerBuilder builder)
        {
            var services = new ServiceCollection();

            services.RegisterAssetsClient(AssetServiceSettings.Create(
                                              new Uri(_settings.CurrentValue.Assets.ServiceUrl),
                                              _settings.CurrentValue.Assets.CacheExpirationPeriod));

            builder.RegisterType <ExchangeConnectorService>()
            .As <IExchangeConnectorService>()
            .WithParameter("settings", _settings.CurrentValue.MtStpExchangeConnectorClient)
            .SingleInstance();

            builder.Populate(services);

            builder.RegisterLykkeServiceClient(_settings.CurrentValue.ClientAccountServiceClient.ServiceUrl);
        }
示例#10
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterLykkeServiceClient(_serviceSettings.CurrentValue.ClientAccountServiceUrl);

            builder.RegisterType <HftInternalServiceAPI>()
            .As <IHftInternalServiceAPI>()
            .WithParameter("baseUri", new Uri(_serviceSettings.CurrentValue.HftInternalServiceUrl));

            builder.RegisterType <LykkeMarketProfileServiceAPI>()
            .As <ILykkeMarketProfileServiceAPI>()
            .WithParameter("baseUri", new Uri(_serviceSettings.CurrentValue.MarketProfileUrl));

            builder.RegisterOperationsClient(_serviceSettings.CurrentValue.OperationsUrl);

            builder.RegisterType <LykkeRegistrationClient>()
            .As <ILykkeRegistrationClient>()
            .WithParameter("serviceUrl", _serviceSettings.CurrentValue.RegistrationUrl);

            builder.RegisterType <ClientSessionsClient>()
            .As <IClientSessionsClient>()
            .WithParameter("serviceUrl", _serviceSettings.CurrentValue.SessionUrl);

            builder.RegisterType <PersonalDataService>().As <IPersonalDataService>()
            .WithParameter(TypedParameter.From(_apiSettings.CurrentValue.PersonalDataServiceSettings));

            builder.RegisterOperationsHistoryClient(_apiSettings.CurrentValue.OperationsHistoryServiceClient, _log);

            _services.RegisterAssetsClient(AssetServiceSettings.Create(
                                               new Uri(_serviceSettings.CurrentValue.AssetsServiceUrl),
                                               TimeSpan.FromMinutes(1)));

            builder.RegisterClientDictionariesClient(_apiSettings.CurrentValue.ClientDictionariesServiceClient, _log);

            builder.BindMeClient(_apiSettings.CurrentValue.MatchingEngineClient.IpEndpoint.GetClientIpEndPoint(), socketLog: null, ignoreErrors: true);

            builder.RegisterOperationsRepositoryClients(_serviceSettings.CurrentValue.OperationsRepositoryClient, _log);

            builder.RegisterAffiliateClient(_serviceSettings.CurrentValue.AffiliateServiceClient.ServiceUrl, _log);

            builder.RegisterFeeCalculatorClient(_apiSettings.CurrentValue.FeeCalculatorServiceClient.ServiceUrl, _log);

            builder.Populate(_services);
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterModule(new Services.AutofacModule());

            builder.RegisterModule(new AzureRepositories.AutofacModule(
                                       _appSettings.Nested(o => o.MarketMakerReportsService.Db.DataConnectionString)));

            builder.RegisterType <StartupManager>()
            .As <IStartupManager>();

            builder.RegisterType <ShutdownManager>()
            .As <IShutdownManager>();

            RegisterRabbit(builder);

            builder.RegisterRateCalculatorClient(_appSettings.CurrentValue.RateCalculatorServiceClient.ServiceUrl);

            builder.RegisterAssetsClient(AssetServiceSettings
                                         .Create(new Uri(_appSettings.CurrentValue.AssetsServiceClient.ServiceUrl),
                                                 _appSettings.CurrentValue.MarketMakerReportsService.AssetsCacheExpirationPeriod));
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <StartupManager>()
            .As <IStartupManager>()
            .SingleInstance();

            builder.RegisterType <ShutdownManager>()
            .As <IShutdownManager>()
            .AutoActivate()
            .SingleInstance();

            builder.RegisterInstance(
                new Swisschain.Sirius.Api.ApiClient.ApiClient(_appSettings.CurrentValue.SiriusApiServiceClient.GrpcServiceUrl, _appSettings.CurrentValue.SiriusApiServiceClient.ApiKey)
                ).As <Swisschain.Sirius.Api.ApiClient.IApiClient>();

            builder.RegisterType <DepositsDetectorService>()
            .WithParameter(TypedParameter.From(_appSettings.CurrentValue.SiriusApiServiceClient.BrokerAccountId))
            .As <IStartable>()
            .As <IStopable>()
            .AutoActivate()
            .SingleInstance();

            builder.Register(ctx =>
                             new LastCursorRepository(AzureTableStorage <CursorEntity> .Create(
                                                          _appSettings.ConnectionString(x => x.SiriusDepositsDetectorJob.Db.DataConnString),
                                                          "LastDepostCursors", ctx.Resolve <ILogFactory>()))
                             ).As <ILastCursorRepository>().SingleInstance();

            builder.Register(ctx =>
                             new OperationIdsRepository(AzureTableStorage <OperationIdEntity> .Create(
                                                            _appSettings.ConnectionString(x => x.SiriusDepositsDetectorJob.Db.DataConnString),
                                                            "OperationIds", ctx.Resolve <ILogFactory>()))
                             ).As <IOperationIdsRepository>().SingleInstance();

            builder.RegisterMeClient(_appSettings.CurrentValue.MatchingEngineClient.IpEndpoint.GetClientIpEndPoint(), true);
            builder.RegisterAssetsClient(
                AssetServiceSettings.Create(
                    new Uri(_appSettings.CurrentValue.AssetsServiceClient.ServiceUrl),
                    _appSettings.CurrentValue.AssetsServiceClient.ExpirationPeriod));
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.Register(c =>
                             new ClientDialogsRepository(AzureTableStorage <ClientDialogEntity> .Create(
                                                             _appSettings.ConnectionString(x => x.ClientDialogsService.Db.DataConnString), "Dialogs", c.Resolve <ILogFactory>()),
                                                         AzureTableStorage <AzureIndex> .Create(_appSettings.ConnectionString(x => x.ClientDialogsService.Db.DataConnString),
                                                                                                "ClientDialogs", c.Resolve <ILogFactory>()),
                                                         AzureTableStorage <AzureIndex> .Create(_appSettings.ConnectionString(x => x.ClientDialogsService.Db.DataConnString),
                                                                                                "GlobalDialogs", c.Resolve <ILogFactory>())
                                                         )
                             ).As <IClientDialogsRepository>().SingleInstance();

            builder.Register(c =>
                             new ClientDialogSubmitsRepository(AzureTableStorage <ClientDialogSubmitEntity> .Create(
                                                                   _appSettings.ConnectionString(x => x.ClientDialogsService.Db.DataConnString), "SubmittedDialogs",
                                                                   c.Resolve <ILogFactory>()))
                             ).As <IClientDialogSubmitsRepository>().SingleInstance();

            builder.Register(c =>
                             new DialogConditionsRepository(AzureTableStorage <DialogConditionEntity> .Create(
                                                                _appSettings.ConnectionString(x => x.ClientDialogsService.Db.DataConnString), "DialogConditions", c.Resolve <ILogFactory>()),
                                                            AzureTableStorage <AzureIndex> .Create(_appSettings.ConnectionString(x => x.ClientDialogsService.Db.DataConnString),
                                                                                                   "DialogConditions", c.Resolve <ILogFactory>())
                                                            )
                             ).As <IDialogConditionsRepository>().SingleInstance();

            builder.RegisterType <ClientDialogsService>()
            .As <IClientDialogsService>()
            .SingleInstance();

            builder.RegisterType <DialogConditionsService>()
            .As <IDialogConditionsService>()
            .SingleInstance();

            builder.RegisterAssetsClient(AssetServiceSettings.Create(
                                             new Uri(_appSettings.CurrentValue.AssetsServiceClient.ServiceUrl),
                                             _appSettings.CurrentValue.AssetsServiceClient.ExpirationPeriod));
        }
示例#14
0
 public RabbitMqModule(IReloadingManager <AssetServiceSettings> settings, ILog log)
 {
     _settings = settings.CurrentValue;
     _log      = log;
 }
示例#15
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterClientAccountClient(_settings.ClientAccountServiceUrl);

            builder.RegisterHftInternalClient(_settings.HftInternalServiceUrl);

            builder.RegisterType <LykkeMarketProfileServiceAPI>()
            .As <ILykkeMarketProfileServiceAPI>()
            .WithParameter("baseUri", new Uri(_settings.MarketProfileUrl));

            builder.RegisterOperationsClient(_settings.OperationsUrl);

            builder.RegisterType <LykkeRegistrationClient>()
            .As <ILykkeRegistrationClient>()
            .WithParameter("serviceUrl", _settings.RegistrationUrl);

            builder.RegisterClientSessionClient(new SessionServiceClientSettings {
                ServiceUrl = _apiSettings.CurrentValue.WalletApiv2.Services.SessionUrl
            });

            builder.RegisterType <PersonalDataService>().As <IPersonalDataService>()
            .WithParameter(TypedParameter.From(_apiSettings.CurrentValue.PersonalDataServiceSettings));

            builder.RegisterInstance(
                new KycStatusServiceClient(_apiSettings.CurrentValue.KycServiceClient, _log))
            .As <IKycStatusService>()
            .SingleInstance();

            builder.RegisterInstance(
                new KycProfileServiceClient(_apiSettings.CurrentValue.KycServiceClient, _log))
            .As <IKycProfileService>()
            .SingleInstance();

            builder.RegisterInstance <IAssetDisclaimersClient>(
                new AssetDisclaimersClient(_apiSettings.CurrentValue.AssetDisclaimersServiceClient));

            _services.RegisterAssetsClient(AssetServiceSettings.Create(
                                               new Uri(_settings.AssetsServiceUrl),
                                               TimeSpan.FromMinutes(60)), _log);


            builder.RegisterClientDictionariesClient(_apiSettings.CurrentValue.ClientDictionariesServiceClient, _log);

            var socketLog = new SocketLogDynamic(
                i => { },
                s => _log.WriteInfo("MeClient", null, s));

            builder.BindMeClient(_apiSettings.CurrentValue.MatchingEngineClient.IpEndpoint.GetClientIpEndPoint(), socketLog, ignoreErrors: true);

            builder.RegisterFeeCalculatorClient(_apiSettings.CurrentValue.FeeCalculatorServiceClient.ServiceUrl, _log);

            builder.RegisterAffiliateClient(_settings.AffiliateServiceClient.ServiceUrl, _log);

            builder.RegisterIndicesFacadeClient(new IndicesFacadeServiceClientSettings {
                ServiceUrl = _settings.IndicesFacadeServiceUrl
            }, null);

            builder.RegisterInstance <IAssetDisclaimersClient>(new AssetDisclaimersClient(_apiSettings.CurrentValue.AssetDisclaimersServiceClient));

            builder.RegisterPaymentSystemClient(_apiSettings.CurrentValue.PaymentSystemServiceClient.ServiceUrl, _log);

            builder.RegisterLimitationsServiceClient(_apiSettings.CurrentValue.LimitationServiceClient.ServiceUrl);

            builder.RegisterClientDialogsClient(_apiSettings.CurrentValue.ClientDialogsServiceClient);

            builder.Register(ctx => new BlockchainWalletsClient(_apiSettings.CurrentValue.BlockchainWalletsServiceClient.ServiceUrl, _log, new BlockchainWalletsApiFactory()))
            .As <IBlockchainWalletsClient>()
            .SingleInstance();

            builder.RegisterSwiftCredentialsClient(_apiSettings.CurrentValue.SwiftCredentialsServiceClient);

            builder.RegisterHistoryClient(new HistoryServiceClientSettings {
                ServiceUrl = _settings.HistoryServiceUrl
            });

            builder.RegisterConfirmationCodesClient(_apiSettings.Nested(r => r.ConfirmationCodesClient).CurrentValue);

            builder.RegisterBlockchainCashoutPreconditionsCheckClient(_apiSettings.CurrentValue.BlockchainCashoutPreconditionsCheckServiceClient.ServiceUrl);

            #region BlockchainSettings

            var settings = _blockchainSettingsServiceClient;

            var cacheManager = new ClientCacheManager();
            var factory      =
                new Lykke.Service.BlockchainSettings.Client.HttpClientGenerator.BlockchainSettingsClientFactory();
            var client = factory.CreateNew(settings.ServiceUrl, settings.ApiKey, true, cacheManager);
            builder.RegisterInstance(client)
            .As <IBlockchainSettingsClient>();
            builder.RegisterInstance(client)
            .As <IBlockchainSettingsClient>()
            .SingleInstance();

            builder.RegisterInstance(cacheManager)
            .As <IClientCacheManager>()
            .SingleInstance();

            builder.RegisterType <BlockchainExplorersProvider>()
            .As <IBlockchainExplorersProvider>()
            .SingleInstance();

            #endregion

            builder.RegisterPushNotificationsClient(_apiSettings.CurrentValue.PushNotificationsServiceClient.ServiceUrl);

            builder.RegisterTierClient(_apiSettings.CurrentValue.TierServiceClient);

            builder.RegisterMarketDataClient(_apiSettings.CurrentValue.MarketDataServiceClient);
            builder.RegisterLink4PayClient(_apiSettings.CurrentValue.Link4PayServiceClient);

            builder.Populate(_services);
        }
示例#16
0
        protected override void Load(ContainerBuilder builder)
        {
            builder
            .Register(ctx => _blockchainsIntegrationSettings)
            .AsSelf()
            .SingleInstance();

            builder
            .Register(CreateBlockchainSignFacadeClient)
            .As <IBlockchainSignFacadeClient>();

            builder
            .RegisterType <BlockchainIntegrationService>()
            .WithParameter("timeoutFoApiInSeconds", _blockchainWalletsSettings.BlockchainApiTimeoutInSeconds)
            .As <IBlockchainIntegrationService>()
            .SingleInstance();

            builder
            .RegisterType <HealthService>()
            .As <IHealthService>();

            builder
            .RegisterType <WalletService>()
            .As <IWalletService>();

            builder
            .RegisterType <AddressService>()
            .As <IAddressService>()
            .SingleInstance();

            builder
            .RegisterType <BlockchainExtensionsService>()
            .As <IBlockchainExtensionsService>()
            .SingleInstance();

            builder
            .RegisterType <BlockchainAssetService>()
            .As <IBlockchainAssetService>()
            .SingleInstance();

            builder
            .RegisterType <AddressParser>()
            .As <IAddressParser>();

            builder
            .RegisterAssetsClient(AssetServiceSettings.Create(
                                      new Uri(_assetServiceSettings.ServiceUrl),
                                      _assetServiceSettings.ExpirationPeriod));

            builder
            .RegisterType <StartupManager>()
            .As <IStartupManager>();

            #region FirstGenerationServices

            builder
            .RegisterType <LegacyWalletService>()
            .As <ILegacyWalletService>();

            builder
            .RegisterType <SrvBlockchainHelper>()
            .As <ISrvBlockchainHelper>();

            builder
            .RegisterType <SrvEthereumHelper>()
            .As <ISrvEthereumHelper>();

            builder
            .RegisterType <SrvSolarCoinHelper>()
            .As <ISrvSolarCoinHelper>();

            builder.RegisterInstance <BitcoinCoreSettings>(_appSettings.BitcoinCoreSettings);
            builder.RegisterInstance <IBitcoinApiClient>(new BitcoinApiClient(_appSettings.BitcoinCoreSettings.BitcoinCoreApiUrl));
            builder.RegisterLykkeServiceClient(_appSettings.ClientAccountServiceClient.ServiceUrl);
            builder.RegisterInstance <IEthereumCoreAPI>(new EthereumCoreAPI(new Uri(_appSettings.EthereumServiceClient.ServiceUrl), new HttpClient()));
            builder.RegisterInstance <SolarCoinServiceClientSettings>(_appSettings.SolarCoinServiceClient);
            builder.RegisterInstance <QuantaServiceClientSettings>(_appSettings.QuantaServiceClient);
            builder.RegisterInstance <ChronoBankServiceClientSettings>(_appSettings.ChronoBankServiceClient);

            #endregion
        }
示例#17
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.Register(ctx =>
                {
                    var factory = ctx.Resolve<IHttpClientFactory>();
                    return new LykkeWalletAPIv1Client(factory.CreateClient(HttpClientNames.WalletApiV1));
                })
                .As<ILykkeWalletAPIv1Client>();

            builder.Register(ctx =>
                {
                    var factory = ctx.Resolve<IHttpClientFactory>();
                    return new LykkeWalletAPIv2Client(factory.CreateClient(HttpClientNames.WalletApiV2));
                })
                .As<ILykkeWalletAPIv2Client>();

            builder.RegisterClientSessionClient(
                new SessionServiceClientSettings {ServiceUrl = _config.Services.SessionServiceUrl});

            builder.RegisterType<GrpcPrincipal>().As<IGrpcPrincipal>().InstancePerLifetimeScope();

            builder.Register(ctx =>
                {
                    var logger = ctx.Resolve<ILoggerFactory>();
                    _logFactory = logger.ToLykke();
                    return _logFactory;
                })
                .As<ILogFactory>();

            builder.Register(ctx =>
                {
                    var client = new MyNoSqlTcpClient(() => _config.MyNoSqlServer.ReaderServiceUrl,
                        $"{ApplicationInformation.AppName}-{Environment.MachineName}");

                    client.Start();
                    return client;
                })
                .AsSelf()
                .SingleInstance();

            builder.Register(ctx =>
                    new MyNoSqlReadRepository<PriceEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                        _config.MyNoSqlServer.PricesTableName)
                )
                .As<IMyNoSqlServerDataReader<PriceEntity>>()
                .SingleInstance();

            builder.Register(ctx =>
                    new MyNoSqlReadRepository<CandleEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                        _config.MyNoSqlServer.CandlesTableName)
                )
                .As<IMyNoSqlServerDataReader<CandleEntity>>()
                .SingleInstance();

            builder.Register(ctx =>
                    new MyNoSqlReadRepository<TickerEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                        _config.MyNoSqlServer.TickersTableName)
                )
                .As<IMyNoSqlServerDataReader<TickerEntity>>()
                .SingleInstance();

            builder.Register(ctx =>
                new MyNoSqlReadRepository<OrderbookEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                    _config.MyNoSqlServer.OrderbooksTableName)
            ).As<IMyNoSqlServerDataReader<OrderbookEntity>>().SingleInstance();

            builder.Register(ctx =>
                new MyNoSqlReadRepository<SessionEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                    _config.MyNoSqlServer.SessionsTableName)
            ).As<IMyNoSqlServerDataReader<SessionEntity>>().SingleInstance();

            builder.Register(ctx =>
            {
                return new MyNoSqlServer.DataWriter.MyNoSqlServerDataWriter<SessionEntity>(() =>
                        _config.MyNoSqlServer.WriterServiceUrl,
                    _config.MyNoSqlServer.SessionsTableName);
            }).As<IMyNoSqlServerDataWriter<SessionEntity>>().SingleInstance();

            builder.RegisterType<PricesStreamService>()
                .WithParameter(TypedParameter.From(true))
                .WithParameter("jobPeriod", TimeSpan.FromSeconds(1))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<CandlesStreamService>()
                .WithParameter(TypedParameter.From(true))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<OrderbookStreamService>()
                .WithParameter(TypedParameter.From(true))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<PublicTradesStreamService>()
                .WithParameter(TypedParameter.From(true))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<ApplicationManager>()
                .As<IStartable>()
                .AutoActivate()
                .SingleInstance();

            builder.RegisterInstance(
                    new Candleshistoryservice(new Uri(_config.Services.CandlesHistoryServiceUrl), new HttpClient())
                )
                .As<ICandleshistoryservice>();

            builder.RegisterAssetsClient(AssetServiceSettings.Create(new Uri(_config.Services.AssetsServiceUrl),
                TimeSpan.FromMinutes(60)));

            builder.RegisterBalancesClient(_config.Services.BalancesServiceUrl);
            builder.RegisterMeClient(_config.MatchingEngine.GetIpEndPoint());
            builder.RegisterClientAccountClient(_config.Services.ClientAccountServiceUrl);

            builder.RegisterType<AssetsHelper>().AsSelf().SingleInstance();
            builder.RegisterType<ValidationService>().AsSelf().SingleInstance();
            builder.RegisterInstance(_config.WalletApi);
            builder.RegisterRateCalculatorClient(_config.Services.RateCalculatorServiceUrl);
            var cache = new RedisCache(new RedisCacheOptions
            {
                Configuration = _config.Redis.RedisConfiguration,
                InstanceName = _config.Redis.InstanceName
            });

            builder.RegisterInstance(cache)
                .As<IDistributedCache>()
                .SingleInstance();

            builder.RegisterType<OrderbooksService>()
                .WithParameter(TypedParameter.From(_config.Redis.OrderBooksCacheKeyPattern))
                .AsSelf()
                .SingleInstance();

            builder.Register(ctx =>
                    new TradesAdapterClient(_config.Services.TradesAdapterServiceUrl,
                        ctx.Resolve<ILogFactory>().CreateLog(nameof(TradesAdapterClient)))
                )
                .As<ITradesAdapterClient>()
                .SingleInstance();

            builder.RegisterRegistrationServiceClient(new RegistrationServiceClientSettings{ServiceUrl = _config.Services.RegistrationServiceUrl});

            builder.RegisterType<SessionService>()
                .WithParameter(TypedParameter.From(_config.SessionLifetimeInMins))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<PublicTradesSubscriber>()
                .As<IStartable>()
                .AutoActivate()
                .WithParameter("connectionString", _config.RabbitMq.PublicTrades.ConnectionString)
                .WithParameter("exchangeName", _config.RabbitMq.PublicTrades.ExchangeName)
                .SingleInstance();

            builder.RegisterPushNotificationsClient(_config.Services.PushNotificationsServiceUrl);
        }
示例#18
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterAssetsClient(AssetServiceSettings.Create(new Uri(_settings.CurrentValue.AssetsServiceClient.ServiceUrl), TimeSpan.FromMinutes(3)));

            builder.RegisterHistoryClient(_settings.CurrentValue.HistoryServiceClient);
        }
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <HealthService>()
            .As <IHealthService>()
            .SingleInstance();

            builder.RegisterType <StartupManager>()
            .As <IStartupManager>()
            .SingleInstance();

            builder.RegisterType <ShutdownManager>()
            .As <IShutdownManager>()
            .AutoActivate()
            .SingleInstance();

            builder.RegisterType <CashoutProcessorService>()
            .WithParameter(TypedParameter.From(_settings.CurrentValue.SiriusApiServiceClient.BrokerAccountId))
            .As <IStartable>()
            .As <IStopable>()
            .AutoActivate()
            .SingleInstance();

            builder.RegisterInstance(
                new Swisschain.Sirius.Api.ApiClient.ApiClient(_settings.CurrentValue.SiriusApiServiceClient.GrpcServiceUrl, _settings.CurrentValue.SiriusApiServiceClient.ApiKey)
                ).As <Swisschain.Sirius.Api.ApiClient.IApiClient>();

            builder.Register(ctx =>
                             new LastCursorRepository(AzureTableStorage <CursorEntity> .Create(
                                                          _settings.ConnectionString(x => x.SiriusCashoutProcessorJob.Db.DataConnString),
                                                          "LastWithdrawalCursors", ctx.Resolve <ILogFactory>()))
                             ).As <ILastCursorRepository>().SingleInstance();

            builder.Register(ctx =>
                             new WithdrawalLogsRepository(AzureTableStorage <WithdrawalLogEntity> .Create(
                                                              _settings.ConnectionString(x => x.SiriusCashoutProcessorJob.Db.DataConnString),
                                                              "WithdrawalStateLogs", ctx.Resolve <ILogFactory>()))
                             ).As <IWithdrawalLogsRepository>().SingleInstance();

            builder.Register(ctx =>
                             new RefundsRepository(AzureTableStorage <RefundEntity> .Create(
                                                       _settings.ConnectionString(x => x.SiriusCashoutProcessorJob.Db.DataConnString),
                                                       "WithdrawalRefunds", ctx.Resolve <ILogFactory>()))
                             ).As <IRefundsRepository>().SingleInstance();

            builder.RegisterMeClient(_settings.CurrentValue.MatchingEngineClient.IpEndpoint.GetClientIpEndPoint(), true);
            builder.RegisterAssetsClient(
                AssetServiceSettings.Create(
                    new Uri(_settings.CurrentValue.AssetsServiceClient.ServiceUrl),
                    _settings.CurrentValue.AssetsServiceClient.ExpirationPeriod));

            builder.RegisterOperationsClient(_settings.CurrentValue.OperationsServiceClient.ServiceUrl);

            builder.RegisterType <PrivateKeyService>()
            .WithParameter(new NamedParameter("vaultBaseUrl", _settings.CurrentValue.SiriusCashoutProcessorJob.KeyVault.VaultBaseUrl))
            .WithParameter(new NamedParameter("keyName", _settings.CurrentValue.SiriusCashoutProcessorJob.KeyVault.PrivateKeyName))
            .SingleInstance();

            builder.RegisterInstance(
                new KeyVaultClient(
                    async(string authority, string resource, string scope) =>
            {
                var authContext = new AuthenticationContext(authority);
                var clientCred  = new ClientCredential(_settings.CurrentValue.SiriusCashoutProcessorJob.KeyVault.ClientId,
                                                       _settings.CurrentValue.SiriusCashoutProcessorJob.KeyVault.ClientSecret);
                var result = await authContext.AcquireTokenAsync(resource, clientCred);
                if (result == null)
                {
                    throw new InvalidOperationException("Failed to retrieve access token for Key Vault");
                }

                return(result.AccessToken);
            }
                    ));
        }
        /// <summary>
        /// Register IAssetsServiceUserDataClient in the builder
        /// </summary>
        public static void RegisterAssetsServiceUserDataClient(this ContainerBuilder builder, AssetServiceSettings serviceSettings)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(serviceSettings));
            }

            builder.RegisterAssetsServiceUserDataClient(serviceSettings.AssetServiceMyNoSqlReaderHostPort, serviceSettings.ServiceUrl);
        }