public IHttpRestResponse <T> CloneInTo <T>(IHttpRestResponse resp) where T : new() { HttpRestResponse <T> respT = new HttpRestResponse <T> { Request = resp.Request, Content = resp.Content, StatusCode = resp.StatusCode, StatusDescription = resp.StatusDescription, Headers = resp.Headers, IsSuccessStatusCode = resp.IsSuccessStatusCode, ErrorException = resp.ErrorException }; if (resp.StatusCode == HttpStatusCode.NoContent) { if (IsEnumarable(respT.Data)) // Return empty list if Enumarable { respT.Data = new T(); } } else if (resp.StatusCode == HttpStatusCode.NotFound) { if (IsEnumarable(respT.Data)) // Return empty list if Enumarable { respT.Data = new T(); } } else { respT.Data = NewtonsoftJsonSerializer.Default.Deserialize <T>(resp.Content); } return(respT); }
private async Task <IHttpRestResponse> ExecuteInternalAsync(IHttpRestRequest request) { string apiUrl = _url + "/" + request.QueryUrl; HttpRequestMessage requestMessage = new HttpRequestMessage(request.Method, new Uri(apiUrl)); if (_hasIDServerResourceOwnerClientSettings) { string bearerToken = await AccessTokenCache.GetIdServerAccessToken(_idServerResourceOwnerClientSettings, InternalHttpClientHandler).ConfigureAwait(false); request.SetHeader("Authorization", string.Format("Bearer {0}", bearerToken)); } requestMessage.Headers.Add("Accept", "application/json"); foreach (KeyValuePair <string, string> item in request.Headers) { requestMessage.Headers.Add(item.Key, item.Value.ToString()); } if (request.JsonBody.Length > 0) { var jsonBody = new StringContent(request.JsonBody, Encoding.UTF8, "application/json"); requestMessage.Content = jsonBody; } HttpResponseMessage response = await HttpClient.SendAsync(requestMessage).ConfigureAwait(false); CheckResponseError(response); Stream stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); var sr = new StreamReader(stream); string content = sr.ReadToEnd(); IHttpRestResponse resp = new HttpRestResponse() { Request = request, Content = content, StatusCode = response.StatusCode, Headers = response.Headers }; return(resp); }