Esempio n. 1
0
        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;
        }
Esempio n. 6
0
        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
            );
        }