Exemplo n.º 1
0
        private Task <HttpResponseMessage> CreateRequestAsync(EndpointData endpoint, BaseRequest requestObject, CancellationToken cancellationToken)
        {
            HttpRequestMessage requestMessage = new HttpRequestMessage();

            // Auth
            if (endpoint.SecurityType == EndpointSecurityType.ApiKey)
            {
                if (requestObject != null)
                {
                    if (requestObject.ClientKey == null)
                    {
                        requestObject.ClientKey = Key;
                    }
                }
            }

            if (endpoint.Method == HttpMethod.Get)
            {
                UriBuilder uriBuilder = new UriBuilder(endpoint.Uri);
                if (requestObject != null)
                {
                    uriBuilder.Query = GenerateQueryString(requestObject);
                }
                requestMessage.RequestUri = uriBuilder.Uri;
            }
            else
            {
                requestMessage.RequestUri = endpoint.Uri;
                if (requestObject != null)
                {
                    string content = JsonConvert.SerializeObject(requestObject, SerializerSettings);
                    requestMessage.Content = new StringContent(content, Encoding.UTF8, "application/json");
                }
            }

            requestMessage.Method = endpoint.Method;

            var task = httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead, cancellationToken);

            task.ContinueWith(_ => requestMessage.Dispose());
            return(task);
        }
Exemplo n.º 2
0
 public Task <T> ProcessRequestAsync <T>(EndpointData endpoint, BaseRequest requestObject = null) where T : class
 {
     return(ProcessRequestAsync <T>(endpoint, requestObject, CancellationToken.None));
 }
Exemplo n.º 3
0
        public async Task <T> ProcessRequestAsync <T>(EndpointData endpoint, BaseRequest requestObject, CancellationToken cancellationToken) where T : class
        {
            var message = await CreateRequestAsync(endpoint, requestObject, cancellationToken).ConfigureAwait(false);

            return(await HandleJsonResponseAsync <T>(message).ConfigureAwait(false));
        }
Exemplo n.º 4
0
 public Task <T> ProcessRequestAsync <T>(EndpointData endpoint) where T : class
 {
     return(ProcessRequestAsync <T>(endpoint, null, CancellationToken.None));
 }