More refactoring, fix snapshot tests

Cette révision appartient à :
Timothy Warren 2018-08-08 13:05:38 -04:00
Parent d29945eb96
révision 3b3156e78a
31 fichiers modifiés avec 549 ajouts et 319 suppressions

Voir le fichier

@ -26,7 +26,7 @@
<img src="<?= $urlGenerator->assetUrl('images/manga', "{$item['manga']['id']}.jpg") ?>" />
<div class="name">
<a href="<?= $url->generate('manga.details', ['id' => $item['manga']['slug']]) ?>">
<?= $escape->html(array_shift($item['manga']['titles'])) ?>
<?= $escape->html($item['manga']['title']) ?>
<?php foreach($item['manga']['titles'] as $title): ?>
<br /><small><?= $title ?></small>
<?php endforeach ?>

Voir le fichier

@ -8,7 +8,7 @@
<thead>
<tr>
<th>
<h3><?= $escape->html(array_shift($item['manga']['titles'])) ?></h3>
<h3><?= $escape->html($item['manga']['title']) ?></h3>
<?php foreach($item['manga']['titles'] as $title): ?>
<h4><?= $escape->html($title) ?></h4>
<?php endforeach ?>
@ -44,12 +44,12 @@
<input type="number" min="0" name="chapters_read" id="chapters_read" value="<?= $item['chapters']['read'] ?>" /> / <?= $item['chapters']['total'] ?>
</td>
</tr>
<? /*<tr>
<tr>
<td><label for="volumes_read">Volumes Read</label></td>
<td>
<input type="number" min="0" name="volumes_read" id="volumes_read" value="<?= $item['volumes']['read'] ?>" /> / <?= $item['volumes']['total'] ?>
<input type="text" disabled="disabled" min="0" name="volumes_read" id="volumes_read" value="-" /> / <?= $item['volumes']['total'] ?>
</td>
</tr> */ ?>
</tr>
<tr>
<td><label for="rereading_flag">Rereading?</label></td>
<td>

Voir le fichier

@ -39,7 +39,7 @@
<?php endif ?>
<td class="align_left">
<a href="<?= $url->generate('manga.details', ['id' => $item['manga']['slug']]) ?>">
<?= array_shift($item['manga']['titles']) ?>
<?= $item['manga']['title'] ?>
</a>
<?php foreach($item['manga']['titles'] as $title): ?>
<br /><?= $title ?>

Voir le fichier

@ -28,9 +28,12 @@ if ($timezone === '' || $timezone === FALSE)
// Load composer autoloader
require_once __DIR__ . '/vendor/autoload.php';
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
// if (array_key_exists('ENV', $_ENV) && $_ENV['ENV'] === 'development')
{
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
}
// Define base directories
$APP_DIR = _dir(__DIR__, 'app');

Voir le fichier

@ -7,7 +7,7 @@ const atImport = require('postcss-import');
const cssNext = require('postcss-cssnext');
const cssNano = require('cssnano');
const css = fs.readFileSync('css/base.css', 'utf8');
const css = fs.readFileSync('css/base.css', 'utf-8');
postcss()
.use(atImport())

Voir le fichier

