예제 #1
0
 /**
  * @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());
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 /**
  * 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);
 }
예제 #4
0
 /**
  * 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;
 }