config = $config; $this->actionProcessor = $actionProcessor; } public function process(string $route, Request $request, Response $response): void { $response->setHeader('Content-Type', 'application/json'); $params = $request->getRouteParams(); $controllerName = $params['controller'] ?? null; $actionName = $params['action'] ?? null; if (!$controllerName) { throw new Error("Route '{$route}' doesn't have a controller."); } $controllerName = ucfirst($controllerName); $requestMethod = $request->getMethod(); if (!$actionName) { $httpMethod = strtolower($requestMethod); $crudList = $this->config->get('crud') ?? []; $actionName = $crudList[$httpMethod] ?? null; if (!$actionName) { throw new Error("No action for method {$httpMethod}."); } } $this->actionProcessor->process($controllerName, $actionName, $request, $response); $response->setHeader('Expires', '0'); $response->setHeader('Last-Modified', gmdate('D, d M Y H:i:s') . ' GMT'); $response->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); $response->setHeader('Pragma', 'no-cache'); } }