66use Ramsey \Uuid \Uuid ;
77use Pterodactyl \Models \Server ;
88use Illuminate \Http \JsonResponse ;
9- use Illuminate \Contracts \Cache \Repository ;
9+ use Illuminate \Contracts \Cache \Repository as CacheRepository ;
1010use Pterodactyl \Http \Controllers \Api \Client \ClientApiController ;
11+ use Pterodactyl \Contracts \Repository \Daemon \FileRepositoryInterface ;
12+ use Pterodactyl \Http \Requests \Api \Client \Servers \Files \ListFilesRequest ;
1113use Pterodactyl \Http \Requests \Api \Client \Servers \Files \DownloadFileRequest ;
1214
1315class FileController extends ClientApiController
@@ -17,16 +19,38 @@ class FileController extends ClientApiController
1719 */
1820 private $ cache ;
1921
22+ /**
23+ * @var \Pterodactyl\Contracts\Repository\Daemon\FileRepositoryInterface
24+ */
25+ private $ fileRepository ;
26+
2027 /**
2128 * FileController constructor.
2229 *
23- * @param \Illuminate\Contracts\Cache\Repository $cache
30+ * @param \Pterodactyl\Contracts\Repository\Daemon\FileRepositoryInterface $fileRepository
31+ * @param \Illuminate\Contracts\Cache\Repository $cache
2432 */
25- public function __construct (Repository $ cache )
33+ public function __construct (FileRepositoryInterface $ fileRepository , CacheRepository $ cache )
2634 {
2735 parent ::__construct ();
2836
2937 $ this ->cache = $ cache ;
38+ $ this ->fileRepository = $ fileRepository ;
39+ }
40+
41+ /**
42+ * Returns a listing of files in a given directory.
43+ *
44+ * @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\ListFilesRequest $request
45+ * @return \Illuminate\Http\JsonResponse
46+ */
47+ public function listDirectory (ListFilesRequest $ request ): JsonResponse
48+ {
49+ return JsonResponse::create ([
50+ 'contents ' => $ this ->fileRepository ->setServer ($ request ->getModel (Server::class))->getDirectory (
51+ $ request ->get ('directory ' ) ?? '/ '
52+ ),
53+ ]);
3054 }
3155
3256 /**
0 commit comments