complete AnimeController

This commit is contained in:
irfan-dahir 2018-08-12 02:45:26 +05:00
parent 6729111d87
commit 45cf49f589
5 changed files with 155 additions and 79 deletions

View File

@ -2,13 +2,69 @@
namespace App\Http\Controllers;
use Jikan\Request\Anime\AnimeCharactersAndStaffRequest;
use Jikan\Request\Anime\AnimeEpisodesRequest;
use Jikan\Request\Anime\AnimeForumRequest;
use Jikan\Request\Anime\AnimeMoreInfoRequest;
use Jikan\Request\Anime\AnimeNewsRequest;
use Jikan\Request\Anime\AnimePicturesRequest;
use Jikan\Request\Anime\AnimeRequest;
use Jikan\Request\Anime\AnimeStatsRequest;
use Jikan\Request\Anime\AnimeVideosRequest;
class AnimeController extends Controller
{
public function request(int $id, $request = null, $requestArg = null)
public function main(int $id)
{
$anime = $this->jikan->getAnime(new AnimeRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
public function characters_staff(int $id)
{
$anime = $this->jikan->getAnimeCharactersAndStaff(new AnimeCharactersAndStaffRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
public function episodes(int $id, int $page)
{
$anime = $this->jikan->getAnimeEpisodes(new AnimeEpisodesRequest($id, $page));
return response($this->serializer->serialize($anime, 'json'));
}
public function news(int $id)
{
$anime = $this->jikan->getNewsList(new AnimeNewsRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
public function forum(int $id)
{
$anime = $this->jikan->getAnimeForum(new AnimeForumRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
public function videos(int $id)
{
$anime = $this->jikan->getAnimeVideos(new AnimeVideosRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
public function pictures(int $id)
{
$anime = $this->jikan->getAnimePictures(new AnimePicturesRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
public function stats(int $id)
{
$anime = $this->jikan->getAnimeStats(new AnimeStatsRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
public function moreInfo(int $id)
{
$anime = $this->jikan->getAnimeMoreInfo(new AnimeMoreInfoRequest($id));
return response($this->serializer->serialize($anime, 'json'));
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace App\Factory;
namespace App\Providers;
use JMS\Serializer\SerializerBuilder;
use JMS\Serializer\Handler\HandlerRegistry;

View File

@ -1,10 +1,5 @@
<?php
use Jikan\Model\Common\DateRange;
use Jikan\Model\Common\MalUrl;
use JMS\Serializer\Handler\HandlerRegistry;
use JMS\Serializer\SerializerBuilder;
require_once __DIR__.'/../vendor/autoload.php';
try {
@ -66,6 +61,21 @@ $app->singleton(
App\Console\Kernel::class
);
$app->singleton(
\JMS\Serializer\Serializer::class,
function () {
return App\Providers\SerializerFactory::create();
}
);
$app->singleton(
\Jikan\MyAnimeList\MalClient::class,
function () {
return new \Jikan\MyAnimeList\MalClient();
}
);
/*
|--------------------------------------------------------------------------
| Register Middleware
@ -126,50 +136,5 @@ $app->router->group(
}
);
$app->singleton(
\JMS\Serializer\Serializer::class,
function () {
return (new SerializerBuilder())
->addMetadataDir(__DIR__.'/../storage/app/metadata')
->configureHandlers(
function (HandlerRegistry $registry) {
$registry->registerHandler(
'serialization',
MalUrl::class,
'json',
function ($visitor, MalUrl $obj, array $type) {
return [
'mal_id' => $obj->getMalId(),
'type' => $obj->getType(),
'name' => $obj->getTitle(),
'url' => $obj->getUrl(),
];
}
);
$registry->registerHandler(
'serialization',
DateRange::class,
'json',
function ($visitor, DateRange $obj, array $type) {
return [
'from' => date_format($obj->getFrom(), 'c'),
'to' => date_format($obj->getUntil(), 'c'),
'string' => (string)$obj,
];
}
);
}
)
->build();
}
);
$app->singleton(
\Jikan\MyAnimeList\MalClient::class,
function () {
return new \Jikan\MyAnimeList\MalClient();
}
);
return $app;

View File

@ -35,39 +35,95 @@ $router->get('meta/{request:[A-Za-z]+}[/{type:[A-Za-z]+}[/{period:[A-Za-z]+}[/{p
$router->group(['middleware' => []], function() use ($router) {
$router->get('anime[/{id:[0-9]+}[/{extend:[A-Za-z_]+}[/{extendArgs}]]]', [
'uses' => 'AnimeController@request'
]);
$router->get('anime[/{id:[0-9]+}[/{extend:[A-Za-z_]+}[/{extendArgs}]]]', [
'uses' => 'AnimeController@a'
]);
$router->get('manga[/{id:[0-9]+}[/{extend:[A-Za-z]+}]]', [
'uses' => 'MangaController@request'
]);
$router->get('manga[/{id:[0-9]+}[/{extend:[A-Za-z]+}]]', [
'uses' => 'MangaController@request'
]);
$router->get('person[/{id:[0-9]+}[/{extend:[A-Za-z]+}]]', [
'uses' => 'PersonController@request'
]);
$router->get('person[/{id:[0-9]+}[/{extend:[A-Za-z]+}]]', [
'uses' => 'PersonController@request'
]);
$router->get('character[/{id:[0-9]+}[/{extend:[A-Za-z]+}]]', [
'uses' => 'CharacterController@request'
]);
$router->get('character[/{id:[0-9]+}[/{extend:[A-Za-z]+}]]', [
'uses' => 'CharacterController@request'
]);
$router->get('search[/{type}[/{query}[/{page:[0-9]+}]]]', [
'uses' => 'SearchController@request'
]);
$router->get('search[/{type}[/{query}[/{page:[0-9]+}]]]', [
'uses' => 'SearchController@request'
]);
$router->get('season[/{year:[0-9]{4}}/{season:[A-Za-z]+}]', [
'uses' => 'SeasonController@request'
]);
$router->get('schedule[/{day:[A-Za-z]+}]', [
'uses' => 'ScheduleController@request'
]);
$router->get('top/{type:[A-Za-z]+}[/{page:[0-9]+}[/{subtype:[A-Za-z]+}]]', [
'uses' => 'TopController@request'
]);
$router->get('season[/{year:[0-9]{4}}/{season:[A-Za-z]+}]', [
'uses' => 'SeasonController@request'
]);
$router->get('schedule[/{day:[A-Za-z]+}]', [
'uses' => 'ScheduleController@request'
]);
$router->get('top/{type:[A-Za-z]+}[/{page:[0-9]+}[/{subtype:[A-Za-z]+}]]', [
'uses' => 'TopController@request'
]);
});
/*
* REST v3
*/
$router->group(
[
'middleware' => [],
'prefix' => 'v3'
],
function() use ($router) {
$router->group(
[
'prefix' => 'anime'
],
function() use ($router) {
$router->get('{id:[0-9]+}', [
'uses' => 'AnimeController@main'
]);
$router->get('{id:[0-9]+}/characters_staff', [
'uses' => 'AnimeController@characters_staff'
]);
$router->get('{id:[0-9]+}/episodes/{page:[0-9]+}', [
'uses' => 'AnimeController@episodes'
]);
$router->get('{id:[0-9]+}/news', [
'uses' => 'AnimeController@news'
]);
$router->get('{id:[0-9]+}/forum', [
'uses' => 'AnimeController@forum'
]);
$router->get('{id:[0-9]+}/videos', [
'uses' => 'AnimeController@videos'
]);
$router->get('{id:[0-9]+}/pictures', [
'uses' => 'AnimeController@pictures'
]);
$router->get('{id:[0-9]+}/stats', [
'uses' => 'AnimeController@stats'
]);
$router->get('{id:[0-9]+}/moreinfo', [
'uses' => 'AnimeController@moreInfo'
]);
}
);
}
);

View File

@ -49,7 +49,6 @@ Jikan\Model\Anime\Anime:
serialized_name: airing
aired:
expose: true
type: array
serialized_name: aired
duration:
expose: true