<?php

use App\Http\Controllers\Api\V1\MoodleApiController;
use App\Http\Controllers\ScssCdn\CdnFileController;
use Illuminate\Support\Facades\Route;

// API v1 - Endpoint principal para plugins de Moodle
//
// `api_throttle` va PRIMERO a propósito: si fuera detrás del logger, cada petición
// rechazada seguiría escribiendo una fila en `api_request_logs`, que es la
// amplificación que el límite existe para cortar. Ver known-issues MGR-008.
//
// **Con un matiz desde el 2026-09-10**: el limitador escribe **una fila por episodio**
// de corte —la primera vez que se aplica, no las 720 siguientes—, porque si no, un corte
// no dejaba ningún rastro en el visor de peticiones y ahí es donde se investiga qué le
// pasó a un sitio. El coste queda acotado por el número de episodios y no por el volumen
// del ataque. Ver `ThrottleApiRequests::registrarCorte()`.
//
// Los rechazos siguen contándose además en `api_blocks`, en `api_rate_events` y en el
// canal de log `api`.
Route::prefix('v1')->middleware(['api_throttle', 'api_request_logger', 'product_token'])->group(function () {
    Route::post('/', [MoodleApiController::class, 'handle']);
});

// Preparado para futuras versiones
// Route::prefix('v2')->middleware('product_token')->group(function () {
//     Route::post('/', [MoodleApiV2Controller::class, 'handle']);
// });

// CDN para archivos SCSS - URLs firmadas
Route::get('/cdn/scss/{token}/{filename}', [CdnFileController::class, 'serve'])
    ->name('cdn.scss.serve')
    ->middleware('signed');

