private IList <Asset> GetAssetList(ProgramOptions options) { var assetList = new List <Asset>(); if (options.Mode == Mode.All) { assetList = _assetService.GetAllAssets().Result.AssetList; } else if (options.Mode == Mode.Account) { _transfers = _assetService.GetAssetTransfers(AssetIdOrAccountId.ByAccountId(options.Id.ToString()), includeAssetInfo: false).Result.Transfers; _trades = _assetService.GetTrades(AssetIdOrAccountId.ByAccountId(options.Id.ToString()), includeAssetInfo: false).Result.Trades; var assetIds = _transfers.Select(transfer => transfer.AssetId).Union(_trades.Select(trade => trade.AssetId)).Distinct(); assetList = _assetService.GetAssets(assetIds).Result.AssetList; } else if (options.Mode == Mode.Asset) { assetList = new List <Asset> { _assetService.GetAsset(options.Id).Result }; } return(assetList); }
private IEnumerable <AssetOwner> CalculateOwnership(int height) { var owners = new Dictionary <string, long> { { _asset.AccountRs, _asset.QuantityQnt } }; var index = 0; while (index < _asset.NumberOfTrades) { var getTradesResult = _assetService.GetTrades(AssetIdOrAccountId.ByAssetId(_asset.AssetId), index, index + 99, includeAssetInfo: false).Result; foreach (var trade in getTradesResult.Trades.Where(t => t.Height <= height)) { UpdateOwnership(owners, trade.BuyerRs, trade.SellerRs, trade.QuantityQnt); } index += 100; } index = 0; while (index < _asset.NumberOfTransfers) { var getTransfersResult = _assetService.GetAssetTransfers(AssetIdOrAccountId.ByAssetId(_asset.AssetId), index, index + 99, includeAssetInfo: false).Result; foreach (var transfer in getTransfersResult.Transfers.Where(t => t.Height <= height)) { UpdateOwnership(owners, transfer.RecipientRs, transfer.SenderRs, transfer.QuantityQnt); } index += 100; } return(owners.Where(o => o.Value != 0).Select(o => new AssetOwner(o.Key, o.Value))); }
private static void GetAllTrades() { foreach (var asset in Assets) { var trades = new List <AssetTrade>(); AssetTrades.Add(asset.AssetId, trades); var index = 0; int replyCount; const int increase = 100; do { var tradesReply = AssetExchangeService.GetTrades(AssetIdOrAccountId.ByAssetId(asset.AssetId), index, index + increase - 1, includeAssetInfo: false).Result; trades.AddRange(tradesReply.Trades); foreach (var assetTrade in tradesReply.Trades) { AssetTradeCount[assetTrade.Buyer] = GetValueOrDefault(AssetTradeCount, assetTrade.Buyer) + 1; AssetTradeCount[assetTrade.Seller] = GetValueOrDefault(AssetTradeCount, assetTrade.Seller) + 1; } replyCount = tradesReply.Trades.Count; index += increase; } while (replyCount == increase); } }
private static void GetAllTransfers() { foreach (var asset in Assets) { var transfers = new List <AssetTransfer>(); AssetTransfers[asset.AssetId] = transfers; var index = 0; int replyCount; const int increase = 100; do { var transfersReply = AssetExchangeService.GetAssetTransfers(AssetIdOrAccountId.ByAssetId(asset.AssetId), index, index + increase - 1, includeAssetInfo: false).Result; transfers.AddRange(transfersReply.Transfers); foreach (var assetTransfer in transfersReply.Transfers) { AssetTransferCount[assetTransfer.SenderId] = GetValueOrDefault(AssetTransferCount, assetTransfer.SenderId) + 1; AssetTransferCount[assetTransfer.RecipientId] = GetValueOrDefault(AssetTransferCount, assetTransfer.RecipientId) + 1; } replyCount = transfersReply.Transfers.Count; index += increase; } while (replyCount == increase); } }
private void TestGetAssetDeletes() { using (Logger = new TestsessionLogger(_logger)) { var result = _service.GetAssetDeletes(AssetIdOrAccountId.ByAssetId(TestSettings.ExistingAssetId)).Result; var txTime = new DateTime(2015, 12, 26, 16, 3, 15); var deleted = result.Deletes.Single(d => d.AssetDeleteId == 14523372185703177675); AssertEquals(TestSettings.Account1.AccountId, deleted.AccountId, nameof(deleted.AccountId)); AssertEquals(TestSettings.Account1.AccountRs, deleted.AccountRs, nameof(deleted.AccountRs)); AssertEquals(TestSettings.ExistingAssetId, deleted.AssetId, nameof(deleted.AssetId)); AssertEquals(512164, deleted.Height, nameof(deleted.Height)); AssertEquals(1, deleted.QuantityQnt, nameof(deleted.QuantityQnt)); AssertEquals(txTime.Ticks, deleted.Timestamp.Ticks, nameof(deleted.Timestamp)); } }
private static IList <AssetTransfer> GetAssetTransfers(Asset asset) { var index = 0; const int count = 100; var hasMore = true; var transfers = new List <AssetTransfer>(); while (hasMore) { var transfersReply = _service.GetAssetTransfers(AssetIdOrAccountId.ByAssetId(asset.AssetId), index, index + count - 1, includeAssetInfo: false).Result; transfers.AddRange(transfersReply.Transfers); index += count; hasMore = transfersReply.Transfers.Count == count; } return(transfers); }