public virtual void AppendResponse(ResponseDetails responseDetails) { int statusCode = (int)responseDetails.Status; Writer.WriteLine(RESPONSE_LINE_FORMAT, statusCode, HttpWorkerRequest.GetStatusDescription(statusCode)); if (responseDetails.Headers != null) { foreach (var keyValuePair in responseDetails.Headers) { Writer.WriteLine(HEADER_FORMAT, keyValuePair.Key, keyValuePair.Value); } } Writer.WriteLine(); if (!string.IsNullOrEmpty(responseDetails.BodyResponse)) Writer.WriteLine(responseDetails.BodyResponse); }
public void AppendResponse(ResponseDetails responseDetails) { ResponseDetails = responseDetails; }
public void WriteResponse_should_write_status_code_and_status_description_and_empty_line() { // Arrange var stringBuilder = new StringBuilder(); var logWriter = GetHttpLogWriter(stringBuilder); var responseDetails = new ResponseDetails() { Status = HttpStatusCode.NotFound, BodyResponse = "", Headers = new List<KeyValuePair<string, string>>() }; // Act logWriter.AppendResponse(responseDetails); // Assert string[] lines = stringBuilder.ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.None); Assert.AreEqual("HTTP/1.1 404 Not Found", lines[0]); Assert.AreEqual("", lines[1]); }
public void WriteResponse_should_ignore_null_headers_and_empty_body() { // Arrange var stringBuilder = new StringBuilder(); var logWriter = GetHttpLogWriter(stringBuilder); var responseDetails = new ResponseDetails() { Status = HttpStatusCode.OK, BodyResponse = "", Headers = null }; // Act logWriter.AppendResponse(responseDetails); // Assert string[] lines = stringBuilder.ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.None); Assert.AreEqual("HTTP/1.1 200 OK", lines[0]); Assert.AreEqual("", lines[1]); }
public void WriteResponse_should_append_headers_and_response_body_and_empty_line() { // Arrange var stringBuilder = new StringBuilder(); var logWriter = GetHttpLogWriter(stringBuilder); var headers = new List<KeyValuePair<string, string>>() { new KeyValuePair<string, string>("Server", "Apache"), new KeyValuePair<string, string>("Cache-Control", "private, s-maxage=0, max-age=0, must-revalidate"), new KeyValuePair<string, string>("Date", "Sun, 12 Apr 2015 19:18:21 GMT"), new KeyValuePair<string, string>("Content-Type", "text/html; charset=UTF-8") }; var responseDetails = new ResponseDetails() { Status = HttpStatusCode.OK, BodyResponse = "<html><body></body></html>", Headers = headers }; // Act logWriter.AppendResponse(responseDetails); // Assert string[] lines = stringBuilder.ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.None); Assert.AreEqual("HTTP/1.1 200 OK", lines[0]); Assert.AreEqual("Server: Apache", lines[1]); Assert.AreEqual("Cache-Control: private, s-maxage=0, max-age=0, must-revalidate", lines[2]); Assert.AreEqual("Date: Sun, 12 Apr 2015 19:18:21 GMT", lines[3]); Assert.AreEqual("Content-Type: text/html; charset=UTF-8", lines[4]); Assert.AreEqual("", lines[5]); Assert.AreEqual("<html><body></body></html>", lines[6]); }
public HttpResponse ExecuteRequest(string httpMethod, string url, string contentType, string postBody, IEnumerable<HeaderItem> headers) { Uri uri; if (!Uri.TryCreate(url, UriKind.Absolute, out uri)) throw new ArgumentException(url + " is not a valid Uri", "url"); _restClient.BaseUrl = uri; _restClient.CookieContainer = _cookieContainer; // // Make the request adding the content-type, body and headers // Method method = GetMethodEnum(httpMethod); var request = new RestRequest(method); if (method == Method.POST) { // From the RestSharp docs: // "The name of the parameter will be used as the Content-Type header for the request." request.AddParameter(contentType, postBody, ParameterType.RequestBody); } if (headers != null) { headers = headers.ToList(); foreach (var keyValuePair in headers) { request.AddHeader(keyValuePair.Key, keyValuePair.Value); } } _lastRequest = new RequestDetails() { Body = postBody, Headers = headers, Method = httpMethod, Url = url }; // // Get the response back, parsing the headers // DateTime startTime = DateTime.UtcNow; IRestResponse response = _restClient.Execute(request); TimeSpan responseTime = DateTime.UtcNow - startTime; List<KeyValuePair<string, string>> keyvaluePairs = new List<KeyValuePair<string, string>>(); if (response.Headers != null) { keyvaluePairs = response.Headers.Select(x => new KeyValuePair<string, string>(x.Name, Convert.ToString(x.Value))) .ToList(); } _lastResponse = new ResponseDetails() { BodyResponse = response.Content, Headers = keyvaluePairs, Status = response.StatusCode }; return new HttpResponse() { StatusCode = response.StatusCode, Content = response.Content, Headers = keyvaluePairs, ResponseTime = responseTime }; }