Skip to content

Commit b99ea53

Browse files
committed
Update client API endpoints to not use deprecated function
1 parent 7543ef0 commit b99ea53

File tree

8 files changed

+74
-58
lines changed

8 files changed

+74
-58
lines changed

app/Http/Controllers/Api/Client/ClientController.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@
33
namespace Pterodactyl\Http\Controllers\Api\Client;
44

55
use Pterodactyl\Models\User;
6+
use Pterodactyl\Repositories\Eloquent\ServerRepository;
67
use Pterodactyl\Transformers\Api\Client\ServerTransformer;
78
use Pterodactyl\Http\Requests\Api\Client\GetServersRequest;
8-
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
99

1010
class ClientController extends ClientApiController
1111
{
1212
/**
13-
* @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface
13+
* @var \Pterodactyl\Repositories\Eloquent\ServerRepository
1414
*/
1515
private $repository;
1616

1717
/**
1818
* ClientController constructor.
1919
*
20-
* @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $repository
20+
* @param \Pterodactyl\Repositories\Eloquent\ServerRepository $repository
2121
*/
22-
public function __construct(ServerRepositoryInterface $repository)
22+
public function __construct(ServerRepository $repository)
2323
{
2424
parent::__construct();
2525

app/Http/Controllers/Api/Client/Servers/FileController.php

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@
88
use Pterodactyl\Models\Server;
99
use Illuminate\Http\JsonResponse;
1010
use GuzzleHttp\Exception\TransferException;
11+
use Pterodactyl\Repositories\Wings\DaemonFileRepository;
1112
use Pterodactyl\Transformers\Daemon\FileObjectTransformer;
1213
use Illuminate\Contracts\Cache\Repository as CacheRepository;
13-
use Illuminate\Contracts\Config\Repository as ConfigRepository;
1414
use Pterodactyl\Http\Controllers\Api\Client\ClientApiController;
15-
use Pterodactyl\Contracts\Repository\Daemon\FileRepositoryInterface;
1615
use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;
1716
use Pterodactyl\Http\Requests\Api\Client\Servers\Files\CopyFileRequest;
1817
use Pterodactyl\Http\Requests\Api\Client\Servers\Files\ListFilesRequest;
@@ -31,44 +30,38 @@ class FileController extends ClientApiController
3130
private $cache;
3231

3332
/**
34-
* @var \Illuminate\Contracts\Config\Repository
35-
*/
36-
private $config;
37-
38-
/**
39-
* @var \Pterodactyl\Contracts\Repository\Daemon\FileRepositoryInterface
33+
* @var \Pterodactyl\Repositories\Wings\DaemonFileRepository
4034
*/
4135
private $fileRepository;
4236

4337
/**
4438
* FileController constructor.
4539
*
46-
* @param \Illuminate\Contracts\Config\Repository $config
47-
* @param \Pterodactyl\Contracts\Repository\Daemon\FileRepositoryInterface $fileRepository
40+
* @param \Pterodactyl\Repositories\Wings\DaemonFileRepository $fileRepository
4841
* @param \Illuminate\Contracts\Cache\Repository $cache
4942
*/
50-
public function __construct(ConfigRepository $config, FileRepositoryInterface $fileRepository, CacheRepository $cache)
43+
public function __construct(DaemonFileRepository $fileRepository, CacheRepository $cache)
5144
{
5245
parent::__construct();
5346

5447
$this->cache = $cache;
55-
$this->config = $config;
5648
$this->fileRepository = $fileRepository;
5749
}
5850

5951
/**
6052
* Returns a listing of files in a given directory.
6153
*
6254
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\ListFilesRequest $request
55+
* @param \Pterodactyl\Models\Server $server
6356
* @return array
6457
*
6558
* @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException
6659
*/
67-
public function listDirectory(ListFilesRequest $request): array
60+
public function listDirectory(ListFilesRequest $request, Server $server): array
6861
{
6962
try {
7063
$contents = $this->fileRepository
71-
->setServer($request->getModel(Server::class))
64+
->setServer($server)
7265
->getDirectory($request->get('directory') ?? '/');
7366
} catch (TransferException $exception) {
7467
throw new DaemonConnectionException($exception, true);
@@ -83,13 +76,15 @@ public function listDirectory(ListFilesRequest $request): array
8376
* Return the contents of a specified file for the user.
8477
*
8578
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\GetFileContentsRequest $request
79+
* @param \Pterodactyl\Models\Server $server
8680
* @return \Illuminate\Http\Response
81+
* @throws \Pterodactyl\Exceptions\Http\Server\FileSizeTooLargeException
8782
*/
88-
public function getFileContents(GetFileContentsRequest $request): Response
83+
public function getFileContents(GetFileContentsRequest $request, Server $server): Response
8984
{
9085
return Response::create(
91-
$this->fileRepository->setServer($request->getModel(Server::class))->getContent(
92-
$request->get('file'), $this->config->get('pterodactyl.files.max_edit_size')
86+
$this->fileRepository->setServer($server)->getContent(
87+
$request->get('file'), config('pterodactyl.files.max_edit_size')
9388
)
9489
);
9590
}
@@ -98,11 +93,12 @@ public function getFileContents(GetFileContentsRequest $request): Response
9893
* Writes the contents of the specified file to the server.
9994
*
10095
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\WriteFileContentRequest $request
96+
* @param \Pterodactyl\Models\Server $server
10197
* @return \Illuminate\Http\Response
10298
*/
103-
public function writeFileContents(WriteFileContentRequest $request): Response
99+
public function writeFileContents(WriteFileContentRequest $request, Server $server): Response
104100
{
105-
$this->fileRepository->setServer($request->getModel(Server::class))->putContent(
101+
$this->fileRepository->setServer($server)->putContent(
106102
$request->get('file'),
107103
$request->getContent()
108104
);
@@ -114,12 +110,13 @@ public function writeFileContents(WriteFileContentRequest $request): Response
114110
* Creates a new folder on the server.
115111
*
116112
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\CreateFolderRequest $request
113+
* @param \Pterodactyl\Models\Server $server
117114
* @return \Illuminate\Http\Response
118115
*/
119-
public function createFolder(CreateFolderRequest $request): Response
116+
public function createFolder(CreateFolderRequest $request, Server $server): Response
120117
{
121118
$this->fileRepository
122-
->setServer($request->getModel(Server::class))
119+
->setServer($server)
123120
->createDirectory($request->input('name'), $request->input('directory', '/'));
124121

125122
return Response::create('', Response::HTTP_NO_CONTENT);
@@ -129,12 +126,13 @@ public function createFolder(CreateFolderRequest $request): Response
129126
* Renames a file on the remote machine.
130127
*
131128
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\RenameFileRequest $request
129+
* @param \Pterodactyl\Models\Server $server
132130
* @return \Illuminate\Http\Response
133131
*/
134-
public function renameFile(RenameFileRequest $request): Response
132+
public function renameFile(RenameFileRequest $request, Server $server): Response
135133
{
136134
$this->fileRepository
137-
->setServer($request->getModel(Server::class))
135+
->setServer($server)
138136
->renameFile($request->input('rename_from'), $request->input('rename_to'));
139137

140138
return Response::create('', Response::HTTP_NO_CONTENT);
@@ -144,12 +142,13 @@ public function renameFile(RenameFileRequest $request): Response
144142
* Copies a file on the server.
145143
*
146144
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\CopyFileRequest $request
145+
* @param \Pterodactyl\Models\Server $server
147146
* @return \Illuminate\Http\Response
148147
*/
149-
public function copyFile(CopyFileRequest $request): Response
148+
public function copyFile(CopyFileRequest $request, Server $server): Response
150149
{
151150
$this->fileRepository
152-
->setServer($request->getModel(Server::class))
151+
->setServer($server)
153152
->copyFile($request->input('location'));
154153

155154
return Response::create('', Response::HTTP_NO_CONTENT);
@@ -159,12 +158,13 @@ public function copyFile(CopyFileRequest $request): Response
159158
* Deletes a file or folder from the server.
160159
*
161160
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\DeleteFileRequest $request
161+
* @param \Pterodactyl\Models\Server $server
162162
* @return \Illuminate\Http\Response
163163
*/
164-
public function delete(DeleteFileRequest $request): Response
164+
public function delete(DeleteFileRequest $request, Server $server): Response
165165
{
166166
$this->fileRepository
167-
->setServer($request->getModel(Server::class))
167+
->setServer($server)
168168
->deleteFile($request->input('location'));
169169

170170
return Response::create('', Response::HTTP_NO_CONTENT);
@@ -178,13 +178,12 @@ public function delete(DeleteFileRequest $request): Response
178178
* Returns the token that needs to be used when downloading the file.
179179
*
180180
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Files\DownloadFileRequest $request
181+
* @param \Pterodactyl\Models\Server $server
181182
* @return \Illuminate\Http\JsonResponse
182183
* @throws \Exception
183184
*/
184-
public function download(DownloadFileRequest $request): JsonResponse
185+
public function download(DownloadFileRequest $request, Server $server): JsonResponse
185186
{
186-
/** @var \Pterodactyl\Models\Server $server */
187-
$server = $request->getModel(Server::class);
188187
$token = Uuid::uuid4()->toString();
189188

190189
$this->cache->put(

app/Http/Controllers/Api/Client/Servers/NetworkController.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@
33
namespace Pterodactyl\Http\Controllers\Api\Client\Servers;
44

55
use Pterodactyl\Models\Server;
6+
use Pterodactyl\Repositories\Eloquent\AllocationRepository;
67
use Pterodactyl\Transformers\Api\Client\AllocationTransformer;
78
use Pterodactyl\Http\Controllers\Api\Client\ClientApiController;
8-
use Pterodactyl\Contracts\Repository\AllocationRepositoryInterface;
99
use Pterodactyl\Http\Requests\Api\Client\Servers\Network\GetNetworkRequest;
1010

1111
class NetworkController extends ClientApiController
1212
{
1313
/**
14-
* @var \Pterodactyl\Contracts\Repository\AllocationRepositoryInterface
14+
* @var \Pterodactyl\Repositories\Eloquent\AllocationRepository
1515
*/
1616
private $repository;
1717

1818
/**
1919
* NetworkController constructor.
2020
*
21-
* @param \Pterodactyl\Contracts\Repository\AllocationRepositoryInterface $repository
21+
* @param \Pterodactyl\Repositories\Eloquent\AllocationRepository $repository
2222
*/
23-
public function __construct(AllocationRepositoryInterface $repository)
23+
public function __construct(AllocationRepository $repository)
2424
{
2525
parent::__construct();
2626

@@ -32,12 +32,11 @@ public function __construct(AllocationRepositoryInterface $repository)
3232
* not they are currently assigned as the primary for this server.
3333
*
3434
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\Network\GetNetworkRequest $request
35+
* @param \Pterodactyl\Models\Server $server
3536
* @return array
3637
*/
37-
public function index(GetNetworkRequest $request): array
38+
public function index(GetNetworkRequest $request, Server $server): array
3839
{
39-
$server = $request->getModel(Server::class);
40-
4140
$allocations = $this->repository->findWhere([
4241
['server_id', '=', $server->id],
4342
]);

app/Http/Controllers/Api/Client/Servers/PowerController.php

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44

55
use Illuminate\Http\Response;
66
use Pterodactyl\Models\Server;
7+
use Pterodactyl\Repositories\Wings\DaemonPowerRepository;
78
use Pterodactyl\Http\Controllers\Api\Client\ClientApiController;
89
use Pterodactyl\Http\Requests\Api\Client\Servers\SendPowerRequest;
9-
use Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface;
1010

1111
class PowerController extends ClientApiController
1212
{
1313
/**
14-
* @var \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface
14+
* @var \Pterodactyl\Repositories\Wings\DaemonPowerRepository
1515
*/
1616
private $repository;
1717

1818
/**
1919
* PowerController constructor.
2020
*
21-
* @param \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface $repository
21+
* @param \Pterodactyl\Repositories\Wings\DaemonPowerRepository $repository
2222
*/
23-
public function __construct(PowerRepositoryInterface $repository)
23+
public function __construct(DaemonPowerRepository $repository)
2424
{
2525
parent::__construct();
2626

@@ -31,16 +31,14 @@ public function __construct(PowerRepositoryInterface $repository)
3131
* Send a power action to a server.
3232
*
3333
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\SendPowerRequest $request
34+
* @param \Pterodactyl\Models\Server $server
3435
* @return \Illuminate\Http\Response
35-
*
36-
* @throws \Pterodactyl\Exceptions\Repository\Daemon\InvalidPowerSignalException
3736
*/
38-
public function index(SendPowerRequest $request): Response
37+
public function index(SendPowerRequest $request, Server $server): Response
3938
{
40-
$server = $request->getModel(Server::class);
41-
$token = $request->attributes->get('server_token');
42-
43-
$this->repository->setServer($server)->setToken($token)->sendSignal($request->input('signal'));
39+
$this->repository->setServer($server)->send(
40+
$request->input('signal')
41+
);
4442

4543
return $this->returnNoContent();
4644
}

app/Http/Controllers/Api/Client/Servers/ResourceUtilizationController.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,14 @@ public function __construct(DaemonServerRepository $repository)
3131
* Return the current resource utilization for a server.
3232
*
3333
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\GetServerRequest $request
34+
* @param \Pterodactyl\Models\Server $server
3435
* @return array
3536
*
3637
* @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException
3738
*/
38-
public function __invoke(GetServerRequest $request): array
39+
public function __invoke(GetServerRequest $request, Server $server): array
3940
{
40-
$stats = $this->repository
41-
->setServer($request->getModel(Server::class))
42-
->getDetails();
41+
$stats = $this->repository->setServer($server)->getDetails();
4342

4443
return $this->fractal->item($stats)
4544
->transformWith($this->getTransformer(StatsTransformer::class))

app/Http/Controllers/Api/Client/Servers/ServerController.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ class ServerController extends ClientApiController
1414
* client using the API.
1515
*
1616
* @param \Pterodactyl\Http\Requests\Api\Client\Servers\GetServerRequest $request
17+
* @param \Pterodactyl\Models\Server $server
1718
* @return array
1819
*/
19-
public function index(GetServerRequest $request): array
20+
public function index(GetServerRequest $request, Server $server): array
2021
{
21-
return $this->fractal->item($request->getModel(Server::class))
22+
return $this->fractal->item($server)
2223
->transformWith($this->getTransformer(ServerTransformer::class))
2324
->toArray();
2425
}

app/Http/Requests/Api/Application/ApplicationApiRequest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public function key(): ApiKey
8989
*
9090
* @param string $model
9191
* @return mixed
92+
* @deprecated
9293
*
9394
* @throws \Symfony\Component\Routing\Exception\InvalidParameterException
9495
*/

app/Repositories/Wings/DaemonPowerRepository.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,25 @@
22

33
namespace Pterodactyl\Repositories\Wings;
44

5+
use Webmozart\Assert\Assert;
6+
use Pterodactyl\Models\Server;
7+
use Psr\Http\Message\ResponseInterface;
8+
59
class DaemonPowerRepository extends DaemonRepository
610
{
11+
/**
12+
* Sends a power action to the server instance.
13+
*
14+
* @param string $action
15+
* @return \Psr\Http\Message\ResponseInterface
16+
*/
17+
public function send(string $action): ResponseInterface
18+
{
19+
Assert::isInstanceOf($this->server, Server::class);
20+
21+
return $this->getHttpClient()->post(
22+
sprintf('/api/servers/%s/power', $this->server->id),
23+
['json' => ['action' => $action]]
24+
);
25+
}
726
}

0 commit comments

Comments
 (0)