HummingBirdAnimeClient/src/Model/Anime.php

85 lines
2.0 KiB
PHP
Raw Normal View History

2016-10-20 22:09:36 -04:00
<?php declare(strict_types=1);
/**
2016-12-20 12:58:37 -05:00
* Anime List Client
2015-11-16 11:40:01 -05:00
*
2016-12-20 12:58:37 -05:00
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
2015-11-16 11:40:01 -05:00
*
2016-10-20 22:09:36 -04:00
* PHP version 7
2016-08-30 10:01:18 -04:00
*
2016-12-21 12:46:20 -05:00
* @package AnimeListClient
* @author Timothy J. Warren <tim@timshomepage.net>
2016-08-30 10:01:18 -04:00
* @copyright 2015 - 2016 Timothy J. Warren
2016-12-21 12:46:20 -05:00
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @version 4.0
* @link https://github.com/timw4mail/HummingBirdAnimeClient
*/
2015-05-22 12:36:26 -04:00
2015-09-14 19:54:34 -04:00
namespace Aviat\AnimeClient\Model;
2016-12-20 12:58:37 -05:00
use Aviat\AnimeClient\API\Kitsu\Enum\AnimeWatchingStatus;
2016-12-21 12:46:20 -05:00
use Aviat\Ion\Di\ContainerInterface;
2016-10-20 22:32:17 -04:00
use Aviat\Ion\Json;
2015-06-26 16:39:10 -04:00
2016-12-21 12:46:20 -05:00
2015-05-22 12:36:26 -04:00
/**
* Model for handling requests dealing with the anime list
*/
class Anime extends API {
2015-10-01 16:01:23 -04:00
// Display constants
const WATCHING = 'Watching';
const PLAN_TO_WATCH = 'Plan to Watch';
const DROPPED = 'Dropped';
const ON_HOLD = 'On Hold';
const COMPLETED = 'Completed';
/**
* Map of API status constants to display constants
* @var array
*/
protected $const_map = [
AnimeWatchingStatus::WATCHING => self::WATCHING,
AnimeWatchingStatus::PLAN_TO_WATCH => self::PLAN_TO_WATCH,
AnimeWatchingStatus::ON_HOLD => self::ON_HOLD,
AnimeWatchingStatus::DROPPED => self::DROPPED,
AnimeWatchingStatus::COMPLETED => self::COMPLETED,
];
/**
* Anime constructor.
* @param ContainerInterface $container
*/
2016-12-21 12:46:20 -05:00
public function __construct(ContainerInterface $container) {
parent::__construct($container);
$this->kitsuModel = $container->get('kitsu-model');
2016-12-21 12:46:20 -05:00
}
2015-05-22 12:36:26 -04:00
/**
* Get a category out of the full list
*
* @param string $status
2015-05-22 12:36:26 -04:00
* @return array
*/
public function get_list($status)
2015-05-22 12:36:26 -04:00
{
$data = $this->kitsuModel->getAnimeList($status);
$this->sort_by_name($data, 'anime');
2015-05-22 12:36:26 -04:00
$output = [];
$output[$this->const_map[$status]] = $data;
2015-05-22 12:36:26 -04:00
return $output;
}
/**
* Get information about an anime from its id
*
* @param string $anime_id
* @return array
*/
public function get_anime($anime_id)
{
return $this->kitsuModel->getAnime($anime_id);
}
2015-05-22 12:36:26 -04:00
}
// End of AnimeModel.php