From fcf231f4308eedf27acc709d14245c94e9a827db Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 25 Sep 2019 23:01:37 -0600 Subject: [PATCH] Add /api/v1/media/{id} endpoint --- app/Http/Controllers/Api/ApiV1Controller.php | 35 +++++++++++++++++++- routes/web.php | 1 + 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 40cc17298..aa742c596 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -900,7 +900,8 @@ class ApiV1Controller extends Controller ]; }, 'filter_name' => 'nullable|string|max:24', - 'filter_class' => 'nullable|alpha_dash|max:24' + 'filter_class' => 'nullable|alpha_dash|max:24', + 'description' => 'nullable|string|max:420' ]); $user = $request->user(); @@ -938,6 +939,7 @@ class ApiV1Controller extends Controller $media->original_sha256 = $hash; $media->size = $photo->getSize(); $media->mime = $photo->getMimeType(); + $media->caption = $request->input('description'); $media->filter_class = $request->input('filter_class'); $media->filter_name = $request->input('filter_name'); $media->save(); @@ -962,6 +964,37 @@ class ApiV1Controller extends Controller return response()->json($res); } + /** + * PUT /api/v1/media/{id} + * + * @param integer $id + * + * @return App\Transformer\Api\MediaTransformer + */ + public function mediaUpdate(Request $request, $id) + { + abort_if(!$request->user(), 403); + + $this->validate($request, [ + 'description' => 'nullable|string|max:420' + ]); + + $user = $request->user(); + + $media = Media::whereUserId($user->id) + ->whereNull('status_id') + ->findOrFail($id); + + $media->caption = $request->input('description'); + $media->save(); + + $resource = new Fractal\Resource\Item($media, new MediaTransformer()); + $res = $this->fractal->createData($resource)->toArray(); + $res['preview_url'] = url('/storage/no-preview.png'); + $res['url'] = url('/storage/no-preview.png'); + return response()->json($res); + } + public function statusById(Request $request, $id) { $status = Status::whereVisibility('public')->findOrFail($id); diff --git a/routes/web.php b/routes/web.php index 2c8480771..3ad9f6c81 100644 --- a/routes/web.php +++ b/routes/web.php @@ -111,6 +111,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('accounts/{id}/lists', 'Api\ApiV1Controller@accountListsById')->middleware('auth:api'); Route::get('lists/{id}/accounts', 'Api\ApiV1Controller@accountListsById')->middleware('auth:api'); Route::post('media', 'Api\ApiV1Controller@mediaUpload')->middleware('auth:api'); + Route::put('media/{id}', 'Api\ApiV1Controller@mediaUpdate')->middleware('auth:api'); // Route::get('likes', 'ApiController@hydrateLikes'); // Route::post('media', 'ApiController@uploadMedia')->middleware('auth:api');