query('per_page', 10); if ($perPage < 1) { $perPage = 10; } elseif ($perPage > 100) { throw new BadRequestHttpException('"per_page" query parameter must be below 100.'); } $mounts = QueryBuilder::for(Mount::query()) ->allowedFilters(['name', 'host']) ->allowedSorts(['id', 'name', 'host']) ->paginate($perPage); return $this->fractal->collection($mounts) ->transformWith($this->getTransformer(MountTransformer::class)) ->toArray(); } /** * Returns a single mount. * * @param \Pterodactyl\Http\Requests\Api\Application\Mounts\GetMountRequest $request * @param \Pterodactyl\Models\Mount $mount * * @return array * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function view(GetMountRequest $request, Mount $mount): array { return $this->fractal->item($mount) ->transformWith($this->getTransformer(MountTransformer::class)) ->toArray(); } /** * Creates a new mount. * * @param \Pterodactyl\Http\Requests\Api\Application\Mounts\StoreMountRequest $request * * @return \Illuminate\Http\JsonResponse * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function store(StoreMountRequest $request): JsonResponse { $mount = Mount::query()->create($request->validated()); return $this->fractal->item($mount) ->transformWith($this->getTransformer(MountTransformer::class)) ->respond(JsonResponse::HTTP_CREATED); } /** * Updates a mount. * * @param \Pterodactyl\Http\Requests\Api\Application\Mounts\UpdateMountRequest $request * @param \Pterodactyl\Models\Mount $mount * * @return array * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function update(UpdateMountRequest $request, Mount $mount): array { $mount->update($request->validated()); return $this->fractal->item($mount) ->transformWith($this->getTransformer(MountTransformer::class)) ->toArray(); } /** * Deletes a mount. * * @param \Pterodactyl\Http\Requests\Api\Application\Mounts\DeleteMountRequest $request * @param \Pterodactyl\Models\Mount $mount * * @return \Illuminate\Http\JsonResponse * @throws \Exception */ public function delete(DeleteMountRequest $request, Mount $mount): JsonResponse { $mount->delete(); return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT); } }