. * * This software is licensed under the terms of the MIT license. * https://opensource.org/licenses/MIT */ namespace Pterodactyl\Http\Controllers\Admin\Nests; use Pterodactyl\Models\Egg; use Illuminate\Http\RedirectResponse; use Prologue\Alerts\AlertsMessageBag; use Pterodactyl\Http\Controllers\Controller; use Symfony\Component\HttpFoundation\Response; use Pterodactyl\Services\Eggs\Sharing\EggExporterService; use Pterodactyl\Services\Eggs\Sharing\EggImporterService; use Pterodactyl\Http\Requests\Admin\Egg\EggImportFormRequest; class EggShareController extends Controller { /** * @var \Prologue\Alerts\AlertsMessageBag */ protected $alert; /** * @var \Pterodactyl\Services\Eggs\Sharing\EggExporterService */ protected $exporterService; /** * @var \Pterodactyl\Services\Eggs\Sharing\EggImporterService */ protected $importerService; /** * OptionShareController constructor. * * @param \Prologue\Alerts\AlertsMessageBag $alert * @param \Pterodactyl\Services\Eggs\Sharing\EggExporterService $exporterService * @param \Pterodactyl\Services\Eggs\Sharing\EggImporterService $importerService */ public function __construct( AlertsMessageBag $alert, EggExporterService $exporterService, EggImporterService $importerService ) { $this->alert = $alert; $this->exporterService = $exporterService; $this->importerService = $importerService; } /** * @param \Pterodactyl\Models\Egg $egg * @return \Symfony\Component\HttpFoundation\Response * * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException */ public function export(Egg $egg): Response { return response($this->exporterService->handle($egg->id), 200, [ 'Content-Transfer-Encoding' => 'binary', 'Content-Description' => 'File Transfer', 'Content-Disposition' => 'attachment; filename=egg-' . kebab_case($egg->name) . '.json', 'Content-Type' => 'application/json', ]); } /** * Import a new service option using an XML file. * * @param \Pterodactyl\Http\Requests\Admin\Egg\EggImportFormRequest $request * @return \Illuminate\Http\RedirectResponse * * @throws \Pterodactyl\Exceptions\Model\DataValidationException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException * @throws \Pterodactyl\Exceptions\Service\Pack\InvalidFileUploadException */ public function import(EggImportFormRequest $request): RedirectResponse { $egg = $this->importerService->handle($request->file('import_file'), $request->input('import_to_nest')); $this->alert->success(trans('admin/nests.eggs.notices.imported'))->flash(); return redirect()->route('admin.nests.egg.view', ['egg' => $egg->id]); } }