public DataPackets.HttpResponseMessage Send(DataPackets.HttpRequestMessage httpRequestMessage)
        {
            var request  = ToMicrosoftHttpRequest(httpRequestMessage);
            var response = _httpClient.Send(request);

            return(ToNativeResponse(response));
        }
        public void SendAsync(DataPackets.HttpRequestMessage httpRequestMessage, Action <DataPackets.HttpResponseMessage> httpClientCallback)
        {
            var request        = ToMicrosoftHttpRequest(httpRequestMessage);
            var rawRequestData = new AsyncRequest {
                HttpClientCallback = httpClientCallback
            };

            _httpClient.BeginSend(request, SendAsyncEnd, rawRequestData);
        }
        private static HttpRequestMessage ToMicrosoftHttpRequest(DataPackets.HttpRequestMessage httpRequestMessage)
        {
            if (httpRequestMessage.Content == null || httpRequestMessage.Content.Content.Length == 0)
            {
                return(new HttpRequestMessage(httpRequestMessage.Method, httpRequestMessage.Uri)
                       .WithAcceptHeader(httpRequestMessage));
            }

            return(new HttpRequestMessage(httpRequestMessage.Method, httpRequestMessage.Uri, HttpContent.Create(httpRequestMessage.Content.Content, httpRequestMessage.Content.ContentType))
                   .WithAcceptHeader(httpRequestMessage));
        }
        public static HttpRequestMessage WithAcceptHeader(this HttpRequestMessage request, DataPackets.HttpRequestMessage httpRequestMessage)
        {
            if (httpRequestMessage != null && !string.IsNullOrEmpty(httpRequestMessage.AcceptContentType))
            {
                request.Headers.Accept = new HeaderValues <StringWithOptionalQuality> {
                    httpRequestMessage.AcceptContentType
                }
            }
            ;

            return(request);
        }
    }