<?php

// router.php for PHP built-in server
$uri = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));

// Tratamento robusto de arquivos estáticos (corrige 404 intermitente no servidor embutido)
$staticPath = __DIR__ . $uri;
if ($uri !== '/' && file_exists($staticPath)) {
    // Se for diretório, tente servir index.html
    if (is_dir($staticPath)) {
        $index = rtrim($staticPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'index.html';
        if (file_exists($index)) {
            header('Content-Type: text/html; charset=utf-8');
            header('Cache-Control: no-cache, no-store, must-revalidate');
            readfile($index);
            exit;
        }
        // Sem index.html, delega para front-controller
    } else {
        // Inferir Content-Type básico
        $ext = strtolower(pathinfo($staticPath, PATHINFO_EXTENSION));
        switch ($ext) {
            case 'html': header('Content-Type: text/html; charset=utf-8'); break;
            case 'css': header('Content-Type: text/css'); break;
            case 'js': header('Content-Type: application/javascript'); break;
            case 'png': header('Content-Type: image/png'); break;
            case 'jpg': case 'jpeg': header('Content-Type: image/jpeg'); break;
            case 'svg': header('Content-Type: image/svg+xml'); break;
            case 'gif': header('Content-Type: image/gif'); break;
            case 'json': header('Content-Type: application/json'); break;
            case 'webmanifest': header('Content-Type: application/manifest+json'); break;
            default: header('Content-Type: application/octet-stream'); break;
        }
        // Cache leve para dev
        header('Cache-Control: no-cache, no-store, must-revalidate');
        readfile($staticPath);
        exit;
    }
}

// Caso contrário, encaminhe a solicitação para o front-controller.
require_once __DIR__ . '/index.php';