private async Task PrepareHttpContextAsync2() { HttpRequestMessage requestMessage = new HttpRequestMessage(); HttpStreamContent content = new HttpStreamContent(_context.Socket.InputStream); await content.BufferAllAsync(); _context.Response.RequestMessage = requestMessage; }
private async Task PrepareHttpContextAsync2() { HttpRequestMessage requestMessage = new HttpRequestMessage(); HttpStreamContent content = new HttpStreamContent(_context.Socket.InputStream); await content.BufferAllAsync(); _context.Response.RequestMessage = requestMessage; }
public static async Task <List <FaceObject> > AnalyzeImageAsync( InMemoryRandomAccessStream imageStream) { imageStream.Seek(0); var httpContent = new HttpStreamContent(imageStream); await httpContent.BufferAllAsync(); return(await httpClient.PostAsync <List <FaceObject> >( "", httpContent, "application/octet-stream")); }
private async Task PrepareHttpContextAsync() { HttpRequestMessage requestMessage = new HttpRequestMessage(); //IHttpContent requestContent; // TODO: Find better way to handle this read //string request = await ReadRequest(_context.Socket); HttpStreamContent content = new HttpStreamContent(_context.Socket.InputStream); await content.BufferAllAsync(); string request = await content.ReadAsStringAsync(); //string request; //ulong contentLength; //using (IInputStream input = _context.Socket.InputStream) //{ // HttpStreamContent content = new HttpStreamContent(input); // request = await content.ReadAsStringAsync(); //} if (string.IsNullOrWhiteSpace(request)) { return; } string[] requestParts = request.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); //set method var requestLine = requestParts[0].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); switch (requestLine.Length > 0 ? requestLine[0] : null) { case "OPTIONS": requestMessage.Method = HttpMethod.Options; break; case "GET": requestMessage.Method = HttpMethod.Get; break; case "HEAD": requestMessage.Method = HttpMethod.Head; break; case "POST": requestMessage.Method = HttpMethod.Post; break; case "PUT": requestMessage.Method = HttpMethod.Put; break; case "DELETE": requestMessage.Method = HttpMethod.Delete; break; case "PATCH": requestMessage.Method = HttpMethod.Patch; break; default: break; } //set URL var uri = new Uri(requestLine[1], UriKind.RelativeOrAbsolute); if (!uri.IsAbsoluteUri) uri = new Uri(new Uri($"http://{_context.Socket.Information.LocalAddress}:{_context.Socket.Information.LocalPort}"), uri); if (uri.IsWellFormedOriginalString()) { requestMessage.RequestUri = uri; _context.RouteUri = uri; } else { return; } // set version switch (requestLine[2]) { case "HTTP/1.0": _context.Response.Version = HttpVersion.Http10; break; case "HTTP/1.1": _context.Response.Version = HttpVersion.Http11; break; case "HTTP/2.0": _context.Response.Version = HttpVersion.Http20; break; default: _context.Response.Version = HttpVersion.None; break; } // parse headers for (int i = 1; i < requestParts.Count(); i++) { var line = requestParts[i]; if (string.IsNullOrWhiteSpace(line)) break; var header = line.Split(new[] { ':' }, 2, StringSplitOptions.RemoveEmptyEntries); var headerName = header.Length > 0 ? header[0].Trim() : null; var headerValue = header.Length > 1 ? header[1].Trim() : null; if (headerName != null && headerValue != null) { //Debug.WriteLine("{0}:{1}", headerName, headerValue); switch (headerName.Trim().ToUpper()) { //case "HOST": // requestMessage.Headers.Host = new HostName(headerName.TrimStart('/').TrimEnd(':')); // break; //case "CONTENT-TYPE": // HttpMediaTypeHeaderValue contentType; // if (HttpMediaTypeHeaderValue.TryParse(headerValue, out contentType)) // requestContent.Headers.ContentType = contentType; // break; //case "CONTENT-LENGTH": // if (ulong.TryParse(headerValue, out contentLength)) // requestContent.Headers.ContentLength = contentLength; // break; //case "CONTENT-RANGE": // HttpContentRangeHeaderValue contentRange; // if (HttpContentRangeHeaderValue.TryParse(headerValue, out contentRange)) // requestContent.Headers.ContentRange = contentRange; // break; //case "CONTENT-DISPOSITION": // HttpContentDispositionHeaderValue contentDisposition; // if (HttpContentDispositionHeaderValue.TryParse(headerValue, out contentDisposition)) // requestContent.Headers.ContentDisposition = contentDisposition; // break; //case "CONTENT-LOCATION": // Uri contentLocation; // if (Uri.TryCreate(headerValue, UriKind.RelativeOrAbsolute, out contentLocation)) // requestMessage.Content.Headers.ContentLocation = contentLocation; // break; //case "CONTENT-MD5": // //IBuffer contentMD5 = headerValue; // //requestMessage.Content.Headers.ContentMD5 = contentMD5; // break; //case "CONTENT-LASTMODIFIED": // DateTimeOffset lastModified; // if (DateTimeOffset.TryParse(headerValue, out lastModified)) // requestContent.Headers.LastModified = lastModified; // break; //case "CONTENT-EXPIRES": // DateTimeOffset expires; // if (DateTimeOffset.TryParse(headerValue, out expires)) // requestContent.Headers.Expires = expires; // break; case "COOKIE": HttpCookiePairHeaderValue cookie; if (HttpCookiePairHeaderValue.TryParse(headerValue, out cookie)) requestMessage.Headers.Cookie.Add(cookie); break; default: requestMessage.Headers.Add(headerName, headerValue); break; } } requestMessage.Content = new HttpStringContent(requestParts[requestParts.Count() - 1].ToString()); await requestMessage.Content.BufferAllAsync(); } _context.Response.RequestMessage = requestMessage; }
private async Task PrepareHttpContextAsync() { HttpRequestMessage requestMessage = new HttpRequestMessage(); //IHttpContent requestContent; // TODO: Find better way to handle this read //string request = await ReadRequest(_context.Socket); HttpStreamContent content = new HttpStreamContent(_context.Socket.InputStream); await content.BufferAllAsync(); string request = await content.ReadAsStringAsync(); //string request; //ulong contentLength; //using (IInputStream input = _context.Socket.InputStream) //{ // HttpStreamContent content = new HttpStreamContent(input); // request = await content.ReadAsStringAsync(); //} if (string.IsNullOrWhiteSpace(request)) { return; } string[] requestParts = request.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); //set method var requestLine = requestParts[0].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); switch (requestLine.Length > 0 ? requestLine[0] : null) { case "OPTIONS": requestMessage.Method = HttpMethod.Options; break; case "GET": requestMessage.Method = HttpMethod.Get; break; case "HEAD": requestMessage.Method = HttpMethod.Head; break; case "POST": requestMessage.Method = HttpMethod.Post; break; case "PUT": requestMessage.Method = HttpMethod.Put; break; case "DELETE": requestMessage.Method = HttpMethod.Delete; break; case "PATCH": requestMessage.Method = HttpMethod.Patch; break; default: break; } //set URL var uri = new Uri(requestLine[1], UriKind.RelativeOrAbsolute); if (!uri.IsAbsoluteUri) { uri = new Uri(new Uri($"http://{_context.Socket.Information.LocalAddress}:{_context.Socket.Information.LocalPort}"), uri); } if (uri.IsWellFormedOriginalString()) { requestMessage.RequestUri = uri; _context.RouteUri = uri; } else { return; } // set version switch (requestLine[2]) { case "HTTP/1.0": _context.Response.Version = HttpVersion.Http10; break; case "HTTP/1.1": _context.Response.Version = HttpVersion.Http11; break; case "HTTP/2.0": _context.Response.Version = HttpVersion.Http20; break; default: _context.Response.Version = HttpVersion.None; break; } // parse headers for (int i = 1; i < requestParts.Count(); i++) { var line = requestParts[i]; if (string.IsNullOrWhiteSpace(line)) { break; } var header = line.Split(new[] { ':' }, 2, StringSplitOptions.RemoveEmptyEntries); var headerName = header.Length > 0 ? header[0].Trim() : null; var headerValue = header.Length > 1 ? header[1].Trim() : null; if (headerName != null && headerValue != null) { //Debug.WriteLine("{0}:{1}", headerName, headerValue); switch (headerName.Trim().ToUpper()) { //case "HOST": // requestMessage.Headers.Host = new HostName(headerName.TrimStart('/').TrimEnd(':')); // break; //case "CONTENT-TYPE": // HttpMediaTypeHeaderValue contentType; // if (HttpMediaTypeHeaderValue.TryParse(headerValue, out contentType)) // requestContent.Headers.ContentType = contentType; // break; //case "CONTENT-LENGTH": // if (ulong.TryParse(headerValue, out contentLength)) // requestContent.Headers.ContentLength = contentLength; // break; //case "CONTENT-RANGE": // HttpContentRangeHeaderValue contentRange; // if (HttpContentRangeHeaderValue.TryParse(headerValue, out contentRange)) // requestContent.Headers.ContentRange = contentRange; // break; //case "CONTENT-DISPOSITION": // HttpContentDispositionHeaderValue contentDisposition; // if (HttpContentDispositionHeaderValue.TryParse(headerValue, out contentDisposition)) // requestContent.Headers.ContentDisposition = contentDisposition; // break; //case "CONTENT-LOCATION": // Uri contentLocation; // if (Uri.TryCreate(headerValue, UriKind.RelativeOrAbsolute, out contentLocation)) // requestMessage.Content.Headers.ContentLocation = contentLocation; // break; //case "CONTENT-MD5": // //IBuffer contentMD5 = headerValue; // //requestMessage.Content.Headers.ContentMD5 = contentMD5; // break; //case "CONTENT-LASTMODIFIED": // DateTimeOffset lastModified; // if (DateTimeOffset.TryParse(headerValue, out lastModified)) // requestContent.Headers.LastModified = lastModified; // break; //case "CONTENT-EXPIRES": // DateTimeOffset expires; // if (DateTimeOffset.TryParse(headerValue, out expires)) // requestContent.Headers.Expires = expires; // break; case "COOKIE": HttpCookiePairHeaderValue cookie; if (HttpCookiePairHeaderValue.TryParse(headerValue, out cookie)) { requestMessage.Headers.Cookie.Add(cookie); } break; default: requestMessage.Headers.Add(headerName, headerValue); break; } } requestMessage.Content = new HttpStringContent(requestParts[requestParts.Count() - 1].ToString()); await requestMessage.Content.BufferAllAsync(); } _context.Response.RequestMessage = requestMessage; }