diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php
index 651d632d..57a7e41c 100644
--- a/app/Http/Controllers/StatusController.php
+++ b/app/Http/Controllers/StatusController.php
@@ -3,33 +3,40 @@
namespace App\Http\Controllers;
use Auth, Cache;
-use App\Jobs\StatusPipeline\{NewStatusPipeline, StatusDelete};
-use App\Jobs\ImageOptimizePipeline\ImageOptimize;
+use League\Fractal;
use Illuminate\Http\Request;
-use App\{Media, Profile, Status, User};
use Vinkla\Hashids\Facades\Hashids;
+use App\{Media, Profile, Status, User};
+use App\Jobs\ImageOptimizePipeline\ImageOptimize;
+use App\Transformer\ActivityPub\StatusTransformer;
+use App\Jobs\StatusPipeline\{NewStatusPipeline, StatusDelete};
class StatusController extends Controller
{
public function show(Request $request, $username, int $id)
{
$user = Profile::whereUsername($username)->firstOrFail();
+
$status = Status::whereProfileId($user->id)
->withCount(['likes', 'comments', 'media'])
->findOrFail($id);
+
if(!$status->media_path && $status->in_reply_to_id) {
return redirect($status->url());
}
+
+ if($request->wantsJson() && config('pixelfed.activitypub_enabled')) {
+ return $this->showActivityPub($request, $status);
+ }
+
$replies = Status::whereInReplyToId($status->id)->simplePaginate(30);
+
return view('status.show', compact('user', 'status', 'replies'));
}
public function compose()
{
- if(Auth::check() == false)
- {
- abort(403);
- }
+ $this->authCheck();
return view('status.compose');
}
@@ -156,4 +163,20 @@ class StatusController extends Controller
return $response;
}
+
+ public function showActivityPub(Request $request, $status)
+ {
+ $fractal = new Fractal\Manager();
+ $resource = new Fractal\Resource\Item($status, new StatusTransformer);
+ $res = $fractal->createData($resource)->toArray();
+ return response(json_encode($res['data']))->header('Content-Type', 'application/activity+json');
+ }
+
+ protected function authCheck()
+ {
+ if(Auth::check() == false)
+ {
+ abort(403);
+ }
+ }
}
diff --git a/resources/views/status/show.blade.php b/resources/views/status/show.blade.php
index 7f711f24..cf9b9db5 100644
--- a/resources/views/status/show.blade.php
+++ b/resources/views/status/show.blade.php
@@ -169,4 +169,4 @@
@push('meta')
-@endpush
+ @endpush