Exemplo n.º 1
0
        public void HandleClient(TcpClient tcpClient)
        {
            Stream inputStream  = tcpClient.GetStream();
            Stream outputStream = tcpClient.GetStream();

            HttpRequest  request  = ReadRequest(inputStream);
            HttpResponse response = ResponseDefaultBuilder.Ok();

            try
            {
                _app.Process(ref request, ref response);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                response = ResponseDefaultBuilder.InternalServerError();
            }


            try
            {
                WriteResponse(outputStream, response);
            }
            catch { }

            outputStream.Flush();
            outputStream.Close();
            outputStream = null;

            inputStream.Close();
            inputStream = null;
        }
Exemplo n.º 2
0
        public void Process(ref HttpRequest req, ref HttpResponse res)
        {
            if (RequestsResource(req))
            {
                IResource resource = _resolver.Resolve(req.Url.ToString());
                resource.Process(req, res);
            }
            else
            {
                Controller controller = GetController(_router.RouteRequest(req.Url.ToString()));

                if (controller != null)
                {
                    try
                    {
                        switch (req.Method)
                        {
                        case "GET": controller.DoGet(req, res); break;

                        case "POST": controller.DoPost(req, res); break;

                        case "DELETE": controller.DoDelete(req, res); break;

                        case "PUT": controller.DoPut(req, res); break;
                        }
                    }
                    catch
                    {
                        res = ResponseDefaultBuilder.InternalServerError();
                    }
                }
                else
                {
                    res = ResponseDefaultBuilder.NotFound();
                }
            }
        }