mirror of
https://github.com/jikan-me/jikan-rest.git
synced 2025-02-20 11:23:35 +08:00
add v4 Random (Anime, Manga, Character, Person) endpoint
This commit is contained in:
parent
9f21f86b4f
commit
155aeb0a0f
82
app/Http/Controllers/V4DB/RandomController.php
Normal file
82
app/Http/Controllers/V4DB/RandomController.php
Normal file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\V4DB;
|
||||
|
||||
use App\Anime;
|
||||
use App\Character;
|
||||
use App\Http\HttpHelper;
|
||||
use App\Http\HttpResponse;
|
||||
use App\Http\Resources\V4\AnimeCollection;
|
||||
use App\Http\Resources\V4\AnimeResource;
|
||||
use App\Http\Resources\V4\CharacterCollection;
|
||||
use App\Http\Resources\V4\MangaCollection;
|
||||
use App\Http\Resources\V4\PersonCollection;
|
||||
use App\Manga;
|
||||
use App\Person;
|
||||
use Illuminate\Http\Request;
|
||||
use MongoDB\BSON\UTCDateTime;
|
||||
|
||||
class RandomController extends Controller
|
||||
{
|
||||
public function anime(Request $request)
|
||||
{
|
||||
$sfw = $request->get('sfw');
|
||||
|
||||
|
||||
$results = Anime::query();
|
||||
|
||||
if (!is_null($sfw)) {
|
||||
$results = $results
|
||||
->where('rating', '!=', 'Rx - Hentai');
|
||||
}
|
||||
|
||||
$results = $results
|
||||
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
|
||||
|
||||
return new AnimeCollection(
|
||||
$results
|
||||
);
|
||||
}
|
||||
|
||||
public function manga(Request $request)
|
||||
{
|
||||
$sfw = $request->get('sfw');
|
||||
|
||||
|
||||
$results = Manga::query();
|
||||
|
||||
if (!is_null($sfw)) {
|
||||
$results = $results
|
||||
->where('type', '!=', 'Doujinshi');
|
||||
}
|
||||
|
||||
$results = $results
|
||||
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
|
||||
|
||||
return new MangaCollection(
|
||||
$results
|
||||
);
|
||||
}
|
||||
|
||||
public function characters(Request $request)
|
||||
{
|
||||
|
||||
$results = Character::query()
|
||||
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
|
||||
|
||||
return new CharacterCollection(
|
||||
$results
|
||||
);
|
||||
}
|
||||
|
||||
public function people(Request $request)
|
||||
{
|
||||
|
||||
$results = Person::query()
|
||||
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
|
||||
|
||||
return new PersonCollection(
|
||||
$results
|
||||
);
|
||||
}
|
||||
}
|
@ -463,4 +463,27 @@ $router->group(
|
||||
'uses' => 'WatchController@popularPromos'
|
||||
]);
|
||||
}
|
||||
);
|
||||
|
||||
$router->group(
|
||||
[
|
||||
'prefix' => 'random'
|
||||
],
|
||||
function() use ($router) {
|
||||
$router->get('/anime', [
|
||||
'uses' => 'RandomController@anime',
|
||||
]);
|
||||
|
||||
$router->get('/manga', [
|
||||
'uses' => 'RandomController@manga',
|
||||
]);
|
||||
|
||||
$router->get('/character', [
|
||||
'uses' => 'RandomController@characters',
|
||||
]);
|
||||
|
||||
$router->get('/person', [
|
||||
'uses' => 'RandomController@people',
|
||||
]);
|
||||
}
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user