add v4 User Reviews

This commit is contained in:
Irfan 2020-07-12 13:34:29 +05:00
parent 59855bb316
commit 1070405950
3 changed files with 116 additions and 18 deletions

View File

@ -7,7 +7,9 @@ use App\Http\HttpHelper;
use App\Http\HttpResponse;
use App\Http\Resources\V4\AnimeCharactersResource;
use App\Http\Resources\V4\CommonResource;
use App\Http\Resources\V4\ProfileFriendsResource;
use App\Http\Resources\V4\ProfileHistoryResource;
use App\Http\Resources\V4\ResultsResource;
use App\Profile;
use App\User;
use Illuminate\Http\Request;
@ -100,8 +102,8 @@ class UserController extends Controller
$results->isEmpty()
|| $this->isExpired($request, $results)
) {
$anime = ['history'=>$this->jikan->getUserHistory(new UserHistoryRequest($username, $type))];
$response = \json_decode($this->serializer->serialize($anime, 'json'), true);
$data = ['history'=>$this->jikan->getUserHistory(new UserHistoryRequest($username, $type))];
$response = \json_decode($this->serializer->serialize($data, 'json'), true);
if (HttpHelper::hasError($response)) {
return HttpResponse::notFound($request);
@ -145,10 +147,60 @@ class UserController extends Controller
);
}
public function friends(string $username, int $page = 1)
public function friends(Request $request, string $username)
{
$person = ['friends' => $this->jikan->getUserFriends(new UserFriendsRequest($username, $page))];
return response($this->serializer->serialize($person, 'json'));
$results = DB::table($this->getRouteTable($request))
->where('request_hash', $this->fingerprint)
->get();
if (
$results->isEmpty()
|| $this->isExpired($request, $results)
) {
$page = $request->get('page') ?? 1;
$data = ['results' => $this->jikan->getUserFriends(new UserFriendsRequest($username, $page))];
$response = \json_decode($this->serializer->serialize($data, 'json'), true);
if (HttpHelper::hasError($response)) {
return HttpResponse::notFound($request);
}
if ($results->isEmpty()) {
$meta = [
'createdAt' => new UTCDateTime(),
'modifiedAt' => new UTCDateTime(),
'request_hash' => $this->fingerprint
];
}
$meta['modifiedAt'] = new UTCDateTime();
$response = $meta + $response;
if ($results->isEmpty()) {
DB::table($this->getRouteTable($request))
->insert($response);
}
if ($this->isExpired($request, $results)) {
DB::table($this->getRouteTable($request))
->where('request_hash', $this->fingerprint)
->update($response);
}
$results = DB::table($this->getRouteTable($request))
->where('request_hash', $this->fingerprint)
->get();
}
$response = (new ResultsResource(
$results->first()
))->response();
return $this->prepareResponse(
$response,
$results,
$request
);
}
public function animelist(string $username, ?string $status = null, int $page = 1)
@ -201,14 +253,60 @@ class UserController extends Controller
);
}
public function reviews(string $username)
public function reviews(Request $request, string $username)
{
$page = $_GET['page'] ?? 1;
$results = $this->jikan->getUserReviews(
new UserReviewsRequest($username, $page)
);
$results = DB::table($this->getRouteTable($request))
->where('request_hash', $this->fingerprint)
->get();
return response($this->serializer->serialize($results, 'json'));
if (
$results->isEmpty()
|| $this->isExpired($request, $results)
) {
$page = $request->get('page') ?? 1;
$data = $this->jikan->getUserReviews(new UserReviewsRequest($username, $page));
$response = \json_decode($this->serializer->serialize($data, 'json'), true);
if (HttpHelper::hasError($response)) {
return HttpResponse::notFound($request);
}
if ($results->isEmpty()) {
$meta = [
'createdAt' => new UTCDateTime(),
'modifiedAt' => new UTCDateTime(),
'request_hash' => $this->fingerprint
];
}
$meta['modifiedAt'] = new UTCDateTime();
$response = $meta + $response;
if ($results->isEmpty()) {
DB::table($this->getRouteTable($request))
->insert($response);
}
if ($this->isExpired($request, $results)) {
DB::table($this->getRouteTable($request))
->where('request_hash', $this->fingerprint)
->update($response);
}
$results = DB::table($this->getRouteTable($request))
->where('request_hash', $this->fingerprint)
->get();
}
$response = (new ResultsResource(
$results->first()
))->response();
return $this->prepareResponse(
$response,
$results,
$request
);
}
public function recommendations(string $username)

View File

@ -14,7 +14,7 @@
"flipbox/lumen-generator": "^6",
"illuminate/redis": "^7",
"jenssegers/mongodb": "^4.0",
"jikan-me/jikan": "v3.0.0-alpha.10",
"jikan-me/jikan": "v3.0.0-alpha.11",
"jms/serializer": "^1.13",
"laravel/lumen-framework": "^7.0",
"league/flysystem": "^1.0",

12
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "1ed69715f37c5e76091e7f4b6d4edb89",
"content-hash": "52dd02eaea856c122867837a03d27c77",
"packages": [
{
"name": "brick/math",
@ -2210,16 +2210,16 @@
},
{
"name": "jikan-me/jikan",
"version": "v3.0.0-alpha.10",
"version": "v3.0.0-alpha.11",
"source": {
"type": "git",
"url": "https://github.com/jikan-me/jikan.git",
"reference": "0d1a587ab092e729f277860347b9fd371177fd0d"
"reference": "303b43aba67a35f2fe23731140cb4a7733ac03a6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jikan-me/jikan/zipball/0d1a587ab092e729f277860347b9fd371177fd0d",
"reference": "0d1a587ab092e729f277860347b9fd371177fd0d",
"url": "https://api.github.com/repos/jikan-me/jikan/zipball/303b43aba67a35f2fe23731140cb4a7733ac03a6",
"reference": "303b43aba67a35f2fe23731140cb4a7733ac03a6",
"shasum": ""
},
"require": {
@ -2257,7 +2257,7 @@
}
],
"description": "Jikan is an unofficial MyAnimeList API",
"time": "2020-07-11T07:32:17+00:00"
"time": "2020-07-12T07:50:34+00:00"
},
{
"name": "jms/metadata",