Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/app/Http/Controllers/Api/Client/ClientApiController.php
10279 views
1
<?php
2
3
namespace Pterodactyl\Http\Controllers\Api\Client;
4
5
use Webmozart\Assert\Assert;
6
use Pterodactyl\Transformers\Api\Client\BaseClientTransformer;
7
use Pterodactyl\Http\Controllers\Api\Application\ApplicationApiController;
8
9
abstract class ClientApiController extends ApplicationApiController
10
{
11
/**
12
* Returns only the includes which are valid for the given transformer.
13
*/
14
protected function getIncludesForTransformer(BaseClientTransformer $transformer, array $merge = []): array
15
{
16
$filtered = array_filter($this->parseIncludes(), function ($datum) use ($transformer) {
17
return in_array($datum, $transformer->getAvailableIncludes());
18
});
19
20
return array_merge($filtered, $merge);
21
}
22
23
/**
24
* Returns the parsed includes for this request.
25
*/
26
protected function parseIncludes(): array
27
{
28
$includes = $this->request->query('include') ?? [];
29
30
if (!is_string($includes)) {
31
return $includes;
32
}
33
34
return array_map(function ($item) {
35
return trim($item);
36
}, explode(',', $includes));
37
}
38
39
/**
40
* Return an instance of an application transformer.
41
*
42
* @template T of \Pterodactyl\Transformers\Api\Client\BaseClientTransformer
43
*
44
* @param class-string<T> $abstract
45
*
46
* @return T
47
*
48
* @noinspection PhpDocSignatureInspection
49
*/
50
public function getTransformer(string $abstract)
51
{
52
Assert::subclassOf($abstract, BaseClientTransformer::class); // @phpstan-ignore staticMethod.alreadyNarrowedType
53
54
return $abstract::fromRequest($this->request);
55
}
56
}
57
58