private async Task<HttpResponseMessage> ExecuteServiceCallAsync(HttpCommunicationClient client, HttpContext context, byte[] contextRequestBody) { // create request and copy all details HttpRequestMessage req = new HttpRequestMessage { Method = new HttpMethod(context.Request.Method), RequestUri = new Uri(context.Request.Path + context.Request.QueryString, UriKind.Relative) }; if (contextRequestBody != null) { req.Content = new ByteArrayContent(contextRequestBody); } req.CopyHeadersFromCurrentContext(context); req.AddProxyHeaders(context); // execute request HttpResponseMessage response = await client.HttpClient.SendAsync(req, context.RequestAborted); // cases in which we want to invoke the retry logic from the ClientFactory int statusCode = (int) response.StatusCode; if ((statusCode >= 500 && statusCode < 600) || statusCode == (int) HttpStatusCode.NotFound) { throw new HttpResponseException("Service call failed", response); } return response; }
public static void AbortClient(this ILogger logger, HttpCommunicationClient client) { _abortClient(logger, client?.Endpoint?.Address, null); }
public static void ValidateClient(this ILogger logger, HttpCommunicationClient client, string endpoint = null) { _validateClient(logger, client?.Endpoint?.Address, endpoint, null); }