diff --git a/app/Jobs/SendWebMentions.php b/app/Jobs/SendWebMentions.php index 92267d18..dcdd4237 100644 --- a/app/Jobs/SendWebMentions.php +++ b/app/Jobs/SendWebMentions.php @@ -6,8 +6,8 @@ namespace App\Jobs; use App\Models\Note; use GuzzleHttp\Client; +use GuzzleHttp\Exception\GuzzleException; use GuzzleHttp\Psr7\Header; -use GuzzleHttp\Psr7\Uri; use GuzzleHttp\Psr7\UriResolver; use GuzzleHttp\Psr7\Utils; use Illuminate\Bus\Queueable; @@ -22,8 +22,7 @@ class SendWebMentions implements ShouldQueue use Queueable; use SerializesModels; - /** @var Note */ - protected $note; + protected Note $note; /** * Create the job instance, inject dependencies. @@ -39,15 +38,14 @@ class SendWebMentions implements ShouldQueue * Execute the job. * * @return void + * + * @throws GuzzleException */ - public function handle() + public function handle(): void { - //grab the URLs - $inReplyTo = $this->note->in_reply_to ?? ''; - // above so explode doesn’t complain about null being passed in - $urlsInReplyTo = explode(' ', $inReplyTo); + $urlsInReplyTo = explode(' ', $this->note->in_reply_to ?? ''); $urlsNote = $this->getLinks($this->note->note); - $urls = array_filter(array_merge($urlsInReplyTo, $urlsNote)); //filter out none URLs + $urls = array_filter(array_merge($urlsInReplyTo, $urlsNote)); foreach ($urls as $url) { $endpoint = $this->discoverWebmentionEndpoint($url); if ($endpoint !== null) { @@ -67,10 +65,12 @@ class SendWebMentions implements ShouldQueue * * @param string $url * @return string|null + * + * @throws GuzzleException */ public function discoverWebmentionEndpoint(string $url): ?string { - //let’s not send webmentions to myself + // let’s not send webmentions to myself if (parse_url($url, PHP_URL_HOST) === config('app.longurl')) { return null; } @@ -80,6 +80,7 @@ class SendWebMentions implements ShouldQueue $endpoint = null; + /** @var Client $guzzle */ $guzzle = resolve(Client::class); $response = $guzzle->get($url); //check HTTP Headers for webmention endpoint @@ -134,8 +135,6 @@ class SendWebMentions implements ShouldQueue /** * Resolve a URI if necessary. * - * @todo Update deprecated resolve method - * * @param string $url * @param string $base The base of the URL * @return string diff --git a/app/Services/NoteService.php b/app/Services/NoteService.php index a37b917f..049ae8c6 100644 --- a/app/Services/NoteService.php +++ b/app/Services/NoteService.php @@ -28,7 +28,7 @@ class NoteService extends Service $note = Note::create( [ 'note' => $this->getDataByKey($request, 'content'), - 'in_reply_to' => $this->getDataByKey($request, 'in-reploy-to'), + 'in_reply_to' => $this->getDataByKey($request, 'in-reply-to'), 'client_id' => $client, ] ); diff --git a/database/seeders/NotesTableSeeder.php b/database/seeders/NotesTableSeeder.php index 4a0a0bec..7218b219 100644 --- a/database/seeders/NotesTableSeeder.php +++ b/database/seeders/NotesTableSeeder.php @@ -212,6 +212,17 @@ EOF; ->where('id', $noteWithLongUrl->id) ->update(['updated_at' => $now->toDateTimeString()]); + $now = Carbon::now(); + $noteReplyingToMastodon = Note::create([ + 'note' => 'Yup, #DevOps is hard', + 'in_reply_to' => 'https://mastodon.social/@Gargron/109381161123311795', + 'created_at' => $now, + 'client_id' => 'https://quill.p3k.io/', + ]); + DB::table('notes') + ->where('id', $noteReplyingToMastodon->id) + ->update(['updated_at' => $now->toDateTimeString()]); + Note::factory(10)->create(); } } diff --git a/resources/views/notes/index.blade.php b/resources/views/notes/index.blade.php index 6205b6fc..2f32b411 100644 --- a/resources/views/notes/index.blade.php +++ b/resources/views/notes/index.blade.php @@ -8,9 +8,7 @@ generating a name property for the h-feed --> @foreach ($notes as $note) -