json(['message' => 'No data found'], 404); } return response()->json([ 'experiment' => $mdFile->experiment_name, 'description' => $mdFile->description, 'total_files' => count($mdFile->getAllFiles()), 'files' => $mdFile->getAllFiles(), 'by_type' => [ 'pdb' => $mdFile->getFilesByExtension('pdb'), 'dcd' => $mdFile->getFilesByExtension('dcd'), 'crd' => $mdFile->getFilesByExtension('crd'), 'prmtop' => $mdFile->getFilesByExtension('prmtop'), 'rst' => $mdFile->getFilesByExtension('rst'), 'csv' => $mdFile->getFilesByExtension('csv'), 'png' => $mdFile->getFilesByExtension('png'), 'html' => $mdFile->getFilesByExtension('html'), 'dat' => $mdFile->getFilesByExtension('dat'), ] ]); } public function show(string $filename): JsonResponse { $mdFile = MdFile::first(); if (!$mdFile) { return response()->json(['message' => 'No data found'], 404); } $decodedName = urldecode($filename); if (!$mdFile->hasFile($decodedName)) { return response()->json([ 'message' => 'File not found', 'requested' => $decodedName, 'available' => array_keys($mdFile->getAllFiles()) ], 404); } return response()->json([ 'filename' => $decodedName, 'url' => $mdFile->getFileUrl($decodedName), 'extension' => pathinfo($decodedName, PATHINFO_EXTENSION) ]); } public function byType(string $type): JsonResponse { $mdFile = MdFile::first(); if (!$mdFile) { return response()->json(['message' => 'No data found'], 404); } $files = $mdFile->getFilesByExtension($type); return response()->json([ 'type' => $type, 'count' => count($files), 'files' => $files ]); } }