private static HttpRequestMessage DecodeHeaders(HttpContent httpContent, StreamReader streamReader) { var request = new HttpRequestMessage(); var firstLine = streamReader.ReadLine(); var split = firstLine.Split(new[] { ' ' }, 2); request.Method = new HttpMethod(split[0]); request.RequestUri = new Uri(split[1], UriKind.RelativeOrAbsolute); var headers = new HeaderDictionary(); DecodeHeaders(headers, streamReader); foreach (var header in headers) { if (HeadersHelper.IsContentHeader(header.Key)) { httpContent.Headers.Add(header.Key, header.Value.ToList()); } else { request.Headers.Add(header.Key, header.Value.ToList()); } } request.Content = httpContent; return(request); }
public static HttpRequestMessage ToHttpRequestMessage(this HttpRequest httpRequest, string path) { var requestMessage = new HttpRequestMessage(new HttpMethod(httpRequest.Method), new Uri(DummyBaseUri, path + httpRequest.QueryString)) { Content = new RawStreamContent(httpRequest.Body) }; foreach (var header in httpRequest.Headers) { if (header.Key.Equals(HeaderNames.Authorization, StringComparison.OrdinalIgnoreCase)) { continue; } if (HeadersHelper.IsContentHeader(header.Key)) { requestMessage.Content.Headers.Add(header.Key, (IEnumerable <string>)header.Value); } else { requestMessage.Headers.Add(header.Key, (IEnumerable <string>)header.Value); } } return(requestMessage); }
private static (HttpResponseMessage, IHeaderDictionary) DecodeResponse(TextReader textReader) { var response = new HttpResponseMessage(); var contentHeaders = new HeaderDictionary(); var line = textReader.ReadLine(); var statusCode = int.Parse(line); response.StatusCode = (HttpStatusCode)statusCode; var headers = new HeaderDictionary(); DecodeHeaders(headers, textReader); foreach (var header in headers) { if (HeadersHelper.IsContentHeader(header.Key)) { contentHeaders.Add(header); } else { response.Headers.Add(header.Key, (string[])header.Value); } } return(response, contentHeaders); }
public static void CopyHeadersTo(this IHeaderDictionary headerDictionary, HttpHeaders httpHeaders, HttpContentHeaders contentHeaders) { foreach (var requestHeader in headerDictionary) { if (HeadersHelper.IsContentHeader(requestHeader.Key)) { contentHeaders.Add(requestHeader.Key, (IEnumerable <string>)requestHeader.Value); } else { httpHeaders.Add(requestHeader.Key, (IEnumerable <string>)requestHeader.Value); } } }
public static async Task <HttpResponseMessage> DeserializeResponse(this Stream stream) { var response = new HttpResponseMessage(); var headers = new HeaderDictionary(); using (var streamReader = new StreamReader(stream, Encoding.UTF8, false, 8192, true)) { var statusLine = await streamReader.ReadLineAsync(); response.SetStatusProperties(statusLine); string line; while (!string.IsNullOrEmpty(line = await streamReader.ReadLineAsync())) { var split = line.Split(new[] { ": " }, 2, StringSplitOptions.None); headers.Add(split[0], split[1]); } } var contentLength = headers.ContentLength; if (contentLength > 0) { var buffer = await stream.ReadBytes((int)contentLength.Value); response.Content = new ByteArrayPoolContent(buffer.Array, 0, buffer.Count); } foreach (var header in headers) { if (!HeadersHelper.IsContentHeader(header.Key)) //ignore content headers { response.Headers.Add(header.Key, (IEnumerable <string>)header.Value); } } return(response); }