Path: blob/1.0-develop/app/Http/Controllers/Admin/Nests/EggShareController.php
10280 views
<?php12namespace Pterodactyl\Http\Controllers\Admin\Nests;34use Pterodactyl\Models\Egg;5use Illuminate\Http\RedirectResponse;6use Prologue\Alerts\AlertsMessageBag;7use Pterodactyl\Http\Controllers\Controller;8use Symfony\Component\HttpFoundation\Response;9use Pterodactyl\Services\Eggs\Sharing\EggExporterService;10use Pterodactyl\Services\Eggs\Sharing\EggImporterService;11use Pterodactyl\Http\Requests\Admin\Egg\EggImportFormRequest;12use Pterodactyl\Services\Eggs\Sharing\EggUpdateImporterService;1314class EggShareController extends Controller15{16/**17* EggShareController constructor.18*/19public function __construct(20protected AlertsMessageBag $alert,21protected EggExporterService $exporterService,22protected EggImporterService $importerService,23protected EggUpdateImporterService $updateImporterService,24) {25}2627/**28* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException29*/30public function export(Egg $egg): Response31{32$filename = trim(preg_replace('/\W/', '-', kebab_case($egg->name)), '-');3334return response($this->exporterService->handle($egg->id), 200, [35'Content-Transfer-Encoding' => 'binary',36'Content-Description' => 'File Transfer',37'Content-Disposition' => 'attachment; filename=egg-' . $filename . '.json',38'Content-Type' => 'application/json',39]);40}4142/**43* Import a new service option using an XML file.44*45* @throws \Pterodactyl\Exceptions\Model\DataValidationException46* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException47* @throws \Pterodactyl\Exceptions\Service\Egg\BadJsonFormatException48* @throws \Pterodactyl\Exceptions\Service\InvalidFileUploadException49*/50public function import(EggImportFormRequest $request): RedirectResponse51{52$egg = $this->importerService->handle($request->file('import_file'), $request->input('import_to_nest'));53$this->alert->success(trans('admin/nests.eggs.notices.imported'))->flash();5455return redirect()->route('admin.nests.egg.view', ['egg' => $egg->id]);56}5758/**59* Update an existing Egg using a new imported file.60*61* @throws \Pterodactyl\Exceptions\Model\DataValidationException62* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException63* @throws \Pterodactyl\Exceptions\Service\Egg\BadJsonFormatException64* @throws \Pterodactyl\Exceptions\Service\InvalidFileUploadException65*/66public function update(EggImportFormRequest $request, Egg $egg): RedirectResponse67{68$this->updateImporterService->handle($egg, $request->file('import_file'));69$this->alert->success(trans('admin/nests.eggs.notices.updated_via_import'))->flash();7071return redirect()->route('admin.nests.egg.view', ['egg' => $egg]);72}73}747576