private async Task <HttpResponseMessage> SendAsync(IEnumerable <KeyValuePair <string, string> > parameters, HttpContent content, Func <HttpRequestMessage> requestFactory) { if (!IsAuthenticated && !SuppressAuthentication) { //Log.Debug("Authentication is not performed. Sending auth request now."); Authenticate(); } using (var request = requestFactory()) { HttpResponseMessage response = null; IHttpCallLogHelper webCallLogger = null; if (content != null) { using (content) { request.Content = content; webCallLogger = LogRequest(content is MultipartFormDataContent ? $"---MULTIPART-FORM-DATA-CONTENT---[size:{content.Headers.ContentLength}; number of parts:{(content as MultipartFormDataContent).Count()};]" : content.ReadAsStringAsync().Result, request); response = await _httpClient.SendAsync(request); } } else { webCallLogger = LogRequest(null, request); response = await _httpClient.SendAsync(request); } LogResponse(response, webCallLogger); return(response); } }
private async Task <HttpResponseMessage> SendAsync(IEnumerable <KeyValuePair <string, string> > parameters, HttpContent content, Func <HttpRequestMessage> requestFactory, string contentType = DefaultContentType) { using (var request = requestFactory()) { HttpResponseMessage response = null; IHttpCallLogHelper webCallLogger = null; if (content != null) { using (content) { request.Content = content; webCallLogger = LogRequest(content is MultipartFormDataContent ? $"---MULTIPART-FORM-DATA-CONTENT---[size:{content.Headers.ContentLength}; number of parts:{(content as MultipartFormDataContent).Count()};]" : content.ReadAsStringAsync().Result, request); request.Headers.Clear(); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(DefaultContentType)); response = await _httpClient.SendAsync(request); } } else { webCallLogger = LogRequest(null, request); request.Headers.Clear(); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(DefaultContentType)); response = await _httpClient.SendAsync(request); } LogResponse(response, webCallLogger); return(response); } }
private void LogResponse(HttpResponseMessage response, IHttpCallLogHelper webCallLogger) { webCallLogger?.Response(response.Headers.Select(x => new KeyValuePair <string, string>(x.Key, string.Join(",", x.Value))), _cookieContainer.GetCookies(_httpClient.BaseAddress)//new Uri(TestConfig.ServerURL))//TODO: it is possible that not all cookies will be extracted, still will work for vast majority of cases .Cast <Cookie>() .Select(x => new KeyValuePair <string, string>(x.Name, x.Value)), response.Content.ReadAsStringAsync().Result, response.StatusCode); webCallLogger?.Dispose(); }
private IHttpCallLogHelper LogRequest(string content, HttpRequestMessage request) { IHttpCallLogHelper webCallLogger = Logger?.GetHttpCallLogger(); webCallLogger?.Request(request.Headers.Select(x => new KeyValuePair <string, string>(x.Key, string.Join(",", x.Value))), new Dictionary <string, string>() , content, request.RequestUri, request.Method.Method); return(webCallLogger); }
private IHttpCallLogHelper LogRequest(string content, HttpRequestMessage request) { IHttpCallLogHelper webCallLogger = Logger?.GetHttpCallLogger(); webCallLogger?.Request(request.Headers.Select(x => new KeyValuePair <string, string>(x.Key, string.Join(",", x.Value))), _cookieContainer.GetCookies(request.RequestUri.IsAbsoluteUri ? new Uri(request.RequestUri.AbsoluteUri.Replace(request.RequestUri.PathAndQuery, string.Empty)) : _httpClient.BaseAddress) .Cast <Cookie>() .Select(x => new KeyValuePair <string, string>(x.Name, x.Value)) , content, request.RequestUri, request.Method.Method); return(webCallLogger); }
private async Task <HttpResponseMessage> SendRequestAsync(string url, IEnumerable <KeyValuePair <string, string> > parameters, string content, HttpMethod httpMethod, string contentType = DefaultContentType) { using (var request = new HttpRequestMessage() { RequestUri = new Uri($"{TestConfig.GetValueFromConfig("MatchingProWeb")}{url}"), Method = httpMethod, }) { HttpResponseMessage response = null; IHttpCallLogHelper webCallLogger = null; var body = new StringContent(content ?? string.Empty, Encoding.UTF8, "application/json"); body.Headers.ContentType = new MediaTypeHeaderValue("application/json"); request.Content = body; webCallLogger = LogRequest(content, request); response = await _httpClient.SendAsync(request); LogResponse(response, webCallLogger); return(response); } }
private void LogResponse(HttpResponseMessage response, IHttpCallLogHelper webCallLogger) { webCallLogger?.Response(response.Headers.Select(x => new KeyValuePair <string, string>(x.Key, string.Join(",", x.Value))), new Dictionary <string, string>(), response.Content.ReadAsStringAsync().Result, response.StatusCode); webCallLogger?.Dispose(); }