From 659bc57e24eb9851b1bf0e2c1065a033514bee41 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 2 Mar 2024 10:16:05 +0000 Subject: [PATCH] Fix issue discovering webmentions endpoints for some sites The Guzzle provided Header::parse does not like commas in URLs --- app/Jobs/SendWebMentions.php | 2 +- tests/Unit/Jobs/SendWebMentionJobTest.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Jobs/SendWebMentions.php b/app/Jobs/SendWebMentions.php index 7e984537..459b1cd8 100644 --- a/app/Jobs/SendWebMentions.php +++ b/app/Jobs/SendWebMentions.php @@ -76,7 +76,7 @@ class SendWebMentions implements ShouldQueue //check HTTP Headers for webmention endpoint $links = Header::parse($response->getHeader('Link')); foreach ($links as $link) { - if (mb_stristr($link['rel'], 'webmention')) { + if (array_key_exists('rel', $link) && mb_stristr($link['rel'], 'webmention')) { return $this->resolveUri(trim($link[0], '<>'), $url); } } diff --git a/tests/Unit/Jobs/SendWebMentionJobTest.php b/tests/Unit/Jobs/SendWebMentionJobTest.php index 2f185b3a..95789eef 100644 --- a/tests/Unit/Jobs/SendWebMentionJobTest.php +++ b/tests/Unit/Jobs/SendWebMentionJobTest.php @@ -114,7 +114,8 @@ class SendWebMentionJobTest extends TestCase public function linksInNotesCanNotSupportWebmentions(): void { $mock = new MockHandler([ - new Response(200), + // URLs with commas currently break the parse function I’m using + new Response(200, ['Link' => '; rel="preconnect"']), ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]);