public function getControllerFor(Request $request, RtNode $routes)
{
$routeResult = $routes->findRouteFor($request);
if ($routeResult->routeExists) {
if ($routeResult->methodIsSupported) {
$controller = $this->getControllerFromRouteResult($request, $routeResult);
} else {
throw new RecessResponseException('METHOD not supported, supported METHODs are: ' . implode(',', $routeResult->acceptableMethods), ResponseCodes::HTTP_METHOD_NOT_ALLOWED, get_defined_vars());
}
} else {
throw new RecessResponseException('Resource does not exist.', ResponseCodes::HTTP_NOT_FOUND, get_defined_vars());
}
Application::activate($request->meta->app);
$this->controller = $controller;
return $controller;
}