コード例 #1
0
        public async Task <TResponse> SendAsync <TResponse>(IRequest <TResponse> request, CancellationToken cancellationToken = default)
        {
            using HttpRequestMessage message = new HttpRequestMessage { Method = request.Method };
            List <KeyValuePair <string, object> > keyValuePairs = null;

            switch (request)
            {
            case CircularSearchRequest circularSearchRequest:
                keyValuePairs = circularSearchRequest.GetPropertiesKeyValuePairs();
                break;

            case PriceRequest priceRequest:
                keyValuePairs = priceRequest.GetPropertyKeyValuePair();
                break;
            }

            if (keyValuePairs is null ||
                !keyValuePairs.Any())
            {
                throw new Exception("KeyValuePairs cannot be empty");
            }

            message.RequestUri = _baseUri.AddEndpointWithParameters(request.EndpointUrl, keyValuePairs).AddApiKey("apikey", _apiKey);

            HttpResponseMessage result = await _client.SendAsync(message, cancellationToken);

            var content = await result.Content.ReadAsStringAsync(cancellationToken);

            return(JsonConvert.DeserializeObject <TResponse>(content, new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            }));
        }