From 243fcac7d539fe7649bf52db3181a68e1a6289bf Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 23 Aug 2022 22:34:22 -0600 Subject: [PATCH] Update Discover apis --- app/Http/Controllers/DiscoverController.php | 36 ++++++++++++--------- routes/api.php | 2 ++ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/DiscoverController.php b/app/Http/Controllers/DiscoverController.php index a231f86d..4fa370be 100644 --- a/app/Http/Controllers/DiscoverController.php +++ b/app/Http/Controllers/DiscoverController.php @@ -123,7 +123,7 @@ class DiscoverController extends Controller public function trendingApi(Request $request) { - abort_if(config('instance.discover.public') == false && !Auth::check(), 403); + abort_if(config('instance.discover.public') == false && !$request->user(), 403); $this->validate($request, [ 'range' => 'nullable|string|in:daily,monthly,yearly', @@ -179,21 +179,25 @@ class DiscoverController extends Controller public function trendingHashtags(Request $request) { - $res = StatusHashtag::select('hashtag_id', \DB::raw('count(*) as total')) - ->groupBy('hashtag_id') - ->orderBy('total','desc') - ->where('created_at', '>', now()->subDays(90)) - ->take(9) - ->get() - ->map(function($h) { - $hashtag = $h->hashtag; - return [ - 'id' => $hashtag->id, - 'total' => $h->total, - 'name' => '#'.$hashtag->name, - 'url' => $hashtag->url('?src=dsh1') - ]; - }); + abort_if(!$request->user(), 403); + + $res = Cache::remember('api:discover:v1.1:trending:hashtags', 3600, function() { + return StatusHashtag::select('hashtag_id', \DB::raw('count(*) as total')) + ->groupBy('hashtag_id') + ->orderBy('total','desc') + ->where('created_at', '>', now()->subDays(90)) + ->take(9) + ->get() + ->map(function($h) { + $hashtag = $h->hashtag; + return [ + 'id' => $hashtag->id, + 'total' => $h->total, + 'name' => '#'.$hashtag->name, + 'url' => $hashtag->url() + ]; + }); + }); return $res; } diff --git a/routes/api.php b/routes/api.php index ea179f1b..20c98c17 100644 --- a/routes/api.php +++ b/routes/api.php @@ -112,6 +112,8 @@ Route::group(['prefix' => 'api'], function() use($middleware) { Route::group(['prefix' => 'discover'], function () use($middleware) { Route::get('accounts/popular', 'Api\ApiV1Controller@discoverAccountsPopular')->middleware($middleware); + Route::get('posts/trending', 'DiscoverController@trendingApi')->middleware($middleware); + Route::get('posts/hashtags', 'DiscoverController@trendingHashtags')->middleware($middleware); }); });