From 7b3889bdf568fb95c705b1ad6b042738c161f64a Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Tue, 15 Oct 2024 18:14:06 -0700 Subject: [PATCH] =?UTF-8?q?Pick=20up=20the=20home=20page=20link=20from=20a?= =?UTF-8?q?n=20Atom=20feed=20when=20it=E2=80=99s=20not=20specified=20as=20?= =?UTF-8?q?rel=3D"alternate"=20=E2=80=94=C2=A0when=20it=E2=80=99s=20just?= =?UTF-8?q?=20an=20href.=20(Now=20we=20can=20get=20the=20favicon=20and=20f?= =?UTF-8?q?eed=20icon=20properly=20for=20Allen=20Pike=E2=80=99s=20feed.)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Parser/FeedParser/Feeds/XML/AtomParser.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift b/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift index ef7002390..80751521d 100644 --- a/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift +++ b/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift @@ -120,9 +120,19 @@ private extension AtomParser { guard feed.link == nil, let currentAttributes else { return } + guard let link = currentAttributes[XMLString.href] else { + return + } - if let related = currentAttributes[XMLString.rel], related == XMLString.alternate { - feed.link = currentAttributes[XMLString.href] + let isRelated: Bool = { + if let related = currentAttributes[XMLString.rel], related == XMLString.alternate { // rel="alternate" + return true + } + return currentAttributes.count == 1 // Example: — no rel or anything + }() + + if isRelated { + feed.link = link } }