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)); } }
private static Controller CreateInstance(string controllerName) { var controllerTypeName = ControllerRouterHelper .GetControllerTypeName(controllerName); var controllerType = ControllerRouterHelper .GetControllerType(controllerTypeName); return((Controller)Activator.CreateInstance(controllerType)); }
private static IEnumerable <MethodInfo> GetSuitableMethods( Controller controller, string actionName) { if (controller == null) { return(new MethodInfo[0]); } return(ControllerRouterHelper.GetMethods(controller, actionName)); }