Update StatusController, add AP discovery

This commit is contained in:
Daniel Supernault 2018-08-13 22:23:40 -06:00
parent 3193ee2017
commit 7192c11355
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
2 changed files with 31 additions and 8 deletions

View file

@ -3,33 +3,40 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Auth, Cache; use Auth, Cache;
use App\Jobs\StatusPipeline\{NewStatusPipeline, StatusDelete}; use League\Fractal;
use App\Jobs\ImageOptimizePipeline\ImageOptimize;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\{Media, Profile, Status, User};
use Vinkla\Hashids\Facades\Hashids; 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 class StatusController extends Controller
{ {
public function show(Request $request, $username, int $id) public function show(Request $request, $username, int $id)
{ {
$user = Profile::whereUsername($username)->firstOrFail(); $user = Profile::whereUsername($username)->firstOrFail();
$status = Status::whereProfileId($user->id) $status = Status::whereProfileId($user->id)
->withCount(['likes', 'comments', 'media']) ->withCount(['likes', 'comments', 'media'])
->findOrFail($id); ->findOrFail($id);
if(!$status->media_path && $status->in_reply_to_id) { if(!$status->media_path && $status->in_reply_to_id) {
return redirect($status->url()); return redirect($status->url());
} }
if($request->wantsJson() && config('pixelfed.activitypub_enabled')) {
return $this->showActivityPub($request, $status);
}
$replies = Status::whereInReplyToId($status->id)->simplePaginate(30); $replies = Status::whereInReplyToId($status->id)->simplePaginate(30);
return view('status.show', compact('user', 'status', 'replies')); return view('status.show', compact('user', 'status', 'replies'));
} }
public function compose() public function compose()
{ {
if(Auth::check() == false) $this->authCheck();
{
abort(403);
}
return view('status.compose'); return view('status.compose');
} }
@ -156,4 +163,20 @@ class StatusController extends Controller
return $response; 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);
}
}
} }

View file

@ -169,4 +169,4 @@
@push('meta') @push('meta')
<meta property="og:description" content="{{ $status->caption }}"> <meta property="og:description" content="{{ $status->caption }}">
<meta property="og:image" content="{{$status->mediaUrl()}}"> <meta property="og:image" content="{{$status->mediaUrl()}}">
@endpush <link href='{{$status->url()}}' rel='alternate' type='application/activity+json'>@endpush