public async Task <PaginatedResult <Trade> > GetTradesAsync(string productId, int?after = null, CancellationToken cancellationToken = default) { using var client = _factory.CreateClient(ClientNames.MarketData); var requestUriBuilder = new StringBuilder($"/products/{productId}/trades"); var queryString = HttpUtility.ParseQueryString(string.Empty); if (after.HasValue) { queryString.Add("after", $"{after.Value}"); } if (queryString.HasKeys()) { requestUriBuilder.Append($"?{queryString}"); } var response = await client.GetAsync(requestUriBuilder.ToString(), cancellationToken); response.EnsureSuccessStatusCode(); var trades = await JsonSerializer.DeserializeAsync <IReadOnlyCollection <Trade> >(await response.Content.ReadAsStreamAsync(cancellationToken), _options, cancellationToken); return(PaginatedResultFactory.Create(response.Headers, trades)); }
public async Task <PaginatedResult <Order>?> ListOrdersAsync(CancellationToken cancellationToken = default) { using var client = _factory.CreateClient(ClientNames.TradingClient); var response = await client.GetAsync(new Uri("/orders", UriKind.Relative), cancellationToken); response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync(cancellationToken); return(PaginatedResultFactory.Create(response.Headers, JsonSerializer.Deserialize <IReadOnlyCollection <Order> >(json, _serializerOptions))); }