<?php namespace Pterodactyl\Http\Controllers\Api\Application\Servers; use Pterodactyl\Models\Server; use Pterodactyl\Services\Servers\BuildModificationService; use Pterodactyl\Services\Servers\DetailsModificationService; use Pterodactyl\Transformers\Api\Application\ServerTransformer; use Pterodactyl\Http\Controllers\Api\Application\ApplicationApiController; use Pterodactyl\Http\Requests\Api\Application\Servers\UpdateServerDetailsRequest; use Pterodactyl\Http\Requests\Api\Application\Servers\UpdateServerBuildConfigurationRequest; class ServerDetailsController extends ApplicationApiController { /** * ServerDetailsController constructor. */ public function __construct( private BuildModificationService $buildModificationService, private DetailsModificationService $detailsModificationService ) { parent::__construct(); } /** * Update the details for a specific server. * * @throws \Pterodactyl\Exceptions\DisplayException * @throws \Pterodactyl\Exceptions\Model\DataValidationException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException */ public function details(UpdateServerDetailsRequest $request, Server $server): array { $updated = $this->detailsModificationService->returnUpdatedModel()->handle( $server, $request->validated() ); return $this->fractal->item($updated) ->transformWith($this->getTransformer(ServerTransformer::class)) ->toArray(); } /** * Update the build details for a specific server. * * @throws \Pterodactyl\Exceptions\DisplayException * @throws \Pterodactyl\Exceptions\Model\DataValidationException * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException */ public function build(UpdateServerBuildConfigurationRequest $request, Server $server): array { $server = $this->buildModificationService->handle($server, $request->validated()); return $this->fractal->item($server) ->transformWith($this->getTransformer(ServerTransformer::class)) ->toArray(); } }