예제 #1
0
 /**
  * @param ServesRequestInfo $requestInfo
  *
  * @throws IceHawk\Exceptions\MalformedRequestUri
  * @return IceHawk\Interfaces\ServesUriComponents
  */
 public function resolveUri(ServesRequestInfo $requestInfo)
 {
     $uri = $requestInfo->getUri();
     # home
     if ($uri == '/') {
         return new UriComponents('Posts', 'Abstract', []);
     }
     # imprint
     if ($uri == '/imprint') {
         return new UriComponents('Blog', 'Imprint', []);
     }
     # sitemap
     if ($uri == '/sitemap') {
         return new UriComponents('Blog', 'Sitemap', []);
     }
     # posts
     if (preg_match("#^/posts/[^/]+/?\$#i", $uri)) {
         return new UriComponents('Posts', 'ShowPost', []);
     }
     # about author
     if (preg_match('#^/about/author/([^/]+)#i', $uri, $matches)) {
         $authorName = $matches[1];
         return new UriComponents('Blog', 'Author', ['authorName' => $authorName]);
     }
     return parent::resolveUri($requestInfo);
 }
예제 #2
0
 /**
  * @param ServesRequestInfo $requestInfo
  *
  * @throws \Fortuneglobe\IceHawk\Exceptions\MalformedRequestUri
  * @return \Fortuneglobe\IceHawk\Interfaces\ServesUriComponents
  */
 public function resolveUri(ServesRequestInfo $requestInfo)
 {
     $uri = $requestInfo->getUri();
     # Show server selection
     if ($uri == '/') {
         return new UriComponents('server', 'select', []);
     }
     # Show a specific server
     if (preg_match("#^/server/([0-9]+)/?\$#", $uri, $matches)) {
         return new UriComponents('server', 'show', ['serverKey' => $matches[1]]);
     }
     return parent::resolveUri($requestInfo);
 }
예제 #3
0
 /**
  * @param ServesRequestInfo $requestInfo
  *
  * @throws MalformedRequestUri
  * @return ServesUriComponents
  */
 public function resolveUri(ServesRequestInfo $requestInfo)
 {
     $uri = $requestInfo->getUri();
     $pattern = "#^\\/([^\\/\\?\\#]+)\\/([^\\/\\?\\#]+)\\/?#";
     $matches = [];
     if (preg_match($pattern, $uri, $matches)) {
         $domain = strtolower($matches[1]);
         $demand = strtolower($matches[2]);
         return new UriComponents($domain, $demand, []);
     } else {
         throw new MalformedRequestUri($uri);
     }
 }
예제 #4
0
 /**
  * @throws \Exception
  */
 private function redirectOrHandleRequest()
 {
     $redirect = $this->getRedirect();
     if ($redirect->urlEquals($this->requestInfo->getUri())) {
         $uriComponents = $this->getUriComponents();
         $request = $this->getRequest($uriComponents);
         $handlingRequestEvent = new HandlingRequestEvent($this->requestInfo, $request);
         $this->publishEvent($handlingRequestEvent);
         $requestHandler = $this->getDomainRequestHandler($uriComponents, $request);
         $requestHandler->handleRequest();
         $requestWasHandledEvent = new RequestWasHandledEvent($this->requestInfo, $request);
         $this->publishEvent($requestWasHandledEvent);
     } else {
         $redirect->respond();
     }
 }
 public function rewrite(ServesRequestInfo $requestInfo)
 {
     return $this->rewriteUriBySimpleMap($requestInfo->getUri(), self::$simpleMap);
 }