mirror of
https://github.com/jikan-me/jikan-rest.git
synced 2025-02-20 11:23:35 +08:00
complete AnimeController
This commit is contained in:
parent
6729111d87
commit
45cf49f589
@ -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'));
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Factory;
|
||||
namespace App\Providers;
|
||||
|
||||
use JMS\Serializer\SerializerBuilder;
|
||||
use JMS\Serializer\Handler\HandlerRegistry;
|
||||
|
@ -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;
|
||||
|
108
routes/web.php
108
routes/web.php
@ -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'
|
||||
]);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
@ -49,7 +49,6 @@ Jikan\Model\Anime\Anime:
|
||||
serialized_name: airing
|
||||
aired:
|
||||
expose: true
|
||||
type: array
|
||||
serialized_name: aired
|
||||
duration:
|
||||
expose: true
|
||||
|
Loading…
x
Reference in New Issue
Block a user