浏览代码

Add /api/v1/blocks endpoint

Daniel Supernault 5 年之前
父节点
当前提交
ac9f1bc04e
共有 2 个文件被更改,包括 35 次插入1 次删除
  1. 33 1
      app/Http/Controllers/Api/ApiV1Controller.php
  2. 2 0
      routes/web.php

+ 33 - 1
app/Http/Controllers/Api/ApiV1Controller.php

@@ -500,7 +500,39 @@ class ApiV1Controller extends Controller
         
         $resource = new Fractal\Resource\Collection($profiles, new AccountTransformer());
         $res = $this->fractal->createData($resource)->toArray();
-        return response()->json($res, 200, [], JSON_PRETTY_PRINT);
+        return response()->json($res);
+    }
+
+    /**
+     * GET /api/v1/blocks
+     *
+     *
+     *
+     * @return \App\Transformer\Api\AccountTransformer
+     */
+    public function accountBlocks(Request $request)
+    {
+        abort_if(!$request->user(), 403);
+
+        $this->validate($request, [
+            'limit'     => 'nullable|integer|min:1|max:40',
+            'page'      => 'nullable|integer|min:1|max:10'
+        ]);
+
+        $user = $request->user();
+        $limit = $request->input('limit') ?? 40;
+
+        $blocked = UserFilter::select('filterable_id','filterable_type','filter_type','user_id')
+            ->whereUserId($user->profile_id)
+            ->whereFilterableType('App\Profile')
+            ->whereFilterType('block')
+            ->simplePaginate($limit)
+            ->pluck('filterable_id');
+
+        $profiles = Profile::findOrFail($blocked);
+        $resource = new Fractal\Resource\Collection($profiles, new AccountTransformer());
+        $res = $this->fractal->createData($resource)->toArray();
+        return response()->json($res);
     }
 
     public function statusById(Request $request, $id)

+ 2 - 0
routes/web.php

@@ -86,6 +86,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact
             Route::get('accounts/{id}/followers', 'Api\ApiV1Controller@accountFollowersById')->middleware('auth:api');
             Route::post('accounts/{id}/follow', 'Api\ApiV1Controller@accountFollowById')->middleware('auth:api');
             Route::post('accounts/{id}/unfollow', 'Api\ApiV1Controller@accountUnfollowById')->middleware('auth:api');
+            Route::get('blocks', 'Api\ApiV1Controller@accountBlocks')->middleware('auth:api');
             // Route::get('accounts/{id}', 'PublicApiController@account');
             Route::get('accounts/{id}', 'Api\ApiV1Controller@accountById');
             Route::post('avatar/update', 'ApiController@avatarUpdate')->middleware('auth:api');
@@ -123,6 +124,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact
                 Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers');
                 Route::get('accounts/{id}', 'PublicApiController@account');
                 Route::post('avatar/update', 'ApiController@avatarUpdate');
+                Route::get('blocks', 'Api\ApiV1Controller@accountBlocks');
                 Route::get('likes', 'ApiController@hydrateLikes');
                 Route::post('media', 'ApiController@uploadMedia');
                 Route::delete('media', 'ApiController@deleteMedia');