From b3d82edd0f99e29bd056c7c577de2b8a6122433b Mon Sep 17 00:00:00 2001
From: Daniel Supernault <danielsupernault@gmail.com>
Date: Wed, 25 Sep 2019 21:28:30 -0600
Subject: [PATCH] Add /api/v1/filters endpoint

---
 app/Http/Controllers/Api/ApiV1Controller.php | 20 ++++++++++++++------
 routes/api.php                               |  1 -
 routes/web.php                               |  1 +
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php
index 6eec4973..b0b6fb3d 100644
--- a/app/Http/Controllers/Api/ApiV1Controller.php
+++ b/app/Http/Controllers/Api/ApiV1Controller.php
@@ -732,6 +732,20 @@ class ApiV1Controller extends Controller
         return response()->json($res);
     }
 
+    /**
+     * GET /api/v1/filters
+     *
+     *  Return empty response since we filter server side
+     *
+     * @return array
+     */
+    public function accountFilters(Request $request)
+    {
+        abort_if(!$request->user(), 403);
+
+        return response()->json([]);
+    }
+
     public function statusById(Request $request, $id)
     {
         $status = Status::whereVisibility('public')->findOrFail($id);
@@ -763,12 +777,6 @@ class ApiV1Controller extends Controller
         return response()->json($res, 200, [], JSON_PRETTY_PRINT);
     }
 
-    public function filters(Request $request)
-    {
-        // Pixelfed does not yet support keyword filters
-        return response()->json([]);
-    }
-
     public function context(Request $request)
     {
         // todo
diff --git a/routes/api.php b/routes/api.php
index 65380a01..da92e3bb 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -9,7 +9,6 @@ Route::group(['prefix' => 'api'], function() {
 	Route::group(['prefix' => 'v1'], function() {
 		Route::post('apps', 'Api\ApiV1Controller@apps');
 		Route::get('instance', 'Api\ApiV1Controller@instance');
-		Route::get('filters', 'Api\ApiV1Controller@filters');
 		Route::get('statuses/{id}', 'Api\ApiV1Controller@statusById');
 		Route::get('statuses/{id}/context', 'Api\ApiV1Controller@context');
 	});
diff --git a/routes/web.php b/routes/web.php
index 00e70261..bc1bfdaa 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -102,6 +102,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact
             Route::get('favourites', 'Api\ApiV1Controller@accountFavourites')->middleware('auth:api');
             Route::post('statuses/{id}/favourite', 'Api\ApiV1Controller@statusFavouriteById')->middleware('auth:api');
             Route::post('statuses/{id}/unfavourite', 'Api\ApiV1Controller@statusUnfavouriteById')->middleware('auth:api');
+            Route::get('filters', 'Api\ApiV1Controller@accountFilters')->middleware('auth:api');
 
             Route::get('likes', 'ApiController@hydrateLikes');
             Route::post('media', 'ApiController@uploadMedia')->middleware('auth:api');