Ejemplo n.º 1
0
        public async Task ProcessRequestAsync(Stream stream)
        {
            HttpResponse response = new HttpResponse(stream);
            HttpRequest  request  = null;

            bool isParseSuccess;

            try
            {
                request = await requestParser.ParseAsync(stream);

                isParseSuccess = true;
            }
            catch (HttpRequestParseException e)
            {
                response.StatusCode = 400;
                isParseSuccess      = false;
            }

            if (!isParseSuccess)
            {
                await response.WriteAsync("Bad Request");
            }

            HttpContext context = new HttpContext
            {
                Request  = request,
                Response = response
            };

            var func = routeHandler.Handle(request);

            if (func != null)
            {
                ActionResult actionResult = func(context);
                await actionResult.ExecuteAsync(context);
            }
            else
            {
                await(new Http404NotFoundResult()).ExecuteAsync(context);
            }
        }