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
        ]);
    }
}