public void Init() { var baseSettings = Config.Services.GetService <IBaseSettings>(); var web3 = Config.Services.GetService <Web3>(); var signatureApi = Config.Services.GetService <ILykkeSigningAPI>(); var nonceCalculator = Config.Services.GetService <INonceCalculator>(); var transactionRouter = Config.Services.GetService <ITransactionRouter>(); var gasPriceRepository = Config.Services.GetService <IGasPriceRepository>(); _transactionManager = new LykkeSignedTransactionManager(baseSettings, nonceCalculator, signatureApi, transactionRouter, web3, gasPriceRepository); }
public static void RegisterServices(this IServiceCollection Services) { Services.AddTransient <IContractService, ContractService>(); Services.AddTransient <IPaymentService, PaymentService>(); Services.AddTransient <IEthereumQueueOutService, EthereumQueueOutService>(); Services.AddTransient <IEthereumTransactionService, EthereumTransactionService>(); Services.AddTransient <IExchangeContractService, ExchangeContractService>(); Services.AddTransient <ICoinTransactionService, CoinTransactionService>(); Services.AddTransient <IErcInterfaceService, ErcInterfaceService>(); Services.AddTransient <AssetContractService>(); Services.AddTransient <TransferContractService>(); Services.AddTransient <ExternalTokenService>(); Services.AddTransient <TransferContractPoolService>(); Services.AddTransient <ITransferContractQueueService, TransferContractQueueService>(); Services.AddTransient <ITransferContractQueueServiceFactory, TransferContractQueueServiceFactory>(); Services.AddTransient <ITransferContractService, TransferContractService>(); Services.AddTransient <TransferContractUserAssignmentQueueService, TransferContractUserAssignmentQueueService>(); Services.AddTransient <ITransferContractTransactionService, TransferContractTransactionService>(); Services.AddTransient <ITransferContractUserAssignmentQueueService, TransferContractUserAssignmentQueueService>(); Services.AddTransient <ISlackNotifier, SlackNotifier>(); Services.AddTransient <ICoinEventPublisher, CoinEventPublisherService>(); Services.AddTransient <ICoinEventService, CoinEventService>(); Services.AddSingleton <IHashCalculator, HashCalculator>(); Services.AddSingleton <IPendingOperationService, PendingOperationService>(); Services.AddSingleton <ITransactionEventsService, TransactionEventsService>(); Services.AddSingleton <INonceCalculator, NonceCalculator>(); Services.AddSingleton <IPrivateWalletService, PrivateWalletService>(); Services.AddSingleton <IEthereumIndexerService, EthereumIndexerService>(); Services.AddSingleton <ISignatureChecker, SignatureChecker>(); Services.AddSingleton <IRawTransactionSubmitter, RawTransactionSubmitter>(); Services.AddSingleton <IErc20PrivateWalletService, Erc20PrivateWalletService>(); Services.AddSingleton <IOwnerService, OwnerService>(); Services.AddSingleton <IOwnerBlockchainService, OwnerBlockchainService>(); Services.AddSingleton <IErc20BalanceService, Erc20BalanceService>(); Services.AddSingleton <ITransactionValidationService, TransactionValidationService>(); Services.AddSingleton <ISignatureService, SignatureService>(); Services.AddSingleton <IHotWalletService, HotWalletService>(); Services.AddSingleton <IErc20DepositContractPoolService, Erc20DepositContractPoolService>(); Services.AddSingleton <IErc20DepositContractService, Erc20DepositContractService>(); Services.AddSingleton <IErc20DepositContractQueueServiceFactory, Erc20DepositContractQueueServiceFactory>(); Services.AddSingleton <IErc20DepositTransactionService, Erc20DepositTransactionService>(); Services.AddSingleton <ITransactionRouter, TransactionRouter>(); Services.AddSingleton <IGasPriceService, GasPriceService>(); //Uses HttpClient Inside -> singleton Services.AddSingleton <ILykkeSigningAPI>((provider) => { var lykkeSigningAPI = new LykkeSigningAPI(new Uri(provider.GetService <IBaseSettings>().SignatureProviderUrl , UriKind.Absolute)); return(lykkeSigningAPI); }); Services.AddSingleton <IEthereumSamuraiApi>((provider) => { var ethereumSamuraiApi = new EthereumSamuraiApi(new Uri(provider.GetService <IBaseSettings>().EthereumSamuraiUrl , UriKind.Absolute)); return(ethereumSamuraiApi); }); Services.AddSingleton <Web3>((provider) => { var baseSettings = provider.GetService <IBaseSettings>(); var web3 = new Web3(baseSettings.EthereumUrl); return(web3); }); Services.AddSingleton <IWeb3>((provider) => { var web3 = provider.GetService <Web3>(); return(new Web3Decorator(web3)); }); Services.AddSingleton <ITransactionManager>(provider => { var baseSettings = provider.GetService <IBaseSettings>(); var web3 = provider.GetService <Web3>(); var signatureApi = provider.GetService <ILykkeSigningAPI>(); var nonceCalculator = provider.GetService <INonceCalculator>(); var transactionRouter = provider.GetService <ITransactionRouter>(); var gasPriceRepository = provider.GetService <IGasPriceRepository>(); var transactionManager = new LykkeSignedTransactionManager(baseSettings, nonceCalculator, signatureApi, transactionRouter, web3, gasPriceRepository); web3.TransactionManager = transactionManager; web3.Client.OverridingRequestInterceptor = new SignatureInterceptor(transactionManager); return(transactionManager); }); Services.AddSingleton <IAssetsService>((provider) => { var settings = provider.GetService <AppSettings>(); return(new AssetsService(new Uri(settings.Assets.ServiceUrl))); }); }
public static void RegisterServices(this IServiceCollection Services) { //Uses HttpClient Inside -> singleton Services.AddSingleton <ILykkeSigningAPI>((provider) => { var baseSettings = provider.GetService <IBaseSettings>(); var apiKey = baseSettings.SigningServiceApiKey; ApiKeyHandler apiKeyHandler = new ApiKeyHandler(apiKey); var lykkeSigningApi = new LykkeSigningAPI(new Uri(provider.GetService <IBaseSettings>().SignatureProviderUrl , UriKind.Absolute), apiKeyHandler); return(lykkeSigningApi); }); Services.AddSingleton <IEthereumSamuraiAPI>((provider) => { var ethereumSamuraiApi = new EthereumSamuraiAPI(new Uri(provider.GetService <IBaseSettings>().EthereumSamuraiUrl , UriKind.Absolute)); return(ethereumSamuraiApi); }); Services.AddSingleton <Web3>((provider) => { var baseSettings = provider.GetService <IBaseSettings>(); var web3 = new Web3(baseSettings.EthereumUrl); return(web3); }); Services.AddSingleton <IWeb3>((provider) => { var web3 = provider.GetService <Web3>(); return(new Web3Decorator(web3)); }); Services.AddSingleton <ITransactionManager>(provider => { var baseSettings = provider.GetService <IBaseSettings>(); var web3 = provider.GetService <Web3>(); var signatureApi = provider.GetService <ILykkeSigningAPI>(); var nonceCalculator = provider.GetService <INonceCalculator>(); var transactionRouter = provider.GetService <ITransactionRouter>(); var gasPriceRepository = provider.GetService <IGasPriceRepository>(); var transactionManager = new LykkeSignedTransactionManager(baseSettings, nonceCalculator, signatureApi, transactionRouter, web3, gasPriceRepository); web3.TransactionManager = transactionManager; web3.Client.OverridingRequestInterceptor = new SignatureInterceptor(transactionManager); return(transactionManager); }); Services.AddSingleton <IAssetsService>((provider) => { var settings = provider.GetService <AppSettings>(); return(new AssetsService(new Uri(settings.Assets.ServiceUrl))); }); Services.AddSingleton <IBlockPassClient>((provider) => { var settings = provider.GetService <BlockPassClientSettings>(); BlockPassClientFactory factory = new BlockPassClientFactory(); var client = factory.CreateNew(settings, false); return(client); }); }