HttpResponseMessage Send(HttpRequestMessage request, CancellationToken cancellationToken) { HttpResponseMessage response = null; Curl.Easy easy = null; easy = new Curl.Easy { Protocols = Protocols.Http | Protocols.Https, Url = request.RequestUri.AbsoluteUri, AutoReferer = true, FollowLocation = true, HttpMethod = request.Method.Method, HttpVersion = request.Version, HeaderHandler = (kind, name, value) => { switch (kind) { case HeaderKind.Status: response.StatusCode = (HttpStatusCode)easy.ResponseCode; break; case HeaderKind.KeyValue: response.Headers.TryAddWithoutValidation (name, value); response.Content.Headers.TryAddWithoutValidation (name, value); break; } } }; var responseStream = new CurlResponseStream (easy); cancellationToken.Register (responseStream.Dispose); response = new HttpResponseMessage { Content = new StreamContent (responseStream) }; return response; }
HttpResponseMessage Send(HttpRequestMessage request, CancellationToken cancellationToken) { HttpResponseMessage response = null; Curl.Easy easy = null; easy = new Curl.Easy { Protocols = Protocols.Http | Protocols.Https, Url = request.RequestUri.AbsoluteUri, AutoReferer = true, FollowLocation = true, HttpMethod = request.Method.Method, HttpVersion = request.Version, HeaderHandler = (kind, name, value) => { switch (kind) { case HeaderKind.Status: response.StatusCode = (HttpStatusCode)easy.ResponseCode; break; case HeaderKind.KeyValue: response.Headers.TryAddWithoutValidation(name, value); response.Content.Headers.TryAddWithoutValidation(name, value); break; } } }; var responseStream = new CurlResponseStream(easy); cancellationToken.Register(responseStream.Dispose); response = new HttpResponseMessage { Content = new StreamContent(responseStream) }; return(response); }