private HttpResponseMessage TrySending(HttpRequestMessage request, HttpRequestMessageRequestDetails requestDetails, PipelineOptions options) { var adapter = _adapterFactory.CreateClient(options); HttpResponseMessage response; try { response = adapter.SendAsync(request).Result; } catch (AggregateException exception) { if (SendError != null) { requestDetails = requestDetails ?? new HttpRequestMessageRequestDetails(request); SendError(this, new RequestErrorEventArgs(requestDetails, exception.InnerException)); } if (exception.InnerException is TaskCanceledException) { throw new TimeoutException("The request timed out"); } throw exception.InnerException; } if (Responded != null) { requestDetails = requestDetails ?? new HttpRequestMessageRequestDetails(request); Responded(this, new ResponseEventArgs(requestDetails, new HttpResponseMessageResponseDetails(requestDetails, response))); } ApplyPipelineToResponse(response, options); options.AssertAllRequestResponseOptionsWereUsed(); return response; }
private HttpRequestMessage CreateRequestMessage(HttpMethod method, string uri, BodyContent body, PipelineOptions options, out HttpRequestMessageRequestDetails requestDetails) { var absoluteUri = AbsoluteUrlOf(uri); var request = new HttpRequestMessage(); ApplyPipelineToRequest(request, options); if (body != null) { var content = new StreamContent(body.AsStream()); if (body.MediaType != null) { content.Headers.ContentType = new MediaTypeHeaderValue(body.MediaType); } request.Content = content; } request.RequestUri = absoluteUri; request.Method = method; requestDetails = null; if (Sending != null) { requestDetails = new HttpRequestMessageRequestDetails(request); Sending(this, new RequestEventArgs(requestDetails)); } return request; }