mirror of
https://github.com/snipe/snipe-it.git
synced 2025-03-05 20:52:15 -08:00
Merge pull request #14297 from snipe/feature/sc-24855
Added `/backups/latest` to API endpoint
This commit is contained in:
commit
d7254053b6
|
@ -148,7 +148,7 @@ class SettingsController extends Controller
|
||||||
*
|
*
|
||||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||||
* @since [v3.0]
|
* @since [v3.0]
|
||||||
* @return Redirect
|
* @return JsonResponse
|
||||||
*/
|
*/
|
||||||
public function ajaxTestEmail()
|
public function ajaxTestEmail()
|
||||||
{
|
{
|
||||||
|
@ -170,7 +170,7 @@ class SettingsController extends Controller
|
||||||
*
|
*
|
||||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||||
* @since [v5.0.0]
|
* @since [v5.0.0]
|
||||||
* @return Response
|
* @return JsonResponse
|
||||||
*/
|
*/
|
||||||
public function purgeBarcodes()
|
public function purgeBarcodes()
|
||||||
{
|
{
|
||||||
|
@ -211,7 +211,7 @@ class SettingsController extends Controller
|
||||||
* @author [A. Gianotto] [<snipe@snipe.net>]
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
||||||
* @since [v5.0.0]
|
* @since [v5.0.0]
|
||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @return array
|
* @return array | JsonResponse
|
||||||
*/
|
*/
|
||||||
public function showLoginAttempts(Request $request)
|
public function showLoginAttempts(Request $request)
|
||||||
{
|
{
|
||||||
|
@ -229,6 +229,12 @@ class SettingsController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lists backup files
|
||||||
|
*
|
||||||
|
* @author [A. Gianotto]
|
||||||
|
* @return array | JsonResponse
|
||||||
|
*/
|
||||||
public function listBackups() {
|
public function listBackups() {
|
||||||
$settings = Setting::getSettings();
|
$settings = Setting::getSettings();
|
||||||
$path = 'app/backups';
|
$path = 'app/backups';
|
||||||
|
@ -255,7 +261,6 @@ class SettingsController extends Controller
|
||||||
$count++;
|
$count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,6 +270,14 @@ class SettingsController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Downloads a backup file.
|
||||||
|
* We use response()->download() here instead of Storage::download() because Storage::download()
|
||||||
|
* exhausts memory on larger files.
|
||||||
|
*
|
||||||
|
* @author [A. Gianotto]
|
||||||
|
* @return JsonResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse
|
||||||
|
*/
|
||||||
public function downloadBackup($file) {
|
public function downloadBackup($file) {
|
||||||
|
|
||||||
$path = storage_path('app/backups');
|
$path = storage_path('app/backups');
|
||||||
|
@ -277,4 +290,36 @@ class SettingsController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines and downloads the latest backup
|
||||||
|
*
|
||||||
|
* @author [A. Gianotto]
|
||||||
|
* @since [v6.3.1]
|
||||||
|
* @return JsonResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse
|
||||||
|
*/
|
||||||
|
public function downloadLatestBackup() {
|
||||||
|
|
||||||
|
$fileData = collect();
|
||||||
|
foreach (Storage::files('app/backups') as $file) {
|
||||||
|
if (pathinfo($file, PATHINFO_EXTENSION) == 'zip') {
|
||||||
|
$fileData->push([
|
||||||
|
'file' => $file,
|
||||||
|
'date' => Storage::lastModified($file)
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$newest = $fileData->sortByDesc('date')->first();
|
||||||
|
if (Storage::exists($newest['file'])) {
|
||||||
|
$headers = ['ContentType' => 'application/zip'];
|
||||||
|
return response()->download(storage_path($newest['file']), basename($newest['file']), $headers);
|
||||||
|
} else {
|
||||||
|
return response()->json(Helper::formatStandardApiResponse('error', null, trans('general.file_not_found')), 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -828,6 +828,13 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'throttle:api']], functi
|
||||||
]
|
]
|
||||||
)->name('api.settings.backups.index');
|
)->name('api.settings.backups.index');
|
||||||
|
|
||||||
|
Route::get('backups/download/latest',
|
||||||
|
[
|
||||||
|
Api\SettingsController::class,
|
||||||
|
'downloadLatestBackup'
|
||||||
|
]
|
||||||
|
)->name('api.settings.backups.latest');
|
||||||
|
|
||||||
Route::get('backups/download/{file}',
|
Route::get('backups/download/{file}',
|
||||||
[
|
[
|
||||||
Api\SettingsController::class,
|
Api\SettingsController::class,
|
||||||
|
|
Loading…
Reference in a new issue