Version 5.1 - All the GraphQL #32
@ -9,6 +9,7 @@ parameters:
|
|||||||
- index.php
|
- index.php
|
||||||
ignoreErrors:
|
ignoreErrors:
|
||||||
- "#Offset 'fields' does not exist on array#"
|
- "#Offset 'fields' does not exist on array#"
|
||||||
|
- '#Function imagepalletetotruecolor not found#'
|
||||||
- '#Call to an undefined method Aura\\\Html\\\HelperLocator::[a-zA-Z0-9_]+\(\)#'
|
- '#Call to an undefined method Aura\\\Html\\\HelperLocator::[a-zA-Z0-9_]+\(\)#'
|
||||||
- '#Call to an undefined method Query\\QueryBuilderInterface::[a-zA-Z0-9_]+\(\)#'
|
- '#Call to an undefined method Query\\QueryBuilderInterface::[a-zA-Z0-9_]+\(\)#'
|
||||||
excludes_analyse:
|
excludes_analyse:
|
||||||
|
@ -116,10 +116,9 @@ abstract class APIRequestBuilder {
|
|||||||
* Set the request body
|
* Set the request body
|
||||||
*
|
*
|
||||||
* @param FormBody|string $body
|
* @param FormBody|string $body
|
||||||
* @throws \TypeError
|
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public function setBody($body): self
|
public function setBody(FormBody|string $body): self
|
||||||
{
|
{
|
||||||
$this->request->setBody($body);
|
$this->request->setBody($body);
|
||||||
return $this;
|
return $this;
|
||||||
@ -129,7 +128,6 @@ abstract class APIRequestBuilder {
|
|||||||
* Set body as form fields
|
* Set body as form fields
|
||||||
*
|
*
|
||||||
* @param array $fields Mapping of field names to values
|
* @param array $fields Mapping of field names to values
|
||||||
* @throws \TypeError
|
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public function setFormFields(array $fields): self
|
public function setFormFields(array $fields): self
|
||||||
|
@ -27,7 +27,7 @@ use DateTime;
|
|||||||
|
|
||||||
class AnimeListTransformer extends AbstractTransformer {
|
class AnimeListTransformer extends AbstractTransformer {
|
||||||
|
|
||||||
public function transform($item): AnimeListItem
|
public function transform(array|object $item): AnimeListItem
|
||||||
{
|
{
|
||||||
return AnimeListItem::from([]);
|
return AnimeListItem::from([]);
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ use DateTime;
|
|||||||
|
|
||||||
class MangaListTransformer extends AbstractTransformer {
|
class MangaListTransformer extends AbstractTransformer {
|
||||||
|
|
||||||
public function transform($item)
|
public function transform(array|object $item): MangaListItem
|
||||||
{
|
{
|
||||||
return MangaListItem::from([]);
|
return MangaListItem::from([]);
|
||||||
}
|
}
|
||||||
|
@ -58,10 +58,9 @@ trait CacheTrait {
|
|||||||
* @param string $key
|
* @param string $key
|
||||||
* @param callable $primer
|
* @param callable $primer
|
||||||
* @param array|null $primeArgs
|
* @param array|null $primeArgs
|
||||||
* @return mixed|null
|
* @return mixed
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getCached(string $key, callable $primer, ?array $primeArgs = [])
|
public function getCached(string $key, callable $primer, ?array $primeArgs = []): mixed
|
||||||
{
|
{
|
||||||
$value = $this->cache->get($key, NULL);
|
$value = $this->cache->get($key, NULL);
|
||||||
|
|
||||||
|
@ -37,12 +37,11 @@ use Aviat\AnimeClient\Enum\MediaType;
|
|||||||
use Aviat\AnimeClient\Kitsu as K;
|
use Aviat\AnimeClient\Kitsu as K;
|
||||||
use Aviat\AnimeClient\Types\Anime;
|
use Aviat\AnimeClient\Types\Anime;
|
||||||
use Aviat\AnimeClient\Types\MangaPage;
|
use Aviat\AnimeClient\Types\MangaPage;
|
||||||
use Aviat\Banker\Exception\InvalidArgumentException;
|
|
||||||
use Aviat\Ion\{
|
use Aviat\Ion\{
|
||||||
Di\ContainerAware,
|
Di\ContainerAware,
|
||||||
Json
|
Json
|
||||||
};
|
};
|
||||||
use Throwable;
|
use Generator;
|
||||||
use function Amp\Promise\wait;
|
use function Amp\Promise\wait;
|
||||||
use function Aviat\AnimeClient\getApiClient;
|
use function Aviat\AnimeClient\getApiClient;
|
||||||
|
|
||||||
@ -91,7 +90,6 @@ final class Model {
|
|||||||
* @param string $username
|
* @param string $username
|
||||||
* @param string $password
|
* @param string $password
|
||||||
* @return bool|array
|
* @return bool|array
|
||||||
* @throws Throwable
|
|
||||||
*/
|
*/
|
||||||
public function authenticate(string $username, string $password)
|
public function authenticate(string $username, string $password)
|
||||||
{
|
{
|
||||||
@ -134,7 +132,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string $token
|
* @param string $token
|
||||||
* @return bool|array
|
* @return bool|array
|
||||||
* @throws Throwable
|
|
||||||
*/
|
*/
|
||||||
public function reAuthenticate(string $token)
|
public function reAuthenticate(string $token)
|
||||||
{
|
{
|
||||||
@ -174,7 +171,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string|null $username
|
* @param string|null $username
|
||||||
* @return string
|
* @return string
|
||||||
* @throws \Psr\SimpleCache\InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getUserIdByUsername(string $username = NULL): string
|
public function getUserIdByUsername(string $username = NULL): string
|
||||||
{
|
{
|
||||||
@ -210,7 +206,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string $slug
|
* @param string $slug
|
||||||
* @return array
|
* @return array
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getPerson(string $slug): array
|
public function getPerson(string $slug): array
|
||||||
{
|
{
|
||||||
@ -289,8 +284,6 @@ final class Model {
|
|||||||
* Retrieve the data for the anime watch history page
|
* Retrieve the data for the anime watch history page
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
* @throws InvalidArgumentException
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
*/
|
||||||
public function getAnimeHistory(): array
|
public function getAnimeHistory(): array
|
||||||
{
|
{
|
||||||
@ -315,7 +308,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string $status - The watching status to filter the list with
|
* @param string $status - The watching status to filter the list with
|
||||||
* @return array
|
* @return array
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getAnimeList(string $status): array
|
public function getAnimeList(string $status): array
|
||||||
{
|
{
|
||||||
@ -354,7 +346,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string $status - Optional status to filter by
|
* @param string $status - Optional status to filter by
|
||||||
* @return int
|
* @return int
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getAnimeListCount(string $status = '') : int
|
public function getAnimeListCount(string $status = '') : int
|
||||||
{
|
{
|
||||||
@ -365,8 +356,6 @@ final class Model {
|
|||||||
* Get all the anime entries, that are organized for output to html
|
* Get all the anime entries, that are organized for output to html
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
* @throws ReflectionException
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getFullOrganizedAnimeList(): array
|
public function getFullOrganizedAnimeList(): array
|
||||||
{
|
{
|
||||||
@ -434,8 +423,6 @@ final class Model {
|
|||||||
* Retrieve the data for the manga read history page
|
* Retrieve the data for the manga read history page
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
* @throws InvalidArgumentException
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
*/
|
||||||
public function getMangaHistory(): array
|
public function getMangaHistory(): array
|
||||||
{
|
{
|
||||||
@ -458,7 +445,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string $status - The reading status by which to filter the list
|
* @param string $status - The reading status by which to filter the list
|
||||||
* @return array
|
* @return array
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getMangaList(string $status): array
|
public function getMangaList(string $status): array
|
||||||
{
|
{
|
||||||
@ -497,7 +483,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string $status - Optional status to filter by
|
* @param string $status - Optional status to filter by
|
||||||
* @return int
|
* @return int
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getMangaListCount(string $status = '') : int
|
public function getMangaListCount(string $status = '') : int
|
||||||
{
|
{
|
||||||
@ -508,8 +493,6 @@ final class Model {
|
|||||||
* Get all Manga lists
|
* Get all Manga lists
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
* @throws ReflectionException
|
|
||||||
* @throws InvalidArgumentException
|
|
||||||
*/
|
*/
|
||||||
public function getFullOrganizedMangaList(): array
|
public function getFullOrganizedMangaList(): array
|
||||||
{
|
{
|
||||||
@ -638,8 +621,6 @@ final class Model {
|
|||||||
*
|
*
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @return array
|
* @return array
|
||||||
* @throws InvalidArgumentException
|
|
||||||
* @throws Throwable
|
|
||||||
*/
|
*/
|
||||||
public function getSyncList(string $type): array
|
public function getSyncList(string $type): array
|
||||||
{
|
{
|
||||||
@ -831,7 +812,7 @@ final class Model {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getPages(callable $method, ...$args): ?\Generator
|
private function getPages(callable $method, mixed ...$args): ?Generator
|
||||||
{
|
{
|
||||||
$items = $method(...$args);
|
$items = $method(...$args);
|
||||||
|
|
||||||
|
@ -26,7 +26,6 @@ use Amp\Http\Client\Request;
|
|||||||
use Amp\Http\Client\Response;
|
use Amp\Http\Client\Response;
|
||||||
use Aviat\AnimeClient\Kitsu as K;
|
use Aviat\AnimeClient\Kitsu as K;
|
||||||
use Aviat\AnimeClient\API\APIRequestBuilder;
|
use Aviat\AnimeClient\API\APIRequestBuilder;
|
||||||
use Aviat\AnimeClient\API\FailedResponseException;
|
|
||||||
use Aviat\AnimeClient\Enum\EventType;
|
use Aviat\AnimeClient\Enum\EventType;
|
||||||
use Aviat\Ion\Di\ContainerAware;
|
use Aviat\Ion\Di\ContainerAware;
|
||||||
use Aviat\Ion\Di\ContainerInterface;
|
use Aviat\Ion\Di\ContainerInterface;
|
||||||
@ -157,7 +156,6 @@ final class RequestBuilder extends APIRequestBuilder {
|
|||||||
* @param string $name
|
* @param string $name
|
||||||
* @param array $variables
|
* @param array $variables
|
||||||
* @return array
|
* @return array
|
||||||
* @throws Throwable
|
|
||||||
*/
|
*/
|
||||||
public function mutate(string $name, array $variables = []): array
|
public function mutate(string $name, array $variables = []): array
|
||||||
{
|
{
|
||||||
@ -181,7 +179,6 @@ final class RequestBuilder extends APIRequestBuilder {
|
|||||||
* @param string $url
|
* @param string $url
|
||||||
* @param array $options
|
* @param array $options
|
||||||
* @return Response
|
* @return Response
|
||||||
* @throws \Throwable
|
|
||||||
*/
|
*/
|
||||||
public function getResponse(string $type, string $url, array $options = []): Response
|
public function getResponse(string $type, string $url, array $options = []): Response
|
||||||
{
|
{
|
||||||
@ -210,7 +207,7 @@ final class RequestBuilder extends APIRequestBuilder {
|
|||||||
public function queryRequest(string $name, array $variables = []): Request
|
public function queryRequest(string $name, array $variables = []): Request
|
||||||
{
|
{
|
||||||
$file = realpath("{$this->filePath}/Queries/{$name}.graphql");
|
$file = realpath("{$this->filePath}/Queries/{$name}.graphql");
|
||||||
if ( ! file_exists($file))
|
if ($file === FALSE || ! file_exists($file))
|
||||||
{
|
{
|
||||||
throw new LogicException('GraphQL query file does not exist.');
|
throw new LogicException('GraphQL query file does not exist.');
|
||||||
}
|
}
|
||||||
@ -240,12 +237,11 @@ final class RequestBuilder extends APIRequestBuilder {
|
|||||||
* @param string $name
|
* @param string $name
|
||||||
* @param array $variables
|
* @param array $variables
|
||||||
* @return Request
|
* @return Request
|
||||||
* @throws Throwable
|
|
||||||
*/
|
*/
|
||||||
public function mutateRequest (string $name, array $variables = []): Request
|
public function mutateRequest (string $name, array $variables = []): Request
|
||||||
{
|
{
|
||||||
$file = "{$this->filePath}/Mutations/{$name}.graphql";
|
$file = realpath("{$this->filePath}/Mutations/{$name}.graphql");
|
||||||
if ( ! file_exists($file))
|
if ($file === FALSE || ! file_exists($file))
|
||||||
{
|
{
|
||||||
throw new LogicException('GraphQL mutation file does not exist.');
|
throw new LogicException('GraphQL mutation file does not exist.');
|
||||||
}
|
}
|
||||||
@ -274,9 +270,6 @@ final class RequestBuilder extends APIRequestBuilder {
|
|||||||
* @param string $type
|
* @param string $type
|
||||||
* @param string $url
|
* @param string $url
|
||||||
* @param array $options
|
* @param array $options
|
||||||
* @throws JsonException
|
|
||||||
* @throws FailedResponseException
|
|
||||||
* @throws Throwable
|
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function request(string $type, string $url, array $options = []): array
|
private function request(string $type, string $url, array $options = []): array
|
||||||
|
@ -33,11 +33,12 @@ final class AnimeListTransformer extends AbstractTransformer {
|
|||||||
* Convert raw api response to a more
|
* Convert raw api response to a more
|
||||||
* logical and workable structure
|
* logical and workable structure
|
||||||
*
|
*
|
||||||
* @param array $item API library item
|
* @param array|object $item API library item
|
||||||
* @return AnimeListItem
|
* @return AnimeListItem
|
||||||
*/
|
*/
|
||||||
public function transform($item): AnimeListItem
|
public function transform(array|object $item): AnimeListItem
|
||||||
{
|
{
|
||||||
|
$item = (array)$item;
|
||||||
$animeId = $item['media']['id'];
|
$animeId = $item['media']['id'];
|
||||||
$anime = $item['media'];
|
$anime = $item['media'];
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ final class AnimeListTransformer extends AbstractTransformer {
|
|||||||
* @param array $item Transformed library item
|
* @param array $item Transformed library item
|
||||||
* @return FormItem API library item
|
* @return FormItem API library item
|
||||||
*/
|
*/
|
||||||
public function untransform($item): FormItem
|
public function untransform(array $item): FormItem
|
||||||
{
|
{
|
||||||
$privacy = (array_key_exists('private', $item) && $item['private']);
|
$privacy = (array_key_exists('private', $item) && $item['private']);
|
||||||
$rewatching = (array_key_exists('rewatching', $item) && $item['rewatching']);
|
$rewatching = (array_key_exists('rewatching', $item) && $item['rewatching']);
|
||||||
|
@ -29,11 +29,12 @@ final class AnimeTransformer extends AbstractTransformer {
|
|||||||
* Convert raw api response to a more
|
* Convert raw api response to a more
|
||||||
* logical and workable structure
|
* logical and workable structure
|
||||||
*
|
*
|
||||||
* @param array $item API library item
|
* @param array|object $item API library item
|
||||||
* @return AnimePage
|
* @return AnimePage
|
||||||
*/
|
*/
|
||||||
public function transform($item): AnimePage
|
public function transform(array|object $item): AnimePage
|
||||||
{
|
{
|
||||||
|
$item = (array)$item;
|
||||||
$base = $item['data']['findAnimeBySlug'] ?? $item['data']['findAnimeById'] ?? $item['data']['randomMedia'];
|
$base = $item['data']['findAnimeBySlug'] ?? $item['data']['findAnimeById'] ?? $item['data']['randomMedia'];
|
||||||
$characters = [];
|
$characters = [];
|
||||||
$links = [];
|
$links = [];
|
||||||
|
@ -28,12 +28,13 @@ use Locale;
|
|||||||
final class CharacterTransformer extends AbstractTransformer {
|
final class CharacterTransformer extends AbstractTransformer {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $characterData
|
* @param array|object $item
|
||||||
* @return Character
|
* @return Character
|
||||||
*/
|
*/
|
||||||
public function transform($characterData): Character
|
public function transform(array|object $item): Character
|
||||||
{
|
{
|
||||||
$data = $characterData['data']['findCharacterBySlug'] ?? [];
|
$item = (array)$item;
|
||||||
|
$data = $item['data']['findCharacterBySlug'] ?? [];
|
||||||
$castings = [];
|
$castings = [];
|
||||||
$media = [
|
$media = [
|
||||||
'anime' => [],
|
'anime' => [],
|
||||||
|
@ -65,7 +65,7 @@ abstract class HistoryTransformer {
|
|||||||
|
|
||||||
foreach ($base as $entry)
|
foreach ($base as $entry)
|
||||||
{
|
{
|
||||||
if ( ! (strtolower($entry['media']['__typename']) === $this->type))
|
if (strtolower($entry['media']['__typename']) !== $this->type)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -210,7 +210,7 @@ abstract class HistoryTransformer {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function transformUpdated($entry): HistoryItem
|
protected function transformUpdated(array $entry): HistoryItem
|
||||||
{
|
{
|
||||||
$id = $entry['media']['id'];
|
$id = $entry['media']['id'];
|
||||||
$data = $entry['media'];
|
$data = $entry['media'];
|
||||||
@ -242,7 +242,7 @@ abstract class HistoryTransformer {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $entry;
|
return HistoryItem::from($entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function linkTitle (array $data): string
|
protected function linkTitle (array $data): string
|
||||||
@ -257,6 +257,11 @@ abstract class HistoryTransformer {
|
|||||||
$date
|
$date
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ($dateTime === FALSE)
|
||||||
|
{
|
||||||
|
return new DateTimeImmutable();
|
||||||
|
}
|
||||||
|
|
||||||
return $dateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
return $dateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,7 +270,7 @@ abstract class HistoryTransformer {
|
|||||||
return "/{$this->type}/details/{$data['slug']}";
|
return "/{$this->type}/details/{$data['slug']}";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function isReconsuming ($entry): bool
|
protected function isReconsuming (array $entry): bool
|
||||||
{
|
{
|
||||||
return $entry['libraryEntry']['reconsuming'];
|
return $entry['libraryEntry']['reconsuming'];
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ use Aviat\Ion\Type\StringType;
|
|||||||
*/
|
*/
|
||||||
final class LibraryEntryTransformer extends AbstractTransformer
|
final class LibraryEntryTransformer extends AbstractTransformer
|
||||||
{
|
{
|
||||||
public function transform($item)
|
public function transform(array|object $item): AnimeListItem|MangaListItem
|
||||||
{
|
{
|
||||||
$item = (array)$item;
|
$item = (array)$item;
|
||||||
$type = $item['media']['type'] ?? '';
|
$type = $item['media']['type'] ?? '';
|
||||||
@ -38,17 +38,12 @@ final class LibraryEntryTransformer extends AbstractTransformer
|
|||||||
sort($genres);
|
sort($genres);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (strtolower($type))
|
return match (strtolower($type))
|
||||||
{
|
{
|
||||||
case 'anime':
|
'anime' => $this->animeTransform($item, $genres),
|
||||||
return $this->animeTransform($item, $genres);
|
'manga' => $this->mangaTransform($item, $genres),
|
||||||
|
default => AnimeListItem::from([]),
|
||||||
case 'manga':
|
};
|
||||||
return $this->mangaTransform($item, $genres);
|
|
||||||
|
|
||||||
default:
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function animeTransform(array $item, array $genres): AnimeListItem
|
private function animeTransform(array $item, array $genres): AnimeListItem
|
||||||
|
@ -31,11 +31,12 @@ final class MangaListTransformer extends AbstractTransformer {
|
|||||||
/**
|
/**
|
||||||
* Remap zipped anime data to a more logical form
|
* Remap zipped anime data to a more logical form
|
||||||
*
|
*
|
||||||
* @param array $item manga entry item
|
* @param array|object $item manga entry item
|
||||||
* @return MangaListItem
|
* @return MangaListItem
|
||||||
*/
|
*/
|
||||||
public function transform($item): MangaListItem
|
public function transform(array|object $item): MangaListItem
|
||||||
{
|
{
|
||||||
|
$item = (array)$item;
|
||||||
$mangaId = $item['media']['id'];
|
$mangaId = $item['media']['id'];
|
||||||
$manga = $item['media'];
|
$manga = $item['media'];
|
||||||
|
|
||||||
|
@ -29,11 +29,12 @@ final class MangaTransformer extends AbstractTransformer {
|
|||||||
* Convert raw api response to a more
|
* Convert raw api response to a more
|
||||||
* logical and workable structure
|
* logical and workable structure
|
||||||
*
|
*
|
||||||
* @param array $item API library item
|
* @param array|object $item API library item
|
||||||
* @return MangaPage
|
* @return MangaPage
|
||||||
*/
|
*/
|
||||||
public function transform($item): MangaPage
|
public function transform(array|object $item): MangaPage
|
||||||
{
|
{
|
||||||
|
$item = (array)$item;
|
||||||
$base = $item['data']['findMangaBySlug'] ?? $item['data']['findMangaById'] ?? $item['data']['randomMedia'];
|
$base = $item['data']['findMangaBySlug'] ?? $item['data']['findMangaById'] ?? $item['data']['randomMedia'];
|
||||||
$characters = [];
|
$characters = [];
|
||||||
$links = [];
|
$links = [];
|
||||||
|
@ -26,12 +26,13 @@ use Aviat\Ion\Transformer\AbstractTransformer;
|
|||||||
final class PersonTransformer extends AbstractTransformer {
|
final class PersonTransformer extends AbstractTransformer {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array|object $personData
|
* @param array|object $item
|
||||||
* @return Person
|
* @return Person
|
||||||
*/
|
*/
|
||||||
public function transform($personData): Person
|
public function transform(array|object $item): Person
|
||||||
{
|
{
|
||||||
$data = $personData['data']['findPersonBySlug'] ?? [];
|
$item = (array)$item;
|
||||||
|
$data = $item['data']['findPersonBySlug'] ?? [];
|
||||||
$canonicalName = $data['names']['localized'][$data['names']['canonical']]
|
$canonicalName = $data['names']['localized'][$data['names']['canonical']]
|
||||||
?? array_shift($data['names']['localized']);
|
?? array_shift($data['names']['localized']);
|
||||||
|
|
||||||
|
@ -29,9 +29,10 @@ use Aviat\Ion\Transformer\AbstractTransformer;
|
|||||||
* @return User
|
* @return User
|
||||||
*/
|
*/
|
||||||
final class UserTransformer extends AbstractTransformer {
|
final class UserTransformer extends AbstractTransformer {
|
||||||
public function transform($profileData): User
|
public function transform(array|object $item): User
|
||||||
{
|
{
|
||||||
$base = $profileData['data']['findProfileBySlug'] ?? [];
|
$item = (array)$item;
|
||||||
|
$base = $item['data']['findProfileBySlug'] ?? [];
|
||||||
$favorites = $base['favorites']['nodes'] ?? [];
|
$favorites = $base['favorites']['nodes'] ?? [];
|
||||||
$stats = $base['stats'] ?? [];
|
$stats = $base['stats'] ?? [];
|
||||||
$waifu = (array_key_exists('waifu', $base)) ? [
|
$waifu = (array_key_exists('waifu', $base)) ? [
|
||||||
@ -71,7 +72,7 @@ final class UserTransformer extends AbstractTransformer {
|
|||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function organizeStats(array $stats, $data = []): array
|
private function organizeStats(array $stats, array $data = []): array
|
||||||
{
|
{
|
||||||
$animeStats = [];
|
$animeStats = [];
|
||||||
$mangaStats = [];
|
$mangaStats = [];
|
||||||
|
@ -28,7 +28,7 @@ abstract class AbstractTransformer implements TransformerInterface {
|
|||||||
* @param array|object $item
|
* @param array|object $item
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
abstract public function transform($item);
|
abstract public function transform(array|object $item): mixed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transform a set of structures
|
* Transform a set of structures
|
||||||
|
@ -27,5 +27,5 @@ interface TransformerInterface {
|
|||||||
* @param array|object $item
|
* @param array|object $item
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function transform($item);
|
public function transform(array|object $item): mixed;
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user