Path: blob/1.0-develop/app/Http/Controllers/Api/Client/ClientApiController.php
10279 views
<?php12namespace Pterodactyl\Http\Controllers\Api\Client;34use Webmozart\Assert\Assert;5use Pterodactyl\Transformers\Api\Client\BaseClientTransformer;6use Pterodactyl\Http\Controllers\Api\Application\ApplicationApiController;78abstract class ClientApiController extends ApplicationApiController9{10/**11* Returns only the includes which are valid for the given transformer.12*/13protected function getIncludesForTransformer(BaseClientTransformer $transformer, array $merge = []): array14{15$filtered = array_filter($this->parseIncludes(), function ($datum) use ($transformer) {16return in_array($datum, $transformer->getAvailableIncludes());17});1819return array_merge($filtered, $merge);20}2122/**23* Returns the parsed includes for this request.24*/25protected function parseIncludes(): array26{27$includes = $this->request->query('include') ?? [];2829if (!is_string($includes)) {30return $includes;31}3233return array_map(function ($item) {34return trim($item);35}, explode(',', $includes));36}3738/**39* Return an instance of an application transformer.40*41* @template T of \Pterodactyl\Transformers\Api\Client\BaseClientTransformer42*43* @param class-string<T> $abstract44*45* @return T46*47* @noinspection PhpDocSignatureInspection48*/49public function getTransformer(string $abstract)50{51Assert::subclassOf($abstract, BaseClientTransformer::class); // @phpstan-ignore staticMethod.alreadyNarrowedType5253return $abstract::fromRequest($this->request);54}55}565758