<?php
/**
 * api/index.php — Front controller del API.
 *
 * Permite que las rutas del contrato funcionen SIN extensión .php cuando hay
 * reescritura (.htaccess) o cuando el servidor embebido de PHP enruta aquí.
 *
 * Rutas soportadas:
 *   POST /api/device/config
 *   POST /api/device/login
 *   POST /api/device/activate
 *   POST /api/device/parental
 *   GET  /api/tmdb
 *   GET  /api/ads
 *   GET  /api/sports
 *
 * Los archivos individuales api/device/*.php también funcionan por separado,
 * así que el panel sirve con o sin mod_rewrite.
 */

declare(strict_types=1);

require_once __DIR__ . '/../lib/helpers.php';

// Ruta solicitada, sin querystring.
$uri  = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH) ?? '/';
$path = trim($uri, '/');

// Quitar el prefijo "api/" si está presente.
if (str_starts_with($path, 'api/')) {
    $path = substr($path, 4);
}
// Quitar una posible extensión .php para tratar ambos estilos por igual.
if (str_ends_with($path, '.php')) {
    $path = substr($path, 0, -4);
}

$routes = [
    'device/boot'     => __DIR__ . '/device/boot.php',
    'device/config'   => __DIR__ . '/device/boot.php', // alias legacy (WAF bloquea config.php directo)
    'device/login'    => __DIR__ . '/device/login.php',
    'device/dns'      => __DIR__ . '/device/dns.php',
    'device/activate' => __DIR__ . '/device/activate.php',
    'device/parental' => __DIR__ . '/device/parental.php',
    'tmdb'            => __DIR__ . '/tmdb.php',
    'ads'             => __DIR__ . '/ads.php',
    'sports'          => __DIR__ . '/sports.php',
];

if (isset($routes[$path])) {
    require $routes[$path];
    exit;
}

// Ruta desconocida.
json_out(['error' => 'not_found', 'path' => $path], 404);
