<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require_once __DIR__ . '/../src/Utils/CorsHandler.php';

// Configurar CORS para todas las respuestas
\Utils\CorsHandler::configureCors();

header('Content-Type: application/json; charset=utf-8');

// Loader para Slim PSR-7
require_once __DIR__ . '/../vendor/autoload.php';

// Obtener y normalizar ruta
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$method = $_SERVER['REQUEST_METHOD'];

// Quitar el prefijo '/api' para trabajar con rutas limpias
$basePath = '/api_candidatos';
$normalizedPath = str_replace($basePath, '', $path);

// Enrutamiento
switch (true) {
    case preg_match('#^/oauth/token#', $normalizedPath):
        $authPath = __DIR__ . '/../src/OAuth/Routes/AuthRoutes.php';

        if (file_exists($authPath)) {
            require_once $authPath;
        } else {
            http_response_code(500);
            echo json_encode([
                'error' => 'Archivo AuthRoutes.php no encontrado',
                'ruta_buscada' => $authPath
            ]);
            exit;
        }

        // /../src/candidatos/index.php
        break;
        
    case preg_match('#^/candidatos#', $normalizedPath):
        // Verificar token de OAuth 2.0 antes de acceder a rutas protegidas
        require_once __DIR__ . '/../src/OAuth/Middleware/AuthMiddleware.php';
        
        // Solo continuamos si el token es válido
        if (\OAuth\Middleware\AuthMiddleware::verifyToken()) {
            require_once __DIR__ . '/../src/candidatos/index.php';
        }
        break;

    default:
        http_response_code(404);
        echo json_encode(["error" => "Ruta no encontrada"]);
        break;
}
?>