public void Setup() { BCash.Instance.EnsureRegistered(); Litecoin.Instance.EnsureRegistered(); _logFactory = LogFactory.Create().AddUnbufferedConsole(); var assetsClient = new AssetsClient(_logFactory, new AssetsClientSettings()); _blockchainProvider = new BlockchainsProvider(assetsClient); _addressNormalizer = new AddressNormalizer ( _logFactory, new IAddressNormalizer[] { new GeneralAddressNormalizer(), new BtcAddressNormalizer(_blockchainProvider, new BtcSettings { Network = "mainnet" }), new BchAddressNormalizer(_blockchainProvider, new BchSettings { Network = "mainnet" }), new LtcAddressNormalizer(_blockchainProvider, new LtcSettings { Network = "ltc-main" }), new EthAddressNormalizer(_blockchainProvider), new XrpAddressNormalizer(_blockchainProvider) } ); }
public BlockchainsProvider(AssetsClient assetsClient) { _assetsClient = assetsClient; var blockchains = new List <Blockchain> { new Blockchain { CryptoCurrency = "BTC", BilId = "Bitcoin" }, new Blockchain { CryptoCurrency = "ETH", BilId = "Ethereum", AssetBlockchain = "Ethereum", AssetReferences = new [] { "ERC20", "ERC223" } }, new Blockchain { CryptoCurrency = "LTC", BilId = "LiteCoin" }, new Blockchain { CryptoCurrency = "BCH", BilId = "BitcoinCash" }, new Blockchain { CryptoCurrency = "XRP", BilId = "Ripple" } }; _byBillId = blockchains.ToDictionary(x => x.BilId); _byAssetBlockchain = blockchains.Where(x => x.AssetBlockchain != null).ToDictionary(x => x.AssetBlockchain); _byAssetReferences = blockchains .Where(x => x.AssetReferences != null) .SelectMany(x => x.AssetReferences.Select(a => new { AssetId = a, Blockchain = x })) .ToDictionary(x => x.AssetId, x => x.Blockchain); }
private static async Task <List <Asset> > GetAssetsAsync(Group organisation, string apiBaseUrl, IdServerResourceOwnerClientSettings idServerResourceOwnerClientSettings) { Console.WriteLine("Retrieving Asset list..."); var assetsClient = new AssetsClient(apiBaseUrl, idServerResourceOwnerClientSettings); var assets = await assetsClient.GetAllAsync(organisation.GroupId); return(assets); }
public ExportHistoryJob( ILogFactory logFactory, AssetsClient assetsClient, Exporter exporter) { _log = logFactory.CreateLog(this); _assetsClient = assetsClient; _exporter = exporter; }
private static async Task UpdateAnAsset() { var apiBaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; var idServerResourceOwnerClientSettings = new IdServerResourceOwnerClientSettings() { BaseAddress = ConfigurationManager.AppSettings["IdentityServerBaseAddress"], ClientId = ConfigurationManager.AppSettings["IdentityServerClientId"], ClientSecret = ConfigurationManager.AppSettings["IdentityServerClientSecret"], UserName = ConfigurationManager.AppSettings["IdentityServerUserName"], Password = ConfigurationManager.AppSettings["IdentityServerPassword"], Scopes = ConfigurationManager.AppSettings["IdentityServerScopes"] }; var organisationGroupId = long.Parse(ConfigurationManager.AppSettings["OrganisationGroupId"]); try { var group = await GetGroupSummary(organisationGroupId, apiBaseUrl, idServerResourceOwnerClientSettings); var assets = await GetAssets(group, apiBaseUrl, idServerResourceOwnerClientSettings); if (assets.Count == 0) { Console.WriteLine(""); Console.WriteLine("======================================================================="); Console.WriteLine("No assets found!"); return; } Asset asset = assets[0]; asset.Notes = "Updated by MiX.Integrate"; Console.WriteLine($"Updating asset with description '{0}'", asset.Description); var assetsClient = new AssetsClient(apiBaseUrl, idServerResourceOwnerClientSettings); assetsClient.Update(asset); asset = assetsClient.Get(asset.AssetId); Console.WriteLine($"Asset with description '{asset.Description }' notes updated to '{asset.Notes}'"); } catch (Exception ex) { Console.WriteLine(""); Console.WriteLine("======================================================================="); Console.WriteLine("Unexpected error:"); PrintException(ex); } finally { Console.WriteLine(""); Console.WriteLine("======================================================================="); Console.WriteLine(""); Console.WriteLine("Press any key to finish."); Console.ReadKey(); } return; }
private static async Task RemoveInvalidAddresses(ILogFactory logFactory) { var assetsClient = new AssetsClient(logFactory, new AssetsClientSettings()); var blockchainProvider = new BlockchainsProvider(assetsClient); var addressNormalizer = new AddressNormalizer ( logFactory, new IAddressNormalizer[] { new GeneralAddressNormalizer(), new BtcAddressNormalizer(blockchainProvider, new BtcSettings { Network = "mainnet" }), new BchAddressNormalizer(blockchainProvider, new BchSettings { Network = "mainnet" }), new LtcAddressNormalizer(blockchainProvider, new LtcSettings { Network = "ltc-main" }), new EthAddressNormalizer(blockchainProvider), new XrpAddressNormalizer(blockchainProvider) } ); var reportReader = new TransactionsReportReader(addressNormalizer); var reportWriter = new TransactionsReportWriter(); Console.WriteLine("Loading..."); var readStream = File.Open("transactions.csv", FileMode.Open, FileAccess.Read, FileShare.Read); var originalTransactions = await reportReader.ReadAsync ( readStream, new Progress <int> ( transactionCount => { if (transactionCount % 1000 == 0) { Console.WriteLine(transactionCount); } } ), leaveOpen : false ); Console.WriteLine("Filtering..."); var filteredTransactions = originalTransactions .Where ( tx => !string.IsNullOrWhiteSpace(tx.Hash) && !string.IsNullOrWhiteSpace(tx.CryptoCurrency) && tx.UserId != Guid.Empty ) .ToHashSet(); Console.WriteLine("Saving..."); var writeStream = File.Open ( "filtered-transactions.csv", FileMode.Create, FileAccess.Write, FileShare.Read ); await reportWriter.WriteAsync ( filteredTransactions, writeStream, new Progress <int> ( transactionsCount => { if (transactionsCount % 1000 == 0) { var percent = transactionsCount * 100 / filteredTransactions.Count; Console.WriteLine($"{percent}%"); } } ), leaveOpen : false ); }