Version 5.1 - All the GraphQL #32
@ -61,7 +61,7 @@ $overrideConfig = file_exists($overrideFile)
|
|||||||
|
|
||||||
$configArray = array_replace_recursive($baseConfig, $config, $overrideConfig);
|
$configArray = array_replace_recursive($baseConfig, $config, $overrideConfig);
|
||||||
|
|
||||||
$checkedConfig = (new ConfigType($configArray))->toArray();
|
$checkedConfig = ConfigType::check($configArray);
|
||||||
$container = $di($checkedConfig);
|
$container = $di($checkedConfig);
|
||||||
|
|
||||||
// Unset 'constants'
|
// Unset 'constants'
|
||||||
|
@ -37,7 +37,7 @@ final class ListItem extends AbstractListItem {
|
|||||||
*/
|
*/
|
||||||
public function create(array $data): Request
|
public function create(array $data): Request
|
||||||
{
|
{
|
||||||
$checkedData = (new Types\MediaListEntry($data))->toArray();
|
$checkedData = Types\MediaListEntry::check($data);
|
||||||
return $this->mutateRequest('CreateMediaListEntry', $checkedData);
|
return $this->mutateRequest('CreateMediaListEntry', $checkedData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ final class ListItem extends AbstractListItem {
|
|||||||
*/
|
*/
|
||||||
public function createFull(array $data): Request
|
public function createFull(array $data): Request
|
||||||
{
|
{
|
||||||
$checkedData = (new Types\MediaListEntry($data))->toArray();
|
$checkedData = Types\MediaListEntry::check($data);
|
||||||
return $this->mutateRequest('CreateFullMediaListEntry', $checkedData);
|
return $this->mutateRequest('CreateFullMediaListEntry', $checkedData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,10 +85,10 @@ final class ListItem extends AbstractListItem {
|
|||||||
*/
|
*/
|
||||||
public function increment(string $id, FormItemData $data): Request
|
public function increment(string $id, FormItemData $data): Request
|
||||||
{
|
{
|
||||||
$checkedData = (new Types\MediaListEntry([
|
$checkedData = Types\MediaListEntry::check([
|
||||||
'id' => $id,
|
'id' => $id,
|
||||||
'progress' => $data->progress,
|
'progress' => $data->progress,
|
||||||
]))->toArray();
|
]);
|
||||||
|
|
||||||
return $this->mutateRequest('IncrementMediaListEntry', $checkedData);
|
return $this->mutateRequest('IncrementMediaListEntry', $checkedData);
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ final class ListItem extends AbstractListItem {
|
|||||||
? AnilistStatus::REPEATING
|
? AnilistStatus::REPEATING
|
||||||
: AnimeWatchingStatus::KITSU_TO_ANILIST[$data->status];
|
: AnimeWatchingStatus::KITSU_TO_ANILIST[$data->status];
|
||||||
|
|
||||||
$updateData = (new Types\MediaListEntry([
|
$updateData = Types\MediaListEntry::check([
|
||||||
'id' => (int)$id,
|
'id' => (int)$id,
|
||||||
'status' => $status,
|
'status' => $status,
|
||||||
'score' => $rating * 5,
|
'score' => $rating * 5,
|
||||||
@ -118,7 +118,7 @@ final class ListItem extends AbstractListItem {
|
|||||||
'repeat' => (int)$data['reconsumeCount'],
|
'repeat' => (int)$data['reconsumeCount'],
|
||||||
'private' => $private,
|
'private' => $private,
|
||||||
'notes' => $notes,
|
'notes' => $notes,
|
||||||
]))->toArray();
|
]);
|
||||||
|
|
||||||
return $this->mutateRequest('UpdateMediaListEntry', $updateData);
|
return $this->mutateRequest('UpdateMediaListEntry', $updateData);
|
||||||
}
|
}
|
||||||
|
@ -16,4 +16,6 @@
|
|||||||
|
|
||||||
namespace Aviat\AnimeClient\API\Anilist;
|
namespace Aviat\AnimeClient\API\Anilist;
|
||||||
|
|
||||||
class MissingIdException extends \InvalidArgumentException {}
|
use InvalidArgumentException;
|
||||||
|
|
||||||
|
class MissingIdException extends InvalidArgumentException {}
|
@ -42,7 +42,7 @@ class AnimeListTransformer extends AbstractTransformer {
|
|||||||
{
|
{
|
||||||
$reconsuming = $item['status'] === AnilistStatus::REPEATING;
|
$reconsuming = $item['status'] === AnilistStatus::REPEATING;
|
||||||
|
|
||||||
return new FormItem([
|
return FormItem::from([
|
||||||
'id' => $item['id'],
|
'id' => $item['id'],
|
||||||
'mal_id' => $item['media']['idMal'],
|
'mal_id' => $item['media']['idMal'],
|
||||||
'data' => [
|
'data' => [
|
||||||
|
@ -29,7 +29,7 @@ class MangaListTransformer extends AbstractTransformer {
|
|||||||
|
|
||||||
public function transform($item)
|
public function transform($item)
|
||||||
{
|
{
|
||||||
return new MangaListItem([]);
|
return MangaListItem::from([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,7 +40,7 @@ class MangaListTransformer extends AbstractTransformer {
|
|||||||
*/
|
*/
|
||||||
public function untransform(array $item): FormItem
|
public function untransform(array $item): FormItem
|
||||||
{
|
{
|
||||||
return new FormItem([
|
return FormItem::from([
|
||||||
'id' => $item['id'],
|
'id' => $item['id'],
|
||||||
'mal_id' => $item['media']['idMal'],
|
'mal_id' => $item['media']['idMal'],
|
||||||
'data' => [
|
'data' => [
|
||||||
|
@ -184,7 +184,9 @@ final class Model {
|
|||||||
public function getAnimeHistory(): array
|
public function getAnimeHistory(): array
|
||||||
{
|
{
|
||||||
$raw = $this->getRawHistoryList('anime');
|
$raw = $this->getRawHistoryList('anime');
|
||||||
$organized = JsonAPI::organizeData($raw);
|
$organized = (array)JsonAPI::organizeData($raw);
|
||||||
|
|
||||||
|
$organized = array_filter($organized, fn ($item) => array_key_exists('relationships', $item));
|
||||||
|
|
||||||
$transformer = new AnimeHistoryTransformer();
|
$transformer = new AnimeHistoryTransformer();
|
||||||
$transformer->setContainer($this->getContainer());
|
$transformer->setContainer($this->getContainer());
|
||||||
@ -202,8 +204,11 @@ final class Model {
|
|||||||
public function getMangaHistory(): array
|
public function getMangaHistory(): array
|
||||||
{
|
{
|
||||||
$raw = $this->getRawHistoryList('manga');
|
$raw = $this->getRawHistoryList('manga');
|
||||||
|
$organized = (array)JsonAPI::organizeData($raw);
|
||||||
|
|
||||||
return JsonAPI::organizeData($raw);
|
$organized = array_filter($organized, fn ($item) => array_key_exists('relationships', $item));
|
||||||
|
|
||||||
|
return $organized;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -413,7 +418,7 @@ final class Model {
|
|||||||
|
|
||||||
if (empty($baseData))
|
if (empty($baseData))
|
||||||
{
|
{
|
||||||
return (new Anime([]))->toArray();
|
return Anime::from([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->animeTransformer->transform($baseData);
|
return $this->animeTransformer->transform($baseData);
|
||||||
@ -669,7 +674,7 @@ final class Model {
|
|||||||
|
|
||||||
if (empty($baseData))
|
if (empty($baseData))
|
||||||
{
|
{
|
||||||
return new MangaPage([]);
|
return MangaPage::from([]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->mangaTransformer->transform($baseData);
|
return $this->mangaTransformer->transform($baseData);
|
||||||
|
@ -47,11 +47,13 @@ class AnimeHistoryTransformer {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($entry['attributes']['kind'] === 'progressed')
|
$kind = $entry['attributes']['kind'];
|
||||||
|
|
||||||
|
if ($kind === 'progressed')
|
||||||
{
|
{
|
||||||
$output[] = $this->transformProgress($entry);
|
$output[] = $this->transformProgress($entry);
|
||||||
}
|
}
|
||||||
else if ($entry['attributes']['kind'] === 'updated')
|
else if ($kind === 'updated')
|
||||||
{
|
{
|
||||||
$output[] = $this->transformUpdated($entry);
|
$output[] = $this->transformUpdated($entry);
|
||||||
}
|
}
|
||||||
@ -128,7 +130,6 @@ class AnimeHistoryTransformer {
|
|||||||
{
|
{
|
||||||
$output[] = $entry;
|
$output[] = $entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
|
@ -80,7 +80,7 @@ final class AnimeListTransformer extends AbstractTransformer {
|
|||||||
$titles = Kitsu::filterTitles($anime);
|
$titles = Kitsu::filterTitles($anime);
|
||||||
$title = array_shift($titles);
|
$title = array_shift($titles);
|
||||||
|
|
||||||
return new AnimeListItem([
|
return AnimeListItem::from([
|
||||||
'id' => $item['id'],
|
'id' => $item['id'],
|
||||||
'mal_id' => $MALid,
|
'mal_id' => $MALid,
|
||||||
'episodes' => [
|
'episodes' => [
|
||||||
@ -127,7 +127,7 @@ final class AnimeListTransformer extends AbstractTransformer {
|
|||||||
$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']);
|
||||||
|
|
||||||
$untransformed = new FormItem([
|
$untransformed = FormItem::from([
|
||||||
'id' => $item['id'],
|
'id' => $item['id'],
|
||||||
'anilist_item_id' => $item['anilist_item_id'] ?? NULL,
|
'anilist_item_id' => $item['anilist_item_id'] ?? NULL,
|
||||||
'mal_id' => $item['mal_id'] ?? NULL,
|
'mal_id' => $item['mal_id'] ?? NULL,
|
||||||
|
@ -105,7 +105,7 @@ final class AnimeTransformer extends AbstractTransformer {
|
|||||||
ksort($characters);
|
ksort($characters);
|
||||||
ksort($staff);
|
ksort($staff);
|
||||||
|
|
||||||
return new AnimePage([
|
return AnimePage::from([
|
||||||
'age_rating' => $item['ageRating'],
|
'age_rating' => $item['ageRating'],
|
||||||
'age_rating_guide' => $item['ageRatingGuide'],
|
'age_rating_guide' => $item['ageRatingGuide'],
|
||||||
'characters' => $characters,
|
'characters' => $characters,
|
||||||
|
@ -66,7 +66,7 @@ final class CharacterTransformer extends AbstractTransformer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Character([
|
return Character::from([
|
||||||
'castings' => $castings,
|
'castings' => $castings,
|
||||||
'description' => $attributes['description'],
|
'description' => $attributes['description'],
|
||||||
'id' => $data[0]['id'],
|
'id' => $data[0]['id'],
|
||||||
|
@ -82,7 +82,7 @@ final class MangaListTransformer extends AbstractTransformer {
|
|||||||
$titles = Kitsu::filterTitles($manga);
|
$titles = Kitsu::filterTitles($manga);
|
||||||
$title = array_shift($titles);
|
$title = array_shift($titles);
|
||||||
|
|
||||||
return new MangaListItem([
|
return MangaListItem::from([
|
||||||
'id' => $item['id'],
|
'id' => $item['id'],
|
||||||
'mal_id' => $MALid,
|
'mal_id' => $MALid,
|
||||||
'chapters' => [
|
'chapters' => [
|
||||||
@ -93,7 +93,7 @@ final class MangaListTransformer extends AbstractTransformer {
|
|||||||
'read' => '-', //$item['attributes']['volumes_read'],
|
'read' => '-', //$item['attributes']['volumes_read'],
|
||||||
'total' => $totalVolumes
|
'total' => $totalVolumes
|
||||||
],
|
],
|
||||||
'manga' => new MangaListItemDetail([
|
'manga' => MangaListItemDetail::from([
|
||||||
'genres' => $genres,
|
'genres' => $genres,
|
||||||
'id' => $mangaId,
|
'id' => $mangaId,
|
||||||
'image' => $manga['posterImage']['small'],
|
'image' => $manga['posterImage']['small'],
|
||||||
@ -121,10 +121,10 @@ final class MangaListTransformer extends AbstractTransformer {
|
|||||||
{
|
{
|
||||||
$rereading = array_key_exists('rereading', $item) && (bool)$item['rereading'];
|
$rereading = array_key_exists('rereading', $item) && (bool)$item['rereading'];
|
||||||
|
|
||||||
$map = new FormItem([
|
$map = FormItem::from([
|
||||||
'id' => $item['id'],
|
'id' => $item['id'],
|
||||||
'mal_id' => $item['mal_id'],
|
'mal_id' => $item['mal_id'],
|
||||||
'data' => new FormItemData([
|
'data' => FormItemData::from([
|
||||||
'status' => $item['status'],
|
'status' => $item['status'],
|
||||||
'reconsuming' => $rereading,
|
'reconsuming' => $rereading,
|
||||||
'reconsumeCount' => (int)$item['reread_count'],
|
'reconsumeCount' => (int)$item['reread_count'],
|
||||||
|
@ -113,7 +113,7 @@ final class MangaTransformer extends AbstractTransformer {
|
|||||||
ksort($characters);
|
ksort($characters);
|
||||||
ksort($staff);
|
ksort($staff);
|
||||||
|
|
||||||
return new MangaPage([
|
return MangaPage::from([
|
||||||
'characters' => $characters,
|
'characters' => $characters,
|
||||||
'chapter_count' => $this->count($item['chapterCount']),
|
'chapter_count' => $this->count($item['chapterCount']),
|
||||||
'cover_image' => $item['posterImage']['small'],
|
'cover_image' => $item['posterImage']['small'],
|
||||||
|
@ -36,7 +36,7 @@ final class PersonTransformer extends AbstractTransformer {
|
|||||||
|
|
||||||
$orgData = $this->organizeData($included);
|
$orgData = $this->organizeData($included);
|
||||||
|
|
||||||
return new Person([
|
return Person::from([
|
||||||
'id' => $data['id'],
|
'id' => $data['id'],
|
||||||
'name' => $data['attributes']['name'],
|
'name' => $data['attributes']['name'],
|
||||||
'characters' => $orgData['characters'],
|
'characters' => $orgData['characters'],
|
||||||
|
@ -55,7 +55,7 @@ final class UserTransformer extends AbstractTransformer {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return new User([
|
return User::from([
|
||||||
'about' => $attributes['about'],
|
'about' => $attributes['about'],
|
||||||
'avatar' => getLocalImg($attributes['avatar']['original'], FALSE),
|
'avatar' => getLocalImg($attributes['avatar']['original'], FALSE),
|
||||||
'favorites' => $this->organizeFavorites($favorites),
|
'favorites' => $this->organizeFavorites($favorites),
|
||||||
|
@ -34,6 +34,8 @@ use Aviat\Ion\Di\Exception\ContainerException;
|
|||||||
use Aviat\Ion\Di\Exception\NotFoundException;
|
use Aviat\Ion\Di\Exception\NotFoundException;
|
||||||
use Aviat\Ion\Json;
|
use Aviat\Ion\Json;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
use Throwable;
|
||||||
|
use function in_array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Syncs list data between Anilist and Kitsu
|
* Syncs list data between Anilist and Kitsu
|
||||||
@ -59,7 +61,7 @@ final class SyncLists extends BaseCommand {
|
|||||||
* @param array $options
|
* @param array $options
|
||||||
* @throws ContainerException
|
* @throws ContainerException
|
||||||
* @throws NotFoundException
|
* @throws NotFoundException
|
||||||
* @throws \Throwable
|
* @throws Throwable
|
||||||
*/
|
*/
|
||||||
public function execute(array $args, array $options = []): void
|
public function execute(array $args, array $options = []): void
|
||||||
{
|
{
|
||||||
@ -88,7 +90,7 @@ final class SyncLists extends BaseCommand {
|
|||||||
* Attempt to synchronize external APIs
|
* Attempt to synchronize external APIs
|
||||||
*
|
*
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @throws \Throwable
|
* @throws Throwable
|
||||||
*/
|
*/
|
||||||
protected function sync(string $type): void
|
protected function sync(string $type): void
|
||||||
{
|
{
|
||||||
@ -344,12 +346,12 @@ final class SyncLists extends BaseCommand {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (\in_array('kitsu', $item['updateType'], TRUE))
|
if (in_array('kitsu', $item['updateType'], TRUE))
|
||||||
{
|
{
|
||||||
$kitsuUpdateItems[] = $item['data'];
|
$kitsuUpdateItems[] = $item['data'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (\in_array('anilist', $item['updateType'], TRUE))
|
if (in_array('anilist', $item['updateType'], TRUE))
|
||||||
{
|
{
|
||||||
$anilistUpdateItems[] = $item['data'];
|
$anilistUpdateItems[] = $item['data'];
|
||||||
}
|
}
|
||||||
@ -589,7 +591,7 @@ final class SyncLists extends BaseCommand {
|
|||||||
* @param array $itemsToUpdate
|
* @param array $itemsToUpdate
|
||||||
* @param string $action
|
* @param string $action
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @throws \Throwable
|
* @throws Throwable
|
||||||
*/
|
*/
|
||||||
protected function updateKitsuListItems(array $itemsToUpdate, string $action = 'update', string $type = 'anime'): void
|
protected function updateKitsuListItems(array $itemsToUpdate, string $action = 'update', string $type = 'anime'): void
|
||||||
{
|
{
|
||||||
@ -599,7 +601,7 @@ final class SyncLists extends BaseCommand {
|
|||||||
if ($action === 'update')
|
if ($action === 'update')
|
||||||
{
|
{
|
||||||
$requester->addRequest(
|
$requester->addRequest(
|
||||||
$this->kitsuModel->updateListItem(new FormItem($item))
|
$this->kitsuModel->updateListItem(FormItem::from($item))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if ($action === 'create')
|
else if ($action === 'create')
|
||||||
@ -653,7 +655,7 @@ final class SyncLists extends BaseCommand {
|
|||||||
* @param array $itemsToUpdate
|
* @param array $itemsToUpdate
|
||||||
* @param string $action
|
* @param string $action
|
||||||
* @param string $type
|
* @param string $type
|
||||||
* @throws \Throwable
|
* @throws Throwable
|
||||||
*/
|
*/
|
||||||
protected function updateAnilistListItems(array $itemsToUpdate, string $action = 'update', string $type = 'anime'): void
|
protected function updateAnilistListItems(array $itemsToUpdate, string $action = 'update', string $type = 'anime'): void
|
||||||
{
|
{
|
||||||
@ -664,7 +666,7 @@ final class SyncLists extends BaseCommand {
|
|||||||
if ($action === 'update')
|
if ($action === 'update')
|
||||||
{
|
{
|
||||||
$requester->addRequest(
|
$requester->addRequest(
|
||||||
$this->anilistModel->updateListItem(new FormItem($item), $type)
|
$this->anilistModel->updateListItem(FormItem::from($item), $type)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if ($action === 'create')
|
else if ($action === 'create')
|
||||||
|
@ -179,7 +179,6 @@ final class Anime extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param string $id
|
* @param string $id
|
||||||
* @param string $status
|
* @param string $status
|
||||||
* @throws RouteNotFound
|
|
||||||
*/
|
*/
|
||||||
public function edit(string $id, $status = 'all'): void
|
public function edit(string $id, $status = 'all'): void
|
||||||
{
|
{
|
||||||
@ -231,7 +230,7 @@ final class Anime extends BaseController {
|
|||||||
// large form-based updates
|
// large form-based updates
|
||||||
$transformer = new AnimeListTransformer();
|
$transformer = new AnimeListTransformer();
|
||||||
$postData = $transformer->untransform($data);
|
$postData = $transformer->untransform($data);
|
||||||
$fullResult = $this->model->updateLibraryItem(new FormItem($postData));
|
$fullResult = $this->model->updateLibraryItem(FormItem::from($postData));
|
||||||
|
|
||||||
if ($fullResult['statusCode'] === 200)
|
if ($fullResult['statusCode'] === 200)
|
||||||
{
|
{
|
||||||
@ -271,7 +270,7 @@ final class Anime extends BaseController {
|
|||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->model->incrementLibraryItem(new FormItem($data));
|
$response = $this->model->incrementLibraryItem(FormItem::from($data));
|
||||||
|
|
||||||
$this->cache->clear();
|
$this->cache->clear();
|
||||||
$this->outputJSON($response['body'], $response['statusCode']);
|
$this->outputJSON($response['body'], $response['statusCode']);
|
||||||
|
@ -27,7 +27,7 @@ use Aviat\Ion\Di\Exception\NotFoundException;
|
|||||||
/**
|
/**
|
||||||
* Controller for character description pages
|
* Controller for character description pages
|
||||||
*/
|
*/
|
||||||
class Character extends BaseController {
|
final class Character extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Model
|
* @var Model
|
||||||
|
@ -231,7 +231,7 @@ final class Manga extends Controller {
|
|||||||
// large form-based updates
|
// large form-based updates
|
||||||
$transformer = new MangaListTransformer();
|
$transformer = new MangaListTransformer();
|
||||||
$post_data = $transformer->untransform($data);
|
$post_data = $transformer->untransform($data);
|
||||||
$full_result = $this->model->updateLibraryItem(new FormItem($post_data));
|
$full_result = $this->model->updateLibraryItem(FormItem::from($post_data));
|
||||||
|
|
||||||
if ($full_result['statusCode'] === 200)
|
if ($full_result['statusCode'] === 200)
|
||||||
{
|
{
|
||||||
@ -264,7 +264,7 @@ final class Manga extends Controller {
|
|||||||
$data = $this->request->getParsedBody();
|
$data = $this->request->getParsedBody();
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->model->incrementLibraryItem(new FormItem($data));
|
$response = $this->model->incrementLibraryItem(FormItem::from($data));
|
||||||
|
|
||||||
$this->cache->clear();
|
$this->cache->clear();
|
||||||
$this->outputJSON($response['body'], $response['statusCode']);
|
$this->outputJSON($response['body'], $response['statusCode']);
|
||||||
|
@ -167,7 +167,7 @@ class Anime extends API {
|
|||||||
$array['notes'] = '';
|
$array['notes'] = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return new AnimeListItem($array);
|
return AnimeListItem::from($array);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,12 +49,23 @@ abstract class AbstractType implements ArrayAccess, Countable {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Static constructor
|
||||||
|
*
|
||||||
|
* @param mixed $data
|
||||||
|
* @return static
|
||||||
|
*/
|
||||||
|
final public static function from($data): self
|
||||||
|
{
|
||||||
|
return new static($data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the properties by using the constructor
|
* Sets the properties by using the constructor
|
||||||
*
|
*
|
||||||
* @param mixed $data
|
* @param mixed $data
|
||||||
*/
|
*/
|
||||||
final public function __construct($data = [])
|
final private function __construct($data = [])
|
||||||
{
|
{
|
||||||
$typeKeys = array_keys((array)$this);
|
$typeKeys = array_keys((array)$this);
|
||||||
$dataKeys = array_keys((array)$data);
|
$dataKeys = array_keys((array)$data);
|
||||||
|
@ -92,6 +92,6 @@ final class AnimeListItem extends AbstractType {
|
|||||||
|
|
||||||
public function setAnime($anime): void
|
public function setAnime($anime): void
|
||||||
{
|
{
|
||||||
$this->anime = new Anime($anime);
|
$this->anime = Anime::from($anime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,6 @@ final class Character extends AbstractType {
|
|||||||
|
|
||||||
public function setMedia ($media): void
|
public function setMedia ($media): void
|
||||||
{
|
{
|
||||||
$this->media = new Media($media);
|
$this->media = Media::from($media);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -162,16 +162,16 @@ class Config extends AbstractType {
|
|||||||
|
|
||||||
public function setAnilist ($data): void
|
public function setAnilist ($data): void
|
||||||
{
|
{
|
||||||
$this->anilist = new Config\Anilist($data);
|
$this->anilist = Config\Anilist::from($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setCache ($data): void
|
public function setCache ($data): void
|
||||||
{
|
{
|
||||||
$this->cache = new Config\Cache($data);
|
$this->cache = Config\Cache::from($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDatabase ($data): void
|
public function setDatabase ($data): void
|
||||||
{
|
{
|
||||||
$this->database = new Config\Database($data);
|
$this->database = Config\Database::from($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -42,7 +42,7 @@ class FormItem extends AbstractType {
|
|||||||
|
|
||||||
public function setData($value): void
|
public function setData($value): void
|
||||||
{
|
{
|
||||||
$this->data = new FormItemData($value);
|
$this->data = FormItemData::from($value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +42,6 @@ final class Person extends AbstractType {
|
|||||||
|
|
||||||
public function setCharacters($characters): void
|
public function setCharacters($characters): void
|
||||||
{
|
{
|
||||||
$this->characters = new Characters($characters);
|
$this->characters = Characters::from($characters);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -85,10 +85,10 @@ class MangaListTransformerTest extends AnimeClientTestCase {
|
|||||||
];
|
];
|
||||||
|
|
||||||
$actual = $this->transformer->untransform($input);
|
$actual = $this->transformer->untransform($input);
|
||||||
$expected = new FormItem([
|
$expected = FormItem::from([
|
||||||
'id' => '15084773',
|
'id' => '15084773',
|
||||||
'mal_id' => '26769',
|
'mal_id' => '26769',
|
||||||
'data' => new FormItemData([
|
'data' => FormItemData::from([
|
||||||
'status' => 'current',
|
'status' => 'current',
|
||||||
'progress' => 67,
|
'progress' => 67,
|
||||||
'reconsuming' => false,
|
'reconsuming' => false,
|
||||||
|
Loading…
Reference in New Issue
Block a user