public async Task <IConnectionResponse> SendAsync(Stream body = null) { handlerHook(handler, settings); if (body != null) { messageHook = (messageRequest, s) => { messageRequest.Content = new StreamContent(body); messageRequest.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType); } +messageHook; } HttpRequestMessage msg = new HttpRequestMessage(); messageHook(msg, settings); clientHook(httpClient, settings); var httpResponse = await httpClient.SendAsync(msg); responseHook(httpResponse, settings); var response = new PrivateResponse(httpResponse); if ((successCondition != null && successCondition((int)httpResponse.StatusCode)) || (successCondition == null && httpResponse.IsSuccessStatusCode)) { return(response); } else { throw new ConnectionResponseException(response, "Success conditions not met"); } }
public async Task <IConnectionResponse> SendAsync(Stream body = null) { logger.LogTrace("Sending HTTP Request"); handlerHook(handler, settings); if (body != null) { messageHook = (messageRequest, s) => { messageRequest.Content = new StreamContent(body); messageRequest.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType) { CharSet = "utf-8" }; } +messageHook; } HttpRequestMessage msg = new HttpRequestMessage(); messageHook(msg, settings); clientHook(httpClient, settings); logger.LogDebug("Uri: {0} {1}", msg.RequestUri, msg.Method); logger.LogTrace("Request Cookies State: {0}", handler.CookieContainer.GetCookies(settings.ServerUrl).AllToString()); var httpResponse = await httpClient.SendAsync(msg); logger.LogDebug("Response Cookies State: {0}", handler.CookieContainer.GetCookies(settings.ServerUrl).AllToString()); responseHook(httpResponse, settings); var response = new PrivateResponse(httpResponse, logger); if ((successCondition != null && successCondition((int)httpResponse.StatusCode)) || (successCondition == null && httpResponse.IsSuccessStatusCode)) { // log location header if (httpResponse.Headers.Location != null) { logger.LogDebug("Status code: {0}, Location: {1}", httpResponse.StatusCode, httpResponse.Headers.Location); } return(response); } else { logger.LogInformation($"Condition not met, failing. HTTP Response code: {response.Code}"); throw new ConnectionResponseException(response, "Success conditions not met"); } }