public override async Task <OrderbookResponse> GetOrderbooks(OrderbookRequest request, ServerCallContext context) { var assetPairResult = await _validationService.ValidateAssetPairAsync(request.AssetPairId); if (assetPairResult != null) { return(new OrderbookResponse { Error = new Error { Code = (int)assetPairResult.Code, Message = assetPairResult.Message } }); } var orderbooks = await _orderbooksService.GetAsync(request.AssetPairId, request.Depth); var result = new OrderbookResponse(); foreach (var orderbook in orderbooks) { var resOrderBook = _mapper.Map <Orderbook>(orderbook); resOrderBook.Asks.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(orderbook.Asks)); resOrderBook.Bids.AddRange(_mapper.Map <List <Orderbook.Types.PriceVolume> >(orderbook.Bids)); result.Payload.Add(resOrderBook); } return(result); }
public override async Task <OrderbookResponse> GetOrderbook(OrderbookRequest request, ServerCallContext context) { var orderbook = (await _orderbooksService.GetAsync(request.AssetPairId)).FirstOrDefault(); return(new OrderbookResponse { Body = orderbook }); }
public override async Task <Orderbook> GetOrderbook(OrderbookRequest request, ServerCallContext context) { var book = _marketDataService.OrderBook(DefaultTenantId, request.AssetPairId); if (book == null || book.OrderBook == null) { return(new Orderbook { AssetPairId = request.AssetPairId, Timestamp = Timestamp.FromDateTime(DateTime.UtcNow) }); } var response = new Orderbook { AssetPairId = book.OrderBook.Symbol, Timestamp = Timestamp.FromDateTime(DateTime.SpecifyKind(book.OrderBook.Timestamp, DateTimeKind.Utc)), Asks = { book.OrderBook.LimitOrders.Where(o => o.Volume < 0).OrderBy(o => o.Price).Select(o => new Orderbook.Types.PriceVolume { P = o.Price.ToString(CultureInfo.InvariantCulture), V = Math.Abs(o.Volume).ToString(CultureInfo.InvariantCulture) }) }, Bids = { book.OrderBook.LimitOrders.Where(o => o.Volume > 0).OrderByDescending(o => o.Price).Select(o => new Orderbook.Types.PriceVolume { P = o.Price.ToString(CultureInfo.InvariantCulture), V = Math.Abs(o.Volume).ToString(CultureInfo.InvariantCulture) }) } }; return(response); }