authenticate()) { exit; } // Endpoints if ($uri === '/generate') { // Endpoint synchrone existant (rétro-compat) $generator = new \Web2Print\Services\PdfGenerator($config); $controller = new \Web2Print\Controllers\GenerateController($generator, $config); $controller->handle(); } elseif ($uri === '/jobs') { // POST /jobs : créer un job async $jobs = new \Web2Print\Services\JobManager($config); $controller = new \Web2Print\Controllers\JobsController($jobs, $config); $controller->create(); } elseif (preg_match('#^/jobs/([a-f0-9]+)/result$#', $uri, $m)) { // GET /jobs/{id}/result : récupérer le PDF $jobs = new \Web2Print\Services\JobManager($config); $controller = new \Web2Print\Controllers\JobsController($jobs, $config); $controller->result($m[1]); } elseif (preg_match('#^/jobs/([a-f0-9]+)$#', $uri, $m)) { // GET /jobs/{id} : status — DELETE /jobs/{id} : cleanup $jobs = new \Web2Print\Services\JobManager($config); $controller = new \Web2Print\Controllers\JobsController($jobs, $config); if ($_SERVER['REQUEST_METHOD'] === 'DELETE') { $controller->delete($m[1]); } else { $controller->status($m[1]); } } else { http_response_code(404); header('Content-Type: application/json'); echo json_encode(['error' => 'Not found']); }