public static async Task <HttpRequest> Create(IInputStreamAsync stream) { var req = new HttpRequest(); req.ReqLine = new HttpRequestLine(await stream.ReadLineAsync()); req.Headers = new Dictionary <string, string>(); var header = await stream.ReadLineAsync(); while (!string.IsNullOrEmpty(header)) { var parts = header.Split(new string[] { ": " }, StringSplitOptions.None); if (parts.Length == 2) { req.Headers.Add(parts[0], parts[1]); } header = await stream.ReadLineAsync(); } req.Body = req.ReqLine.Method == HttpMethod.GET || req.ReqLine.Method == HttpMethod.OPTIONS ? HttpRequestBody.Empty() : req.ContainsHeader(HttpHeader.ContentType) && req.GetHeader(HttpHeader.ContentType).Contains("multipart/form-data") ? await HttpRequestBody.Multipart(stream) : await HttpRequestBody.Text(stream); return(req); }
public static async Task <HttpRequestBody> Text(IInputStreamAsync stream) { var body = await stream.ReadToEndAsync(); return(!string.IsNullOrEmpty(body) ? new HttpRequestBody(BodyType.Text, body) : new HttpRequestBody(BodyType.Empty, null)); }
public static async Task <HttpRequestBody> Multipart(IInputStreamAsync stream) { return(new HttpRequestBody(BodyType.Multipart, await MultipartFormDataParser.CreateAsync(stream))); }