Example #1
0
    private void InputController(ActionRoute actionRoute, string actionCommand)
    {
        Debug.Log(actionCommand);
        switch (actionCommand)
        {
        case "PlayButton":
            GameObjectContainer.Button[actionCommand].GetComponentInChildren <Text>().text = "Fuckign Shit";
            break;

        default:
            Debug.Log(actionCommand);
            break;
        }
    }
Example #2
0
 public static void RegisterActionRoute(IChromelyContainer container, string key, ActionRoute route)
 {
     container.RegisterInstance(typeof(ActionRoute), key, route);
 }
        /// <summary>
        /// Handles the request in MVC pattern
        /// </summary>
        private async Task RequestMvc(IHorseServer server, HttpRequest request, HttpResponse response, IServiceScope scope)
        {
            //find file route
            if (Mvc.FileRoutes.Count > 0)
            {
                IActionResult fileResult = Mvc.RouteFinder.FindFile(Mvc.FileRoutes, request);
                if (fileResult != null)
                {
                    response.SuppressContentEncoding = true;
                    WriteResponse(response, fileResult);
                    return;
                }
            }

            if (Mvc.ActionRoutes.Count > 0)
            {
                ActionRoute actionRoute = Mvc.RouteFinder.FindAction(Mvc.ActionRoutes, request);
                if (actionRoute != null)
                {
                    IActionResult actionResult = null;
                    if (actionRoute.Action != null)
                    {
                        actionResult = actionRoute.Action(request);
                    }
                    else if (actionRoute.AsyncAction != null)
                    {
                        actionResult = await actionRoute.AsyncAction(request);
                    }

                    if (actionResult != null)
                    {
                        WriteResponse(response, actionResult);
                        return;
                    }
                }
            }

            //find controller route
            RouteMatch match = Mvc.RouteFinder.Find(Mvc.Routes, request);

            if (match?.Route == null)
            {
                WriteResponse(response, Mvc.NotFoundResult);
                return;
            }

            //read user token
            ClaimsPrincipal user = null;

            if (Mvc.ClaimsPrincipalValidator != null)
            {
                user = Mvc.ClaimsPrincipalValidator.Get(request);
            }

            FilterContext context = new FilterContext
            {
                Server   = server,
                Request  = request,
                Response = response,
                Result   = null,
                User     = user
            };

            if (!CheckControllerAuthority(match, context, response))
            {
                return;
            }

            if (!await ExecuteBeforeControllerFilters(match, context, response))
            {
                return;
            }

            HorseController controller = Mvc.ControllerFactory.CreateInstance(Mvc, match.Route.ControllerType, request, response, scope);

            if (controller == null)
            {
                WriteResponse(response, Mvc.NotFoundResult);
                return;
            }

            controller.User = user;

            if (!await ExecuteAfterControllerFilters(match, context, response, controller))
            {
                return;
            }

            //fill action descriptor
            ActionDescriptor descriptor = new ActionDescriptor
            {
                Controller = controller,
                Action     = match.Route.ActionType,
                Parameters = await FillParameters(request, match)
            };

            if (!CheckActionAuthority(match, context, response, descriptor))
            {
                return;
            }

            if (!await CheckActionExecutingFilters(match, context, response, controller, descriptor))
            {
                return;
            }

            await controller.CallActionExecuting(descriptor, context);

            if (context.Result != null)
            {
                WriteResponse(response, context.Result);
                return;
            }

            await ExecuteAction(match, context, controller, descriptor, response);
        }