예제 #1
0
        public override async Task <TradesResponse> GetTrades(TradesRequest request, ServerCallContext context)
        {
            var result = await _validationService.ValidateTradesRequestAsync(request.AssetPairId, request.Offset, request.Take);

            if (result != null)
            {
                return(new TradesResponse
                {
                    Error = new Error
                    {
                        Code = _mapper.Map <ErrorCode>(result.Code),
                        Message = result.Message
                    }
                });
            }

            DateTime?from = null;
            DateTime?to   = null;

            if (request.OptionalFromCase != TradesRequest.OptionalFromOneofCase.None)
            {
                from = request.From.ToDateTime();
            }

            if (request.OptionalToCase != TradesRequest.OptionalToOneofCase.None)
            {
                to = request.To.ToDateTime();
            }

            var orderAction = request.OptionalSideCase == TradesRequest.OptionalSideOneofCase.None
                ? (OrderAction?)null
                : _mapper.Map <OrderAction>(request.Side);

            if (request.Take == 0)
            {
                request.Take = Constants.MaxPageSize;
            }

            var trades = await _historyClient.GetTradersAsync(context.GetHttpContext().User.GetWalletId(),
                                                              request.AssetPairId, request.Offset, request.Take, orderAction, from, to);

            var res  = new TradesResponse();
            var data = _mapper.Map <List <Trade> >(trades);

            res.Payload.AddRange(data);

            return(res);
        }
예제 #2
0
        public async Task <IActionResult> GetTrades(
            [FromQuery] string assetPairId = null,
            [FromQuery] OrderAction?side   = null,
            [FromQuery] int?offset         = 0,
            [FromQuery] int?take           = 100,
            [FromQuery] double?from        = null,
            [FromQuery] double?to          = null
            )
        {
            var result = await _validationService.ValidateOrdersRequestAsync(assetPairId, offset, take);

            if (result != null)
            {
                throw HftApiException.Create(result.Code, result.Message)
                      .AddField(result.FieldName);
            }

            DateTime?fromDate = from == null ? (DateTime?)null : DateTime.UnixEpoch.AddMilliseconds(from.Value);
            DateTime?toDate   = to == null ? (DateTime?)null : DateTime.UnixEpoch.AddMilliseconds(to.Value);

            var trades = await _historyClient.GetTradersAsync(User.GetWalletId(), assetPairId, offset, take, side, fromDate, toDate);

            return(Ok(ResponseModel <IReadOnlyCollection <TradeModel> > .Ok(_mapper.Map <IReadOnlyCollection <TradeModel> >(trades))));
        }