<?php
declare(strict_types=1);

require_once __DIR__ . '/includes/bootstrap.php';

$router = new Router();
$pages = new PageController();
$game = new GameController();
$auth = new AuthController();
$settings = new SettingsController();
$admin = new AdminController();

$router->get('/', [$pages, 'home']);
$router->get('/characters', [$pages, 'characters']);
$router->get('/settings', [$pages, 'settings']);
$router->get('/api/settings', [$settings, 'api']);
$router->post('/api/settings', [$settings, 'api']);

$router->get('/admin', [$admin, 'index']);
$router->get('/admin/table', [$admin, 'table']);
$router->get('/admin/create', [$admin, 'create']);
$router->post('/admin/create', [$admin, 'create']);
$router->get('/admin/edit', [$admin, 'edit']);
$router->post('/admin/edit', [$admin, 'edit']);

$router->get('/play', [$game, 'play']);
$router->post('/api/game', [$game, 'api']);

$router->get('/login', [$auth, 'login']);
$router->post('/login', [$auth, 'login']);
$router->get('/register', [$auth, 'register']);
$router->post('/register', [$auth, 'register']);
$router->get('/confirm-email', [$auth, 'confirmEmail']);
$router->get('/forgot-password', [$auth, 'forgotPassword']);
$router->post('/forgot-password', [$auth, 'forgotPassword']);
$router->get('/reset-password', [$auth, 'resetPassword']);
$router->post('/reset-password', [$auth, 'resetPassword']);
$router->get('/account', [$auth, 'account']);
$router->post('/logout', [$auth, 'logout']);
$router->get('/auth/google', [$auth, 'googleStart']);
$router->get('/auth/google/callback', [$auth, 'googleCallback']);

// Transitional aliases for old underscore-style URLs.
$router->get('/forgot_password', [$auth, 'forgotPassword']);
$router->post('/forgot_password', [$auth, 'forgotPassword']);
$router->get('/reset_password', [$auth, 'resetPassword']);
$router->post('/reset_password', [$auth, 'resetPassword']);
$router->get('/confirm_email', [$auth, 'confirmEmail']);
$router->get('/auth_google_start', [$auth, 'googleStart']);
$router->get('/auth_google_callback', [$auth, 'googleCallback']);

$router->dispatch($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);
