public async Task Invoke(HttpContext context, IProxyHttpClient client, ProxyRequest proxyRequest) { var request = context.Request; var response = context.Response; var requestMessage = await proxyRequest.Create(request); if (request.Headers.ContainsKey(Headers.SHOW_PROXY_REQUEST)) { response.StatusCode = 200; var requestModel = await RequestModel.Create(requestMessage); await response.WriteAsync(JsonConvert.SerializeObject(requestModel, Formatting.Indented)); return; } var proxyResponse = await client.SendAsync(requestMessage); if (request.Headers.ContainsKey(Headers.SHOW_PROXY_RESPONSE)) { response.StatusCode = 200; var requestModel = await RequestModel.Create(requestMessage); var responseModel = await ResponseModel.Create(proxyResponse); await response.WriteAsync(JsonConvert.SerializeObject(new { Request = requestModel, Response = responseModel }, Formatting.Indented)); return; } await response.Write(proxyResponse); }