private bool ParseBatchPart(bool isResponse, TextReader reader, InMemoryWebRequest part, string boundary, string endboundary) { bool result = false; string line; if (isResponse) { part.ParseResponseStatus(reader); } else { part.ParseRequestVerb(reader); } if (isResponse) { part.ResponseHeaders.Clear(); InMemoryWebRequest.ParseHeaders(reader, part.ResponseHeaders); } else { InMemoryWebRequest.ParseHeaders(reader, part.RequestHeaders); InMemoryWebRequest.ApplyHeadersToProperties(part); } StringBuilder sb = new StringBuilder(); string lastLine = null; while ((line = reader.ReadLine()) != null) { if (line == boundary) { break; } if (line == endboundary) { result = true; break; } if (lastLine != null) { sb.AppendLine(lastLine); } lastLine = line; } // The last line must not end with a newline - the batch adds it there, but it's not actually part of the content sb.Append(lastLine); if (isResponse) { part.SetResponseStream(new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString()))); } else { part.SetRequestStreamAsText(sb.ToString()); } return(result); }
private bool ParseBatchPart(bool isResponse, TextReader reader, InMemoryWebRequest part, string boundary, string endboundary) { bool result = false; string line; if (isResponse) { part.ParseResponseStatus(reader); } else { part.ParseRequestVerb(reader); } if (isResponse) { part.ResponseHeaders.Clear(); InMemoryWebRequest.ParseHeaders(reader, part.ResponseHeaders); } else { InMemoryWebRequest.ParseHeaders(reader, part.RequestHeaders); InMemoryWebRequest.ApplyHeadersToProperties(part); } StringBuilder sb = new StringBuilder(); string lastLine = null; while ((line = reader.ReadLine()) != null) { if (line == boundary) { break; } if (line == endboundary) { result = true; break; } if (lastLine != null) { sb.AppendLine(lastLine); } lastLine = line; } // The last line must not end with a newline - the batch adds it there, but it's not actually part of the content sb.Append(lastLine); if (isResponse) { part.SetResponseStream(new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString()))); } else { part.SetRequestStreamAsText(sb.ToString()); } return result; }