@ -22,7 +22,7 @@ use Aviat\AnimeClient\API\HummingbirdClient;
use Aviat\Ion\{Json, JsonException};
// Include Amp and Artax
require_once('../vendor/autoload.php');
require_once '../vendor/autoload.php';
//Creative rewriting of /g/groupname to ?g=groupname
$pi = $_SERVER['PATH_INFO'];
@ -318,10 +318,11 @@ class JSMin {
$lastModifiedDate = gmdate('D, d M Y H:i:s', $lastModified);
$expiresDate = gmdate('D, d M Y H:i:s', $expires);
header("Content-Type: {$mimeType}; charset=utf8");
header("Cache-control: public, max-age=691200, must-revalidate");
header("Last-Modified: {$lastModifiedDate} GMT");
header("Content-Type: {$mimeType}; charset=utf-8");
header('Cache-control: public, max-age=691200, must-revalidate');
header("Expires: {$expiresDate} GMT");
header("Last-Modified: {$lastModifiedDate} GMT");
header('X-Content-Type-Options: no-sniff');
echo $content;
@ -335,7 +336,7 @@ class JSMin {
*/
public static function send304()
{
header("status: 304 Not Modified", true, 304);
header('status: 304 Not Modified', true, 304);
}
}

0
public/js/cache/.gitkeep externe Fichier normal → Fichier exécutable
Voir le fichier

Voir le fichier

@ -37,9 +37,11 @@ use Aviat\AnimeClient\API\Kitsu\Transformer\{
MangaListTransformer
};
use Aviat\AnimeClient\Types\{
AbstractType,
Anime,
AnimeFormItem,
AnimeListItem
FormItem,
AnimeListItem,
MangaPage
};
use Aviat\Ion\{Di\ContainerAware, Json};
@ -562,15 +564,15 @@ final class Model {
* Get information about a particular manga
*
* @param string $slug
* @return array
* @return MangaPage
*/
public function getManga(string $slug): array
public function getManga(string $slug): MangaPage
{
$baseData = $this->getRawMediaData('manga', $slug);
if (empty($baseData))
{
return [];
return new MangaPage([]);
}
$transformed = $this->mangaTransformer->transform($baseData);
@ -584,7 +586,7 @@ final class Model {
* @param string $mangaId
* @return array
*/
public function getMangaById(string $mangaId): array
public function getMangaById(string $mangaId): MangaPage
{
$baseData = $this->getRawMediaDataById('manga', $mangaId);
return $this->mangaTransformer->transform($baseData);
@ -837,10 +839,10 @@ final class Model {
/**
* Modify a list item
*
* @param AnimeFormItem $data
* @param FormItem $data
* @return Request
*/
public function updateListItem(AnimeFormItem $data): Request
public function updateListItem(FormItem $data): Request
{
return $this->listItem->update($data['id'], $data['data']);
}

Voir le fichier

@ -17,6 +17,10 @@
namespace Aviat\AnimeClient\API\Kitsu\Transformer;
use Aviat\AnimeClient\API\Kitsu;
use Aviat\AnimeClient\Types\{
MangaFormItem, MangaFormItemData,
MangaListItem, MangaListItemDetail
};
use Aviat\Ion\StringWrapper;
use Aviat\Ion\Transformer\AbstractTransformer;
@ -31,9 +35,9 @@ final class MangaListTransformer extends AbstractTransformer {
* Remap zipped anime data to a more logical form
*
* @param array $item manga entry item
* @return array
* @return MangaListItem
*/
public function transform($item): array
public function transform($item): MangaListItem
{
$included = $item['included'];
$mangaId = $item['relationships']['media']['data']['id'];
@ -72,7 +76,10 @@ final class MangaListTransformer extends AbstractTransformer {
}
}
$map = [
$titles = Kitsu::filterTitles($manga);
$title = array_shift($titles);
$map = new MangaListItem([
'id' => $item['id'],
'mal_id' => $MALid,
'chapters' => [
@ -83,22 +90,22 @@ final class MangaListTransformer extends AbstractTransformer {
'read' => '-', //$item['attributes']['volumes_read'],
'total' => $totalVolumes
],
'manga' => [
'id' => $mangaId,
'titles' => Kitsu::filterTitles($manga),
'alternate_title' => NULL,
'slug' => $manga['slug'],
'url' => 'https://kitsu.io/manga/' . $manga['slug'],
'type' => $manga['mangaType'],
'image' => $manga['posterImage']['small'],
'manga' => new MangaListItemDetail([
'genres' => $genres,
],
'id' => $mangaId,
'image' => $manga['posterImage']['small'],
'slug' => $manga['slug'],
'title' => $title,
'titles' => $titles,
'type' => $manga['mangaType'],
'url' => 'https://kitsu.io/manga/' . $manga['slug'],
]),
'reading_status' => $item['attributes']['status'],
'notes' => $item['attributes']['notes'],
'rereading' => (bool)$item['attributes']['reconsuming'],
'reread' => $item['attributes']['reconsumeCount'],
'user_rating' => $rating,
];
]);
return $map;
}
@ -107,22 +114,22 @@ final class MangaListTransformer extends AbstractTransformer {
* Untransform data to update the api
*
* @param array $item
* @return array
* @return MangaFormItem
*/
public function untransform($item): array
public function untransform($item): MangaFormItem
{
$rereading = array_key_exists('rereading', $item) && (bool)$item['rereading'];
$map = [
$map = new MangaFormItem([
'id' => $item['id'],
'mal_id' => $item['mal_id'],
'data' => [
'data' => new MangaFormItemData([
'status' => $item['status'],
'reconsuming' => $rereading,
'reconsumeCount' => (int)$item['reread_count'],
'notes' => $item['notes'],
],
];
]),
]);
if (is_numeric($item['chapters_read']) && $item['chapters_read'] > 0)
{

Voir le fichier

@ -16,6 +16,7 @@
namespace Aviat\AnimeClient\API\Kitsu\Transformer;
use Aviat\AnimeClient\Types\MangaPage;
use Aviat\Ion\Transformer\AbstractTransformer;
/**
@ -28,23 +29,24 @@ final class MangaTransformer extends AbstractTransformer {
* logical and workable structure
*
* @param array $item API library item
* @return array
* @return MangaPage
*/
public function transform($item)
public function transform($item): MangaPage
{
// \dump($item);
$genres = [];
foreach($item['included'] as $included)
{
if ($included['type'] === 'genres')
if ($included['type'] === 'categories')
{
$genres[] = $included['attributes']['name'];
$genres[] = $included['attributes']['title'];
}
}
sort($genres);
return [
return new MangaPage([
'id' => $item['id'],
'title' => $item['canonicalTitle'],
'en_title' => $item['titles']['en'],
@ -56,7 +58,7 @@ final class MangaTransformer extends AbstractTransformer {
'synopsis' => $item['synopsis'],
'url' => "https://kitsu.io/manga/{$item['slug']}",
'genres' => $genres,
];
]);
}
private function count(int $value = NULL)

Voir le fichier

@ -24,7 +24,7 @@ use Aviat\AnimeClient\API\MAL\{
};
use Aviat\AnimeClient\API\XML;
use Aviat\AnimeClient\API\Mapping\{AnimeWatchingStatus, MangaReadingStatus};
use Aviat\AnimeClient\Types\{Anime, AnimeFormItem};
use Aviat\AnimeClient\Types\{Anime, FormItem};
use Aviat\Ion\Di\ContainerAware;
/**
@ -148,11 +148,11 @@ final class Model {
/**
* Update a list item
*
* @param AnimeFormItem $data
* @param FormItem $data
* @param string $type "anime" or "manga"
* @return Request
*/
public function updateListItem(AnimeFormItem $data, string $type = 'anime'): Request
public function updateListItem(FormItem $data, string $type = 'anime'): Request
{
$updateData = [];

Voir le fichier

@ -29,7 +29,7 @@ use Aviat\Ion\Json;
/**
* Model for handling requests dealing with the anime list
*/
final class Anime extends API {
class Anime extends API {
/**
* Model for making requests to Kitsu API
*

Voir le fichier

@ -21,14 +21,18 @@ use Aviat\AnimeClient\API\{
Mapping\MangaReadingStatus,
ParallelAPIRequest
};
use Aviat\AnimeClient\Types\{
MangaFormItem,
MangaListItem,
MangaPage
};
use Aviat\Ion\Di\ContainerInterface;
use Aviat\Ion\Json;
/**
* Model for handling requests dealing with the manga list
*/
final class Manga extends API
{
class Manga extends API {
/**
* Model for making requests to Kitsu API
* @var \Aviat\AnimeClient\API\Kitsu\Model
@ -71,17 +75,18 @@ final class Manga extends API
}
$APIstatus = MangaReadingStatus::TITLE_TO_KITSU[$status];
$data = $this->kitsuModel->getMangaList($APIstatus);
return $this->mapByStatus($data)[$status];
$data =
$this->mapByStatus($this->kitsuModel->getMangaList($APIstatus));
return $data[$status];
}
/**
* Get the details of a manga
*
* @param string $manga_id
* @return array
* @return MangaPage
*/
public function getManga($manga_id): array
public function getManga($manga_id): MangaPage
{
return $this->kitsuModel->getManga($manga_id);
}
@ -90,9 +95,9 @@ final class Manga extends API
* Get anime by its kitsu id
*
* @param string $animeId
* @return array
* @return MangaPage
*/
public function getMangaById(string $animeId): array
public function getMangaById(string $animeId): MangaPage
{
return $this->kitsuModel->getMangaById($animeId);
}
@ -102,9 +107,9 @@ final class Manga extends API
* for editing/updating that item
*
* @param string $itemId
* @return array
* @return MangaListItem
*/
public function getLibraryItem(string $itemId): array
public function getLibraryItem(string $itemId): MangaListItem
{
return $this->kitsuModel->getListItem($itemId);
}
@ -141,10 +146,10 @@ final class Manga extends API
/**
* Update a list entry
*
* @param array $data
* @param MangaFormItem $data
* @return array
*/
public function updateLibraryItem(array $data): array
public function updateLibraryItem(MangaFormItem $data): array
{
$requester = new ParallelAPIRequest();
@ -221,7 +226,10 @@ final class Manga extends API
$output[$key][] = $entry;
}
foreach ($output as &$val) {
unset($entry);
foreach ($output as &$val)
{
$this->sortByName($val, 'manga');
}

Voir le fichier

@ -20,6 +20,17 @@ use ArrayAccess;
use LogicException;
abstract class AbstractType implements ArrayAccess {
/**
* Populate values for unserializing data
*
* @param $properties
* @return mixed
*/
public static function __set_state($properties)
{
return new static($properties);
}
/**
* Sets the properties by using the constructor
*

Voir le fichier

@ -19,8 +19,4 @@ namespace Aviat\AnimeClient\Types;
/**
* Type representing an Anime object for display
*/
final class AnimeFormItem extends AbstractType {
public $data;
public $id;
public $mal_id;
}
final class AnimeFormItem extends FormItem { }

Voir le fichier

@ -19,12 +19,4 @@ namespace Aviat\AnimeClient\Types;
/**
* Type representing an Anime object for display
*/
final class AnimeFormItemData extends AbstractType {
public $notes;
public $private;
public $progress;
public $rating;
public $reconsumeCount;
public $reconsuming;
public $status;
}
final class AnimeFormItemData extends FormItemData {}

27
src/Types/FormItem.php Fichier normal
Voir le fichier

@ -0,0 +1,27 @@
<?php declare(strict_types=1);
/**
* Hummingbird Anime List Client
*
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
*
* PHP version 7
*
* @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net>
* @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\Types;
/**
* Type representing an Anime object for display
*/
abstract class FormItem extends AbstractType {
public $id;
public $mal_id;
public $data;
}

30
src/Types/FormItemData.php Fichier normal
Voir le fichier

@ -0,0 +1,30 @@
<?php declare(strict_types=1);
/**
* Hummingbird Anime List Client
*
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
*
* PHP version 7
*
* @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net>
* @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\Types;
/**
* Type representing an Anime object for display
*/
abstract class FormItemData extends AbstractType {
public $notes;
public $private;
public $progress;
public $rating;
public $reconsumeCount;
public $reconsuming;
public $status;
}

23
src/Types/MangaFormItem.php Fichier normal
Voir le fichier

@ -0,0 +1,23 @@
<?php declare(strict_types=1);
/**
* Hummingbird Anime List Client
*
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
*
* PHP version 7
*
* @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net>
* @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\Types;
/**
* Form data for updating a Manga List item
*/
final class MangaFormItem extends FormItem { }

Voir le fichier

@ -0,0 +1,19 @@
<?php declare(strict_types=1);
/**
* Hummingbird Anime List Client
*
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
*
* PHP version 7
*
* @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net>
* @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\Types;
final class MangaFormItemData extends FormItemData {}

40
src/Types/MangaListItem.php Fichier normal
Voir le fichier

@ -0,0 +1,40 @@
<?php declare(strict_types=1);
/**
* Hummingbird Anime List Client
*
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
*
* PHP version 7
*
* @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net>
* @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\Types;
/**
* Type representing an Anime object for display
*/
final class MangaListItem extends AbstractType {
public $id;
public $mal_id;
public $chapters = [
'read' => 0,
'total' => 0,
];
public $volumes = [
'read' => '-',
'total' => 0,
];
public $manga;
public $reading_status;
public $notes;
public $rereading;
public $reread;
public $user_rating;
}

Voir le fichier

@ -0,0 +1,31 @@
<?php declare(strict_types=1);
/**
* Hummingbird Anime List Client
*
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
*
* PHP version 7
*
* @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net>
* @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\Types;
/**
* Type representing the manga represented by the list item
*/
final class MangaListItemDetail extends AbstractType {
public $genres;
public $id;
public $image;
public $slug;
public $title;
public $titles;
public $type;
public $url;
}

35
src/Types/MangaPage.php Fichier normal
Voir le fichier

@ -0,0 +1,35 @@
<?php declare(strict_types=1);
/**
* Hummingbird Anime List Client
*
* An API client for Kitsu and MyAnimeList to manage anime and manga watch lists
*
* PHP version 7
*
* @package HummingbirdAnimeClient
* @author Timothy J. Warren <tim@timshomepage.net>
* @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\Types;
/**
* Type representing an Anime object for display
*/
final class MangaPage extends AbstractType {
public $chapter_count;
public $cover_image;
public $en_title;
public $genres;
public $id;
public $included;
public $jp_title;
public $manga_type;
public $synopsis;
public $title;
public $url;
public $volume_count;
}

Voir le fichier

@ -19,6 +19,10 @@ namespace Aviat\AnimeClient\Tests\API\Kitsu\Transformer;
use Aviat\AnimeClient\API\JsonAPI;
use Aviat\AnimeClient\API\Kitsu\Transformer\MangaListTransformer;
use Aviat\AnimeClient\Tests\AnimeClientTestCase;
use Aviat\AnimeClient\Types\{
MangaFormItem,
MangaFormItemData,
};
use Aviat\Ion\Json;
class MangaListTransformerTest extends AnimeClientTestCase {
@ -82,18 +86,18 @@ class MangaListTransformerTest extends AnimeClientTestCase {
];
$actual = $this->transformer->untransform($input);
$expected = [
$expected = new MangaFormItem([
'id' => '15084773',
'mal_id' => '26769',
'data' => [
'data' => new MangaFormItemData([
'status' => 'current',
'progress' => 67,
'reconsuming' => false,
'reconsumeCount' => 0,
'notes' => '',
'rating' => 4.5
]
];
])
]);
$this->assertEquals($expected, $actual);
}

Voir le fichier

@ -1,46 +1,53 @@
<?php return array (
'id' => '15839442',
'mal_id' => '33206',
'episodes' =>
<?php return Aviat\AnimeClient\Types\AnimeListItem::__set_state(array(
'id' => '15839442',
'mal_id' => '33206',
'episodes' =>
array (
'watched' => '-',
'total' => '-',
'length' => NULL,
),
'airing' =>
'airing' =>
array (
'status' => 'Currently Airing',
'started' => '2017-01-12',
'ended' => NULL,
),
'anime' =>
array (
'id' => '12243',
'age_rating' => NULL,
'title' => 'Kobayashi-san Chi no Maid Dragon',
'titles' =>
array (
0 => 'Kobayashi-san Chi no Maid Dragon',
1 => 'Miss Kobayashi\'s Dragon Maid',
2 => '小林さんちのメイドラゴン',
),
'slug' => 'kobayashi-san-chi-no-maid-dragon',
'type' => 'TV',
'image' => 'https://media.kitsu.io/anime/poster_images/12243/small.jpg?1481144116',
'genres' =>
'anime' =>
Aviat\AnimeClient\Types\Anime::__set_state(array(
'age_rating' => NULL,
'age_rating_guide' => NULL,
'cover_image' => 'https://media.kitsu.io/anime/poster_images/12243/small.jpg?1481144116',
'episode_count' => NULL,
'episode_length' => NULL,
'genres' =>
array (
0 => 'Comedy',
1 => 'Fantasy',
2 => 'Slice of Life',
),
'streaming_links' =>
'id' => '12243',
'included' => NULL,
'show_type' => 'TV',
'slug' => 'kobayashi-san-chi-no-maid-dragon',
'status' => NULL,
'streaming_links' =>
array (
),
),
'watching_status' => 'current',
'notes' => NULL,
'rewatching' => false,
'rewatched' => 0,
'user_rating' => '-',
'private' => false,
);
'synopsis' => NULL,
'title' => 'Kobayashi-san Chi no Maid Dragon',
'titles' =>
array (
0 => 'Miss Kobayashi\'s Dragon Maid',
1 => '小林さんちのメイドラゴン',
),
'trailer_id' => NULL,
'url' => NULL,
)),
'watching_status' => 'current',
'notes' => NULL,
'rewatching' => false,
'rewatched' => 0,
'user_rating' => '-',
'private' => false,
));

Voir le fichier

@ -1,14 +1,14 @@
<?php return array (
'id' => 14047981,
'mal_id' => NULL,
'data' =>
array (
'status' => 'current',
'reconsuming' => false,
'reconsumeCount' => 0,
'notes' => 'Very formulaic.',
'progress' => 38,
'private' => false,
'rating' => 4,
),
);
<?php return Aviat\AnimeClient\Types\AnimeFormItem::__set_state(array(
'id' => 14047981,
'mal_id' => NULL,
'data' =>
Aviat\AnimeClient\Types\AnimeFormItemData::__set_state(array(
'notes' => 'Very formulaic.',
'private' => false,
'progress' => 38,
'rating' => 4,
'reconsumeCount' => 0,
'reconsuming' => false,
'status' => 'current',
)),
));

Voir le fichier

@ -1,14 +1,14 @@
<?php return array (
'id' => 14047981,
'mal_id' => '12345',
'data' =>
array (
'status' => 'current',
'reconsuming' => true,
'reconsumeCount' => 0,
'notes' => 'Very formulaic.',
'progress' => 38,
'private' => true,
'rating' => 4,
),
);
<?php return Aviat\AnimeClient\Types\AnimeFormItem::__set_state(array(
'id' => 14047981,
'mal_id' => '12345',
'data' =>
Aviat\AnimeClient\Types\AnimeFormItemData::__set_state(array(
'notes' => 'Very formulaic.',
'private' => true,
'progress' => 38,
'rating' => 4,
'reconsumeCount' => 0,
'reconsuming' => true,
'status' => 'current',
)),
));

Voir le fichier

@ -1,13 +1,14 @@
<?php return array (
'id' => 14047983,
'mal_id' => '12347',
'data' =>
array (
'status' => 'current',
'reconsuming' => true,
'reconsumeCount' => 0,
'notes' => '',
'progress' => 12,
'private' => true,
),
);
<?php return Aviat\AnimeClient\Types\AnimeFormItem::__set_state(array(
'id' => 14047983,
'mal_id' => '12347',
'data' =>
Aviat\AnimeClient\Types\AnimeFormItemData::__set_state(array(
'notes' => '',
'private' => true,
'progress' => 12,
'rating' => NULL,
'reconsumeCount' => 0,
'reconsuming' => true,
'status' => 'current',
)),
));

Voir le fichier

@ -1,17 +1,18 @@
<?php return array (
'age_rating' => 'R',
'age_rating_guide' => 'Violence, Profanity',
'cover_image' => 'https://media.kitsu.io/anime/poster_images/7442/small.jpg?1418580054',
'episode_count' => 25,
'episode_length' => 24,
'genres' =>
<?php return Aviat\AnimeClient\Types\Anime::__set_state(array(
'age_rating' => 'R',
'age_rating_guide' => 'Violence, Profanity',
'cover_image' => 'https://media.kitsu.io/anime/poster_images/7442/small.jpg?1418580054',
'episode_count' => 25,
'episode_length' => 24,
'genres' =>
array (
),
'id' => 32344,
'show_type' => 'TV',
'slug' => 'attack-on-titan',
'status' => 'Finished Airing',
'streaming_links' =>
'id' => 32344,
'included' => NULL,
'show_type' => 'TV',
'slug' => 'attack-on-titan',
'status' => 'Finished Airing',
'streaming_links' =>
array (
0 =>
array (
@ -86,16 +87,15 @@
),
),
),
'synopsis' => 'Several hundred years ago, humans were nearly exterminated by titans. Titans are typically several stories tall, seem to have no intelligence, devour human beings and, worst of all, seem to do it for the pleasure rather than as a food source. A small percentage of humanity survived by enclosing themselves in a city protected by extremely high walls, even taller than the biggest of titans. Flash forward to the present and the city has not seen a titan in over 100 years. Teenage boy Eren and his foster sister Mikasa witness something horrific as the city walls are destroyed by a colossal titan that appears out of thin air. As the smaller titans flood the city, the two kids watch in horror as their mother is eaten alive. Eren vows that he will murder every single titan and take revenge for all of mankind.
'synopsis' => 'Several hundred years ago, humans were nearly exterminated by titans. Titans are typically several stories tall, seem to have no intelligence, devour human beings and, worst of all, seem to do it for the pleasure rather than as a food source. A small percentage of humanity survived by enclosing themselves in a city protected by extremely high walls, even taller than the biggest of titans. Flash forward to the present and the city has not seen a titan in over 100 years. Teenage boy Eren and his foster sister Mikasa witness something horrific as the city walls are destroyed by a colossal titan that appears out of thin air. As the smaller titans flood the city, the two kids watch in horror as their mother is eaten alive. Eren vows that he will murder every single titan and take revenge for all of mankind.
(Source: ANN)',
'title' => 'Attack on Titan',
'titles' =>
'title' => 'Attack on Titan',
'titles' =>
array (
0 => 'Attack on Titan',
1 => 'Shingeki no Kyojin',
2 => '進撃の巨人',
0 => 'Shingeki no Kyojin',
1 => '進撃の巨人',
),
'trailer_id' => 'n4Nj6Y_SNYI',
'url' => 'https://kitsu.io/anime/attack-on-titan',
);
'trailer_id' => 'n4Nj6Y_SNYI',
'url' => 'https://kitsu.io/anime/attack-on-titan',
));

Voir le fichier

@ -1,31 +1,21 @@
<?php return array (
0 =>
array (
'id' => '15084773',
'mal_id' => '26769',
'chapters' =>
Aviat\AnimeClient\Types\MangaListItem::__set_state(array(
'id' => '15084773',
'mal_id' => '26769',
'chapters' =>
array (
'read' => 67,
'total' => '-',
),
'volumes' =>
'volumes' =>
array (
'read' => '-',
'total' => '-',
),
'manga' =>
array (
'id' => '20286',
'titles' =>
array (
0 => 'Bokura wa Minna Kawaisou',
),
'alternate_title' => NULL,
'slug' => 'bokura-wa-minna-kawaisou',
'url' => 'https://kitsu.io/manga/bokura-wa-minna-kawaisou',
'type' => 'manga',
'image' => 'https://media.kitsu.io/manga/poster_images/20286/small.jpg?1434293999',
'genres' =>
'manga' =>
Aviat\AnimeClient\Types\MangaListItemDetail::__set_state(array(
'genres' =>
array (
0 => 'Comedy',
1 => 'Romance',
@ -33,40 +23,39 @@
3 => 'Slice of Life',
4 => 'Thriller',
),
),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 9.0,
),
'id' => '20286',
'image' => 'https://media.kitsu.io/manga/poster_images/20286/small.jpg?1434293999',
'slug' => 'bokura-wa-minna-kawaisou',
'title' => 'Bokura wa Minna Kawaisou',
'titles' =>
array (
),
'type' => 'manga',
'url' => 'https://kitsu.io/manga/bokura-wa-minna-kawaisou',
)),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 9.0,
)),
1 =>
array (
'id' => '15085607',
'mal_id' => '16',
'chapters' =>
Aviat\AnimeClient\Types\MangaListItem::__set_state(array(
'id' => '15085607',
'mal_id' => '16',
'chapters' =>
array (
'read' => 17,
'total' => 120,
),
'volumes' =>
'volumes' =>
array (
'read' => '-',
'total' => 14,
),
'manga' =>
array (
'id' => '47',
'titles' =>
array (
0 => 'Love Hina',
),
'alternate_title' => NULL,
'slug' => 'love-hina',
'url' => 'https://kitsu.io/manga/love-hina',
'type' => 'manga',
'image' => 'https://media.kitsu.io/manga/poster_images/47/small.jpg?1434249493',
'genres' =>
'manga' =>
Aviat\AnimeClient\Types\MangaListItemDetail::__set_state(array(
'genres' =>
array (
0 => 'Comedy',
1 => 'Ecchi',
@ -74,41 +63,39 @@
3 => 'Romance',
4 => 'Sports',
),
),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 7.0,
),
'id' => '47',
'image' => 'https://media.kitsu.io/manga/poster_images/47/small.jpg?1434249493',
'slug' => 'love-hina',
'title' => 'Love Hina',
'titles' =>
array (
),
'type' => 'manga',
'url' => 'https://kitsu.io/manga/love-hina',
)),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 7.0,
)),
2 =>
array (
'id' => '15084529',
'mal_id' => '35003',
'chapters' =>
Aviat\AnimeClient\Types\MangaListItem::__set_state(array(
'id' => '15084529',
'mal_id' => '35003',
'chapters' =>
array (
'read' => 16,
'total' => '-',
),
'volumes' =>
'volumes' =>
array (
'read' => '-',
'total' => '-',
),
'manga' =>
array (
'id' => '11777',
'titles' =>
array (
0 => 'Yamada-kun to 7-nin no Majo',
1 => 'Yamada-kun and the Seven Witches',
),
'alternate_title' => NULL,
'slug' => 'yamada-kun-to-7-nin-no-majo',
'url' => 'https://kitsu.io/manga/yamada-kun-to-7-nin-no-majo',
'type' => 'manga',
'image' => 'https://media.kitsu.io/manga/poster_images/11777/small.jpg?1438784325',
'genres' =>
'manga' =>
Aviat\AnimeClient\Types\MangaListItemDetail::__set_state(array(
'genres' =>
array (
0 => 'Comedy',
1 => 'Ecchi',
@ -118,89 +105,97 @@
5 => 'Sports',
6 => 'Supernatural',
),
),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 9.0,
),
'id' => '11777',
'image' => 'https://media.kitsu.io/manga/poster_images/11777/small.jpg?1438784325',
'slug' => 'yamada-kun-to-7-nin-no-majo',
'title' => 'Yamada-kun to 7-nin no Majo',
'titles' =>
array (
0 => 'Yamada-kun and the Seven Witches',
),
'type' => 'manga',
'url' => 'https://kitsu.io/manga/yamada-kun-to-7-nin-no-majo',
)),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 9.0,
)),
3 =>
array (
'id' => '15312827',
'mal_id' => '78523',
'chapters' =>
Aviat\AnimeClient\Types\MangaListItem::__set_state(array(
'id' => '15312827',
'mal_id' => '78523',
'chapters' =>
array (
'read' => 68,
'total' => '-',
),
'volumes' =>
'volumes' =>
array (
'read' => '-',
'total' => '-',
),
'manga' =>
array (
'id' => '27175',
'titles' =>
array (
0 => 'ReLIFE',
),
'alternate_title' => NULL,
'slug' => 'relife',
'url' => 'https://kitsu.io/manga/relife',
'type' => 'manga',
'image' => 'https://media.kitsu.io/manga/poster_images/27175/small.jpg?1464379411',
'genres' =>
'manga' =>
Aviat\AnimeClient\Types\MangaListItemDetail::__set_state(array(
'genres' =>
array (
0 => 'Romance',
1 => 'School',
2 => 'Slice of Life',
),
),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => '-',
),
'id' => '27175',
'image' => 'https://media.kitsu.io/manga/poster_images/27175/small.jpg?1464379411',
'slug' => 'relife',
'title' => 'ReLIFE',
'titles' =>
array (
),
'type' => 'manga',
'url' => 'https://kitsu.io/manga/relife',
)),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => '-',
)),
4 =>
array (
'id' => '15084769',
'mal_id' => '60815',
'chapters' =>
Aviat\AnimeClient\Types\MangaListItem::__set_state(array(
'id' => '15084769',
'mal_id' => '60815',
'chapters' =>
array (
'read' => 43,
'total' => '-',
),
'volumes' =>
'volumes' =>
array (
'read' => '-',
'total' => '-',
),
'manga' =>
array (
'id' => '25491',
'titles' =>
array (
0 => 'Joshikausei',
),
'alternate_title' => NULL,
'slug' => 'joshikausei',
'url' => 'https://kitsu.io/manga/joshikausei',
'type' => 'manga',
'image' => 'https://media.kitsu.io/manga/poster_images/25491/small.jpg?1434305043',
'genres' =>
'manga' =>
Aviat\AnimeClient\Types\MangaListItemDetail::__set_state(array(
'genres' =>
array (
0 => 'Comedy',
1 => 'School',
2 => 'Slice of Life',
),
),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 8.0,
),
'id' => '25491',
'image' => 'https://media.kitsu.io/manga/poster_images/25491/small.jpg?1434305043',
'slug' => 'joshikausei',
'title' => 'Joshikausei',
'titles' =>
array (
),
'type' => 'manga',
'url' => 'https://kitsu.io/manga/joshikausei',
)),
'reading_status' => 'current',
'notes' => '',
'rereading' => false,
'reread' => 0,
'user_rating' => 8.0,
)),
);

Voir le fichier

@ -1,21 +1,17 @@
<?php return array (
'id' => '20286',
'title' => 'Bokura wa Minna Kawaisou',
'en_title' => NULL,
'jp_title' => 'Bokura wa Minna Kawaisou',
'cover_image' => 'https://media.kitsu.io/manga/poster_images/20286/small.jpg?1434293999',
'manga_type' => 'manga',
'chapter_count' => '-',
'volume_count' => '-',
'synopsis' => 'Usa, a high-school student aspiring to begin a bachelor lifestyle, moves into a new apartment only to discover that he not only shares a room with a perverted roommate that has an obsession for underaged girls, but also that another girl, Ritsu, a love-at-first-sight, is living in the same building as well!
(Source: Kirei Cake)',
'url' => 'https://kitsu.io/manga/bokura-wa-minna-kawaisou',
'genres' =>
<?php return Aviat\AnimeClient\Types\MangaPage::__set_state(array(
'chapter_count' => '-',
'cover_image' => 'https://media.kitsu.io/manga/poster_images/20286/small.jpg?1434293999',
'en_title' => NULL,
'genres' =>
array (
0 => 'Comedy',
1 => 'Romance',
2 => 'School',
3 => 'Slice of Life',
4 => 'Thriller',
),
);
'id' => '20286',
'included' => NULL,
'jp_title' => 'Bokura wa Minna Kawaisou',
'manga_type' => 'manga',
'synopsis' => 'Usa, a high-school student aspiring to begin a bachelor lifestyle, moves into a new apartment only to discover that he not only shares a room with a perverted roommate that has an obsession for underaged girls, but also that another girl, Ritsu, a love-at-first-sight, is living in the same building as well!
(Source: Kirei Cake)',
'title' => 'Bokura wa Minna Kawaisou',
'url' => 'https://kitsu.io/manga/bokura-wa-minna-kawaisou',
'volume_count' => '-',
));