Update PublicApiController

This commit is contained in:
Daniel Supernault 2018-12-01 21:01:15 -07:00
parent 29ddfe164e
commit d99d7e7c19
No known key found for this signature in database
GPG Key ID: 0DEF1C662C9033F7
1 changed files with 49 additions and 1 deletions

View File

@ -31,7 +31,7 @@ class PublicApiController extends Controller
public function __construct()
{
$this->middleware('throttle:200, 30');
$this->middleware('throttle:3000, 30');
$this->fractal = new Fractal\Manager();
$this->fractal->setSerializer(new ArraySerializer());
}
@ -47,6 +47,30 @@ class PublicApiController extends Controller
}
}
protected function getLikes($status)
{
if(false == Auth::check()) {
return [];
} else {
$profile = Auth::user()->profile;
$likes = $status->likedBy()->orderBy('created_at','desc')->paginate(10);
$collection = new Fractal\Resource\Collection($likes, new AccountTransformer());
return $this->fractal->createData($collection)->toArray();
}
}
protected function getShares($status)
{
if(false == Auth::check()) {
return [];
} else {
$profile = Auth::user()->profile;
$shares = $status->sharedBy()->orderBy('created_at','desc')->paginate(10);
$collection = new Fractal\Resource\Collection($shares, new AccountTransformer());
return $this->fractal->createData($collection)->toArray();
}
}
public function status(Request $request, $username, int $postid)
{
$profile = Profile::whereUsername($username)->first();
@ -56,6 +80,8 @@ class PublicApiController extends Controller
$res = [
'status' => $this->fractal->createData($item)->toArray(),
'user' => $this->getUserData(),
'likes' => $this->getLikes($status),
'shares' => $this->getShares($status),
'reactions' => [
'liked' => $status->liked(),
'shared' => $status->shared(),
@ -104,6 +130,28 @@ class PublicApiController extends Controller
return response()->json($res, 200, [], JSON_PRETTY_PRINT);
}
public function statusLikes(Request $request, $username, $id)
{
$profile = Profile::whereUsername($username)->first();
$status = Status::whereProfileId($profile->id)->find($id);
$this->scopeCheck($profile, $status);
$likes = $this->getLikes($status);
return response()->json([
'data' => $likes
]);
}
public function statusShares(Request $request, $username, $id)
{
$profile = Profile::whereUsername($username)->first();
$status = Status::whereProfileId($profile->id)->find($id);
$this->scopeCheck($profile, $status);
$shares = $this->getShares($status);
return response()->json([
'data' => $shares
]);
}
protected function scopeCheck(Profile $profile, Status $status)
{
if($profile->is_private == true && Auth::check() == false) {