* @copyright 2015 - 2018 Timothy J. Warren * @license http://www.opensource.org/licenses/mit-license.html MIT License * @version 4.0 * @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient */ namespace Aviat\AnimeClient\API\Kitsu\Transformer; use Aviat\AnimeClient\Types\MangaPage; use Aviat\Ion\Transformer\AbstractTransformer; /** * Transformer for anime description page */ final class MangaTransformer extends AbstractTransformer { /** * Convert raw api response to a more * logical and workable structure * * @param array $item API library item * @return MangaPage */ public function transform($item): MangaPage { // \dump($item); $genres = []; foreach($item['included'] as $included) { if ($included['type'] === 'categories') { $genres[] = $included['attributes']['title']; } } sort($genres); return new MangaPage([ 'id' => $item['id'], 'title' => $item['canonicalTitle'], 'en_title' => $item['titles']['en'], 'jp_title' => $item['titles']['en_jp'], 'cover_image' => $item['posterImage']['small'], 'manga_type' => $item['mangaType'], 'chapter_count' => $this->count($item['chapterCount']), 'volume_count' => $this->count($item['volumeCount']), 'synopsis' => $item['synopsis'], 'url' => "https://kitsu.io/manga/{$item['slug']}", 'genres' => $genres, ]); } private function count(int $value = NULL) { return ((int)$value === 0) ? '-' : $value; } }