/** * @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); }
/** * @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); }
/** * @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); } }
/** * @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); }