repository = $repository; $this->nestCreationService = $nestCreationService; $this->nestDeletionService = $nestDeletionService; $this->nestUpdateService = $nestUpdateService; } /** * Return all Nests that exist on the Panel. * * @param \Pterodactyl\Http\Requests\Api\Application\Nests\GetNestsRequest $request * * @return array * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function index(GetNestsRequest $request): array { $perPage = $request->query('per_page', 10); if ($perPage < 1) { $perPage = 10; } elseif ($perPage > 100) { throw new BadRequestHttpException('"per_page" query parameter must be below 100.'); } $nests = $this->repository->paginated($perPage); return $this->fractal->collection($nests) ->transformWith($this->getTransformer(NestTransformer::class)) ->toArray(); } /** * Return information about a single Nest model. * * @param \Pterodactyl\Http\Requests\Api\Application\Nests\GetNestRequest $request * @param \Pterodactyl\Models\Nest $nest * * @return array * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function view(GetNestRequest $request, Nest $nest): array { return $this->fractal->item($nest) ->transformWith($this->getTransformer(NestTransformer::class)) ->toArray(); } /** * Creates a new nest. * * @param \Pterodactyl\Http\Requests\Api\Application\Nests\StoreNestRequest $request * * @return array * @throws \Illuminate\Contracts\Container\BindingResolutionException * @throws \Pterodactyl\Exceptions\Model\DataValidationException */ public function store(StoreNestRequest $request): array { $nest = $this->nestCreationService->handle($request->validated()); return $this->fractal->item($nest) ->transformWith($this->getTransformer(NestTransformer::class)) ->toArray(); } /** * Updates an existing nest. * * @param \Pterodactyl\Http\Requests\Api\Application\Nests\UpdateNestRequest $request * @param \Pterodactyl\Models\Nest $nest * * @return array * @throws \Illuminate\Contracts\Container\BindingResolutionException * @throws \Pterodactyl\Exceptions\Model\DataValidationException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException */ public function update(UpdateNestRequest $request, Nest $nest): array { $this->nestUpdateService->handle($nest->id, $request->validated()); return $this->fractal->item($nest) ->transformWith($this->getTransformer(NestTransformer::class)) ->toArray(); } /** * Deletes an existing nest. * * @param \Pterodactyl\Http\Requests\Api\Application\Nests\DeleteNestRequest $request * @param \Pterodactyl\Models\Nest $nest * * @return \Illuminate\Http\JsonResponse * @throws \Pterodactyl\Exceptions\Service\HasActiveServersException */ public function delete(DeleteNestRequest $request, Nest $nest): JsonResponse { $this->nestDeletionService->handle($nest->id); return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT); } }