40 lines
1.5 KiB
PHP
40 lines
1.5 KiB
PHP
<?php
|
|
namespace Hanyuu;
|
|
|
|
use Index\Http\HttpFx;
|
|
use Index\Http\HttpRequest;
|
|
use Index\Routing\IRouter;
|
|
use Index\Routing\IRouteHandler;
|
|
use Sasae\SasaeEnvironment;
|
|
|
|
class RoutingContext {
|
|
private HttpFx $router;
|
|
private SasaeEnvironment $templating;
|
|
|
|
public function __construct(SasaeEnvironment $templating) {
|
|
$this->templating = $templating;
|
|
$this->router = new HttpFx;
|
|
$this->router->use('/', fn($resp) => $resp->setPoweredBy('Hanyuu'));
|
|
}
|
|
|
|
public function getRouter(): IRouter {
|
|
return $this->router;
|
|
}
|
|
|
|
public function registerDefaultErrorPages(): void {
|
|
$this->router->addErrorHandler(401, fn($resp) => $resp->setContent($this->templating->rendering('errors/401')));
|
|
$this->router->addErrorHandler(403, fn($resp) => $resp->setContent($this->templating->rendering('errors/403')));
|
|
$this->router->addErrorHandler(404, fn($resp) => $resp->setContent($this->templating->rendering('errors/404')));
|
|
$this->router->addErrorHandler(500, fn($resp) => $resp->setContent(file_get_contents(HAU_DIR_TEMPLATES . '/errors/500.html')));
|
|
$this->router->addErrorHandler(503, fn($resp) => $resp->setContent(file_get_contents(HAU_DIR_TEMPLATES . '/errors/503.html')));
|
|
}
|
|
|
|
public function register(IRouteHandler $handler): void {
|
|
$this->router->register($handler);
|
|
}
|
|
|
|
public function dispatch(?HttpRequest $request = null): void {
|
|
$this->router->dispatch($request);
|
|
}
|
|
}
|