Exemple #1
0
        /// <summary>
        /// The process request.
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <returns>
        /// The <see cref="HttpResponse"/>.
        /// </returns>
        public override HttpResponse ProcessRequest(HttpRequest request)
        {
            if (request.ProtocolVersion.Major < 3)
            {
                HttpResponse response;

                try
                {
                    var controller   = this.CreateController(request);
                    var actionResult = new ActionInvoker().InvokeAction(controller, request.Action);
                    response = actionResult.GetResponse();
                }
                catch (HttpNotFoundException exception)
                {
                    response = new HttpResponse(request.ProtocolVersion, HttpStatusCode.NotFound, exception.Message);
                }
                catch (Exception exception)
                {
                    response = new HttpResponse(
                        request.ProtocolVersion,
                        HttpStatusCode.InternalServerError,
                        exception.Message);
                }

                return(response);
            }

            return(new HttpResponse(
                       request.ProtocolVersion,
                       HttpStatusCode.NotImplemented,
                       "Request cannot be handled."));
        }