Added Satori redirects table and read endpoint.
This commit is contained in:
parent
0ae839b26a
commit
627c28bd4d
2 changed files with 34 additions and 0 deletions
16
database/2024_05_22_204323_add_satori_redirs_table.php
Normal file
16
database/2024_05_22_204323_add_satori_redirs_table.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
use Index\Data\IDbConnection;
|
||||
use Index\Data\Migration\IDbMigration;
|
||||
|
||||
final class AddSatoriRedirsTable_20240522_204323 implements IDbMigration {
|
||||
public function migrate(IDbConnection $conn): void {
|
||||
$conn->execute('
|
||||
CREATE TABLE awk_satori_redirects (
|
||||
redir_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
redir_url VARCHAR(255) NOT NULL,
|
||||
redir_created TIMESTAMP NOT NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (redir_id)
|
||||
) ENGINE=InnoDB COLLATE=utf8mb4_bin;
|
||||
');
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ namespace Awaki;
|
|||
|
||||
use Index\Data\IDbConnection;
|
||||
use Index\Http\Routing\IRouter;
|
||||
use Index\Serialisation\Base62;
|
||||
use Syokuhou\IConfig;
|
||||
|
||||
final class RedirectorRoutes {
|
||||
|
@ -19,6 +20,9 @@ final class RedirectorRoutes {
|
|||
$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(...));
|
||||
|
||||
|
@ -62,6 +66,20 @@ final class RedirectorRoutes {
|
|||
$this->redirect($response, $request, $info->getString(1));
|
||||
}
|
||||
|
||||
public function redirectSatoriShort($response, $request, string $linkId) {
|
||||
$linkId = Base62::decode($linkId);
|
||||
|
||||
$getInfo = $this->dbConn->prepare('SELECT redir_url FROM awk_satori_redirects WHERE redir_id = ?');
|
||||
$getInfo->addParameter(1, $linkId);
|
||||
$getInfo->execute();
|
||||
$info = $getInfo->getResult();
|
||||
|
||||
if(!$info->next())
|
||||
return 404;
|
||||
|
||||
$this->redirect($response, $request, $info->getString(0));
|
||||
}
|
||||
|
||||
private function redirectSimple($response, $request, string $format, string $argument) {
|
||||
$scheme = empty($_SERVER['HTTPS']) ? 'http' : 'https';
|
||||
$argument = rawurlencode($argument);
|
||||
|
|
Loading…
Reference in a new issue