* @copyright 2015 - 2021 Timothy J. Warren * @license http://www.opensource.org/licenses/mit-license.html MIT License * @version 5.2 * @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient */ namespace Aviat\AnimeClient\Controller; use Aviat\AnimeClient\API\Kitsu\Model; use Aviat\AnimeClient\Controller as BaseController; use Aviat\AnimeClient\API\Kitsu\Transformer\PersonTransformer; use Aviat\Ion\Di\ContainerInterface; use Aviat\Ion\Di\Exception\ContainerException; use Aviat\Ion\Di\Exception\NotFoundException; /** * Controller for People pages */ final class People extends BaseController { /** * @var Model */ private Model $model; /** * People constructor. * * @param ContainerInterface $container * @throws ContainerException * @throws NotFoundException */ public function __construct(ContainerInterface $container) { parent::__construct($container); $this->model = $container->get('kitsu-model'); } /** * Show information about a person * * @param string $slug * @return void * @throws ContainerException * @throws NotFoundException */ public function index(string $slug): void { $rawData = $this->model->getPerson($slug); $data = (new PersonTransformer())->transform($rawData)->toArray(); if (( ! array_key_exists('data', $rawData)) || empty($rawData['data'])) { $this->notFound( $this->formatTitle( 'People', 'Person not found' ), 'Person Not Found' ); return; } $this->outputHTML('person/details', [ 'title' => $this->formatTitle( 'People', $data['name'] ), 'data' => $data, ]); } }