Path: blob/1.0-develop/app/Http/Controllers/Api/Application/ApplicationApiController.php
10279 views
<?php12namespace Pterodactyl\Http\Controllers\Api\Application;34use Illuminate\Http\Request;5use Webmozart\Assert\Assert;6use Illuminate\Http\Response;7use Illuminate\Support\Collection;8use Illuminate\Container\Container;9use Pterodactyl\Http\Controllers\Controller;10use Pterodactyl\Extensions\Spatie\Fractalistic\Fractal;11use Pterodactyl\Transformers\Api\Application\BaseTransformer;1213abstract class ApplicationApiController extends Controller14{15protected Request $request;1617protected Fractal $fractal;1819/**20* ApplicationApiController constructor.21*/22public function __construct()23{24Container::getInstance()->call([$this, 'loadDependencies']);2526// Parse all the includes to use on this request.27$input = $this->request->input('include', []);28$input = is_array($input) ? $input : explode(',', $input);2930$includes = (new Collection($input))->map(function ($value) {31return trim($value);32})->filter()->toArray();3334$this->fractal->parseIncludes($includes);35$this->fractal->limitRecursion(2);36}3738/**39* Perform dependency injection of certain classes needed for core functionality40* without littering the constructors of classes that extend this abstract.41*/42public function loadDependencies(Fractal $fractal, Request $request)43{44$this->fractal = $fractal;45$this->request = $request;46}4748/**49* Return an instance of an application transformer.50*51* @template T of \Pterodactyl\Transformers\Api\Application\BaseTransformer52*53* @param class-string<T> $abstract54*55* @return T56*57* @noinspection PhpDocSignatureInspection58*/59public function getTransformer(string $abstract)60{61Assert::subclassOf($abstract, BaseTransformer::class); // @phpstan-ignore staticMethod.alreadyNarrowedType6263return $abstract::fromRequest($this->request);64}6566/**67* Return an HTTP/204 response for the API.68*/69protected function returnNoContent(): Response70{71return new Response('', Response::HTTP_NO_CONTENT);72}73}747576