/** * @dataProvider providerConstruct */ public function testConstruct($url, $protocol, $host, $port, $path, $query, $baseUrl, $basePath) { $request = new Url($url); $this->assertEquals($url, $request->getUrl()); $this->assertEquals($protocol, $request->getProtocol()); $this->assertEquals($host, $request->getHost()); $this->assertEquals($port, $request->getPort()); $this->assertEquals($path, $request->getPath()); $this->assertEquals($query, $request->getQuery()); $this->assertEquals($baseUrl, $request->getBaseUrl()); $this->assertEquals($basePath, $request->getBasePath()); }
/** * Route the request query to a Request object * @return zibo\core\Request */ public function getRequest() { $query = $this->getQuery(); $routes = $this->getRoutesFromQuery($query); $io = $this->getIO(); $route = $io->getRouteFromQuery($query, $routes); $request = null; $baseUrl = Url::getSystemBaseUrl(); if ($route !== null) { $locale = I18n::getInstance()->getLocale(); $basePath = $baseUrl . Request::QUERY_SEPARATOR . $locale->getCode() . Request::QUERY_SEPARATOR . $route->getPath(); $controller = $route->getControllerClass(); $action = $route->getAction(); $parameters = $this->getParametersFromQuery($query, $route->getPath()); $request = new Request($baseUrl, $basePath, $controller, $action, $parameters); } elseif ($defaultController = $this->getDefaultController()) { $parameters = $this->getParametersFromQuery($query, ''); $request = new Request($baseUrl, $baseUrl, $defaultController, $this->getDefaultAction(), $parameters); } return $request; }
/** * Look up the node which matches the query based on the expired routes * @param string $query * @param array $routes * @return null|zibo\core\Request Request object to dispatch a node if found, null otherwise */ private function getRequestFromExpiredQuery(array $routes, $query, $site) { $model = ModelManager::getInstance()->getModel(ExpiredRouteModel::NAME); $node = $model->getNodeByRoutes($routes, $site); if (!$node) { return null; } $route = $node->getRoute(); $baseUrl = Url::getBaseUrl(); $basePath = $baseUrl . $route; $parameters = $this->getParametersFromQuery($query, $route); array_unshift($parameters, $node->id); return new Request($baseUrl, $basePath, self::FRONTEND_CONTROLLER, IndexController::ACTION_EXPIRED, $parameters, $query); }
/** * Gets a connection id for the provided url * @return string */ protected function getConnectionId(Url $url) { if ($url->getProtocol() == Url::PROTOCOL_HTTPS) { $id = 'ssl://'; } else { $id = 'tcp://'; } $id .= $url->getHost() . ':' . $url->getPort(); return $id; }