Example #1
0
        public IHttpResponse Handle(IHttpRequest request)
        {
            var getParams     = request.UrlParameters;
            var postParams    = request.FormData;
            var requestMethod = request.Method.ToString();

            var controllerName = string.Empty;
            var actionName     = string.Empty;

            if (request.Path == Constants.BasePath)
            {
                return(new RedirectResponse(Constants.DefaultHomePath));
            }
            else
            {
                var invocationParameters = ControllerRouterHelper
                                           .GetInvocationParameters(request);

                if (invocationParameters.Length != 2)
                {
                    throw new InvalidOperationException(Constants.InvalidUrlMessage);
                }

                controllerName = ControllerRouterHelper.GetControllerName(invocationParameters[0]);
                actionName     = ControllerRouterHelper.GetActionName(invocationParameters[1]);
            }

            var controller = ControllerRouterExtensions.GetController(controllerName, request);

            try
            {
                var action = ControllerRouterExtensions.GetMethod(
                    requestMethod, controller, actionName);

                if (action == null)
                {
                    return(new NotFoundResponse());
                }

                var authAttribute = ControllerRouterHelper.GetAuthorizeAttribute(action);

                if (authAttribute != null && !controller.User.IsAuthenticated)
                {
                    return(authAttribute.GetResponse(Constants.UserNotAuthorizedMessage));
                }

                var parameterValidator = new ParameterValidator();
                var actionParameters   = ParametersExtensions.MapActionParameters(
                    action, getParams, postParams, parameterValidator);

                controller.ParameterValidator = parameterValidator;

                return(this.PrepareResponse(controller, action, actionParameters));
            }
            catch (UnauthorizedException e)
            {
                return(new AuthorizeAttribute().GetResponse(e.Message));
            }
        }
Example #2
0
        private static Controller CreateInstance(string controllerName)
        {
            var controllerTypeName = ControllerRouterHelper
                                     .GetControllerTypeName(controllerName);
            var controllerType = ControllerRouterHelper
                                 .GetControllerType(controllerTypeName);

            return((Controller)Activator.CreateInstance(controllerType));
        }
Example #3
0
        private static IEnumerable <MethodInfo> GetSuitableMethods(
            Controller controller, string actionName)
        {
            if (controller == null)
            {
                return(new MethodInfo[0]);
            }

            return(ControllerRouterHelper.GetMethods(controller, actionName));
        }