Skip to content

Commit 81f7734

Browse files
committed
Update endpoints for managing backups
1 parent 0a20c6b commit 81f7734

File tree

4 files changed

+60
-71
lines changed

4 files changed

+60
-71
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
namespace Pterodactyl\Http\Controllers\Api\Remote\Backups;
4+
5+
use Carbon\Carbon;
6+
use Illuminate\Http\JsonResponse;
7+
use Pterodactyl\Http\Controllers\Controller;
8+
use Pterodactyl\Repositories\Eloquent\BackupRepository;
9+
use Pterodactyl\Http\Requests\Api\Remote\ReportBackupCompleteRequest;
10+
11+
class BackupStatusController extends Controller
12+
{
13+
/**
14+
* @var \Pterodactyl\Repositories\Eloquent\BackupRepository
15+
*/
16+
private $repository;
17+
18+
/**
19+
* BackupStatusController constructor.
20+
*
21+
* @param \Pterodactyl\Repositories\Eloquent\BackupRepository $repository
22+
*/
23+
public function __construct(BackupRepository $repository)
24+
{
25+
$this->repository = $repository;
26+
}
27+
28+
/**
29+
* Handles updating the state of a backup.
30+
*
31+
* @param \Pterodactyl\Http\Requests\Api\Remote\ReportBackupCompleteRequest $request
32+
* @param string $backup
33+
* @return \Illuminate\Http\JsonResponse
34+
*
35+
* @throws \Pterodactyl\Exceptions\Model\DataValidationException
36+
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
37+
*/
38+
public function __invoke(ReportBackupCompleteRequest $request, string $backup)
39+
{
40+
/** @var \Pterodactyl\Models\Backup $backup */
41+
$backup = $this->repository->findFirstWhere([['uuid', '=', $backup]]);
42+
43+
if ($request->input('successful')) {
44+
$this->repository->update($backup->id, [
45+
'sha256_hash' => $request->input('checksum'),
46+
'bytes' => $request->input('size'),
47+
'completed_at' => Carbon::now(),
48+
], true, true);
49+
} else {
50+
$this->repository->delete($backup->id);
51+
}
52+
53+
return JsonResponse::create([], JsonResponse::HTTP_NO_CONTENT);
54+
}
55+
}

app/Http/Controllers/Api/Remote/Servers/ServerBackupController.php

Lines changed: 0 additions & 68 deletions
This file was deleted.

app/Http/Requests/Api/Remote/ReportBackupCompleteRequest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public function rules()
1313
{
1414
return [
1515
'successful' => 'boolean',
16-
'sha256_hash' => 'string|required_if:successful,true',
17-
'file_size' => 'numeric|required_if:successful,true',
16+
'checksum' => 'string|required_if:successful,true',
17+
'size' => 'numeric|required_if:successful,true',
1818
];
1919
}
2020
}

routes/api-remote.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
Route::post('/archive', 'Servers\ServerTransferController@archive');
1919
Route::get('/transfer/failure', 'Servers\ServerTransferController@failure');
2020
Route::get('/transfer/success', 'Servers\ServerTransferController@success');
21+
});
2122

22-
Route::post('/backup/{backup}', 'Servers\ServerBackupController');
23+
Route::group(['prefix' => '/backups'], function () {
24+
Route::post('/{backup}', 'Backups\BackupStatusController');
2325
});

0 commit comments

Comments
 (0)