call([$this, 'handle']); } } /** * Set the HTTP request class being used for this request. * * @param \Pterodactyl\Models\ApiKey $key * @return $this */ public function setKey(ApiKey $key) { $this->key = $key; return $this; } /** * Return the request instance being used for this transformer. * * @return \Pterodactyl\Models\ApiKey */ public function getKey(): ApiKey { return $this->key; } /** * Determine if the API key loaded onto the transformer has permission * to access a different resource. This is used when including other * models on a transformation request. * * @param string $resource * @return bool */ protected function authorize(string $resource): bool { return AdminAcl::check($this->getKey(), $resource, AdminAcl::READ); } /** * Create a new instance of the transformer and pass along the currently * set API key. * * @param string $abstract * @param array $parameters * @return \Pterodactyl\Transformers\Api\Application\BaseTransformer * * @throws \Pterodactyl\Exceptions\Transformer\InvalidTransformerLevelException */ protected function makeTransformer(string $abstract, array $parameters = []) { /** @var \Pterodactyl\Transformers\Api\Application\BaseTransformer $transformer */ $transformer = Container::getInstance()->makeWith($abstract, $parameters); $transformer->setKey($this->getKey()); if (! $transformer instanceof self || $transformer instanceof BaseClientTransformer) { throw new InvalidTransformerLevelException('Calls to ' . __METHOD__ . ' must return a transformer that is an instance of ' . __CLASS__); } return $transformer; } /** * Return an ISO-8601 formatted timestamp to use in the API response. * * @param string $timestamp * @return string */ protected function formatTimestamp(string $timestamp): string { return Chronos::createFromFormat(Chronos::DEFAULT_TO_STRING_FORMAT, $timestamp) ->setTimezone(self::RESPONSE_TIMEZONE) ->toIso8601String(); } }