private async Task <OrderBook> GetOrderBookLocalAsync(IKrakenApi api, AssetPair assetPair, int?maxCount) { var pair = assetPair; var remotePair = new AssetPair(pair.Asset1.ToRemoteCode(this), pair.Asset2.ToRemoteCode(this)); var r = await api.GetOrderBookAsync(remotePair.ToTicker(this), maxCount ?? 0).ConfigureAwait(false); CheckResponseErrors(r); var data = r.result.FirstOrDefault(); var orderBook = new OrderBook(Network, assetPair); var asks = maxCount.HasValue ? data.Value.asks.Take(maxCount.Value / 2).ToArray() : data.Value.asks; var bids = maxCount.HasValue ? data.Value.bids.Take(maxCount.Value / 2).ToArray() : data.Value.bids; foreach (var i in bids.Select(GetBidAskData)) { orderBook.Add(OrderType.Bid, i.Price, i.Volume); } foreach (var i in asks.Select(GetBidAskData)) { orderBook.Add(OrderType.Ask, i.Price, i.Volume); } return(orderBook); }
private async Task <WalletAddresses> GetAddressesLocalAsync(IKrakenApi api, string fundingMethod, Asset asset, bool generateNew = false) { var body = CreateKrakenBody(); // BUG: do we need "aclass"? //body.Add("aclass", asset.ToRemoteCode(this)); body.Add("asset", asset.ToRemoteCode(this)); body.Add("method", fundingMethod); body.Add("new", generateNew); var r = await api.GetDepositAddressesAsync(body).ConfigureAwait(false); CheckResponseErrors(r); var walletAddresses = new WalletAddresses(); foreach (var addr in r.result) { var walletAddress = new WalletAddress(this, asset) { Address = addr.address }; if (addr.expiretm != 0) { var time = addr.expiretm.ToUtcDateTime(); walletAddress.ExpiresUtc = time; } walletAddresses.Add(new WalletAddress(this, asset) { Address = addr.address }); } return(walletAddresses); }