Spaces:
Running
Running
File size: 2,422 Bytes
907b200 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <?php
// app/Http/Controllers/MdFileController.php
namespace App\Http\Controllers\Api;
use App\Models\MdFile;
use Illuminate\Http\JsonResponse;
class MdFileController extends BaseController
{
public function index(): JsonResponse
{
$mdFile = MdFile::first();
if (!$mdFile) {
return response()->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
]);
}
}
|