false, 'error' => 'Unauthorized', ]); exit; } // Optional tuning via query params $topFolders = isset($_GET['topFolders']) ? max(1, (int)$_GET['topFolders']) : 5; $topFiles = isset($_GET['topFiles']) ? max(0, (int)$_GET['topFiles']) : 0; try { $summary = DiskUsageModel::getSummary($topFolders, $topFiles); http_response_code($summary['ok'] ? 200 : 404); echo json_encode($summary, JSON_UNESCAPED_SLASHES); } catch (Throwable $e) { http_response_code(500); echo json_encode([ 'ok' => false, 'error' => 'internal_error', 'message' => $e->getMessage(), ]); }