assignmentService = $assignmentService; $this->deletionService = $deletionService; } /** * Return all of the allocations that exist for a given node. * * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function index(GetAllocationsRequest $request, Node $node): array { $perPage = $request->query('per_page', 10); if ($perPage < 1 || $perPage > 100) { throw new QueryValueOutOfRangeHttpException('per_page', 1, 100); } $allocations = $node->allocations()->paginate($perPage); return $this->fractal->collection($allocations) ->transformWith($this->getTransformer(AllocationTransformer::class)) ->toArray(); } /** * Store new allocations for a given node. * * @throws \Pterodactyl\Exceptions\DisplayException * @throws \Pterodactyl\Exceptions\Service\Allocation\CidrOutOfRangeException * @throws \Pterodactyl\Exceptions\Service\Allocation\InvalidPortMappingException * @throws \Pterodactyl\Exceptions\Service\Allocation\PortOutOfRangeException * @throws \Pterodactyl\Exceptions\Service\Allocation\TooManyPortsInRangeException */ public function store(StoreAllocationRequest $request, Node $node): Response { $this->assignmentService->handle($node, $request->validated()); return $this->returnNoContent(); } /** * Delete a specific allocation from the Panel. * * @throws \Pterodactyl\Exceptions\Service\Allocation\ServerUsingAllocationException */ public function delete(DeleteAllocationRequest $request, Node $node, Allocation $allocation): Response { $this->deletionService->handle($allocation); return $this->returnNoContent(); } }