Use attribute based route registration.
This commit is contained in:
parent
627c28bd4d
commit
ac4a2deca6
2 changed files with 14 additions and 21 deletions
|
@ -55,6 +55,6 @@ class AwakiContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
private function registerHttpRoutes(): void {
|
private function registerHttpRoutes(): void {
|
||||||
new RedirectorRoutes($this->router, $this->dbConn, $this->urls);
|
$this->router->register(new RedirectorRoutes($this->dbConn, $this->urls));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,40 +2,27 @@
|
||||||
namespace Awaki;
|
namespace Awaki;
|
||||||
|
|
||||||
use Index\Data\IDbConnection;
|
use Index\Data\IDbConnection;
|
||||||
use Index\Http\Routing\IRouter;
|
use Index\Http\Routing\{HandlerAttribute,HttpGet,IRouter,IRouteHandler};
|
||||||
use Index\Serialisation\Base62;
|
use Index\Serialisation\Base62;
|
||||||
use Syokuhou\IConfig;
|
use Syokuhou\IConfig;
|
||||||
|
|
||||||
final class RedirectorRoutes {
|
final class RedirectorRoutes implements IRouteHandler {
|
||||||
private IDbConnection $dbConn;
|
private IDbConnection $dbConn;
|
||||||
private IConfig $urls;
|
private IConfig $urls;
|
||||||
|
|
||||||
public function __construct(IRouter $router, IDbConnection $dbConn, IConfig $urls) {
|
public function __construct(IDbConnection $dbConn, IConfig $urls) {
|
||||||
$this->dbConn = $dbConn;
|
$this->dbConn = $dbConn;
|
||||||
$this->urls = $urls;
|
$this->urls = $urls;
|
||||||
|
}
|
||||||
|
|
||||||
$router->get('/', $this->index(...));
|
public function registerRoutes(IRouter $router): void {
|
||||||
|
HandlerAttribute::register($router, $this);
|
||||||
// profile
|
|
||||||
$router->get('/[up]([0-9]+)', $this->redirectProfile(...));
|
|
||||||
$router->get('/[up]/([A-Za-z0-9\-_]+)', $this->redirectProfile(...));
|
|
||||||
|
|
||||||
// satori short urls
|
|
||||||
$router->get('/[bg]/([A-Za-z0-9]+)', $this->redirectSatoriShort(...));
|
|
||||||
|
|
||||||
// forum categories
|
|
||||||
$router->get('/fc?/?([0-9]+)', $this->redirectForumCategory(...));
|
|
||||||
|
|
||||||
// forum topic
|
|
||||||
$router->get('/ft/?([0-9]+)', $this->redirectForumTopic(...));
|
|
||||||
|
|
||||||
// forum post
|
|
||||||
$router->get('/fp/?([0-9]+)', $this->redirectForumPost(...));
|
|
||||||
|
|
||||||
// databased, registered last cuz it matches everything otherwise!
|
// databased, registered last cuz it matches everything otherwise!
|
||||||
$router->get('/([A-Za-z0-9\-_]+)', $this->redirectDatabase(...));
|
$router->get('/([A-Za-z0-9\-_]+)', $this->redirectDatabase(...));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[HttpGet('/')]
|
||||||
public function index($response): void {
|
public function index($response): void {
|
||||||
$response->accelRedirect('/index.html');
|
$response->accelRedirect('/index.html');
|
||||||
$response->setTypeHTML();
|
$response->setTypeHTML();
|
||||||
|
@ -66,6 +53,7 @@ final class RedirectorRoutes {
|
||||||
$this->redirect($response, $request, $info->getString(1));
|
$this->redirect($response, $request, $info->getString(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[HttpGet('/[bg]/([A-Za-z0-9]+)')]
|
||||||
public function redirectSatoriShort($response, $request, string $linkId) {
|
public function redirectSatoriShort($response, $request, string $linkId) {
|
||||||
$linkId = Base62::decode($linkId);
|
$linkId = Base62::decode($linkId);
|
||||||
|
|
||||||
|
@ -88,18 +76,23 @@ final class RedirectorRoutes {
|
||||||
$this->redirect($response, $request, $url);
|
$this->redirect($response, $request, $url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[HttpGet('/[up]([0-9]+)')]
|
||||||
|
#[HttpGet('/[up]/([A-Za-z0-9\-_]+)')]
|
||||||
public function redirectProfile($response, $request, string $userId) {
|
public function redirectProfile($response, $request, string $userId) {
|
||||||
$this->redirectSimple($response, $request, $this->urls->getString('user_profile'), $userId);
|
$this->redirectSimple($response, $request, $this->urls->getString('user_profile'), $userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[HttpGet('/fc?/?([0-9]+)')]
|
||||||
public function redirectForumCategory($response, $request, string $categoryId) {
|
public function redirectForumCategory($response, $request, string $categoryId) {
|
||||||
$this->redirectSimple($response, $request, $this->urls->getString('forum_category'), $categoryId);
|
$this->redirectSimple($response, $request, $this->urls->getString('forum_category'), $categoryId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[HttpGet('/ft/?([0-9]+)')]
|
||||||
public function redirectForumTopic($response, $request, string $topicId) {
|
public function redirectForumTopic($response, $request, string $topicId) {
|
||||||
$this->redirectSimple($response, $request, $this->urls->getString('forum_topic'), $topicId);
|
$this->redirectSimple($response, $request, $this->urls->getString('forum_topic'), $topicId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[HttpGet('/fp/?([0-9]+)')]
|
||||||
public function redirectForumPost($response, $request, string $postId) {
|
public function redirectForumPost($response, $request, string $postId) {
|
||||||
$this->redirectSimple($response, $request, $this->urls->getString('forum_post'), $postId);
|
$this->redirectSimple($response, $request, $this->urls->getString('forum_post'), $postId);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue