diff --git a/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift b/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift
index 4f35b84fa..93e4bef77 100644
--- a/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift
+++ b/Modules/Parser/Sources/Parser/FeedParser/Feeds/XML/AtomParser.swift
@@ -81,20 +81,23 @@ private extension AtomParser {
static let modified = "modified".utf8CString
}
- private struct XMLString {
+ private struct AttributeKey {
static let rel = "rel"
- static let alternate = "alternate"
- static let related = "related"
- static let enclosure = "enclosure"
static let href = "href"
static let title = "title"
static let type = "type"
- static let text = "text"
static let length = "length"
static let xmlLang = "xml:lang"
static let xmlBase = "xml:base"
}
+ private struct AttributeValue {
+ static let text = "text"
+ static let alternate = "alternate"
+ static let related = "related"
+ static let enclosure = "enclosure"
+ }
+
func currentString(_ saxParser: SAXParser) -> String? {
saxParser.currentStringWithTrimmedWhitespace
@@ -126,12 +129,12 @@ private extension AtomParser {
guard feed.link == nil, let currentAttributes else {
return
}
- guard let link = currentAttributes[XMLString.href] else {
+ guard let link = currentAttributes[AttributeKey.href] else {
return
}
let isRelated: Bool = {
- if let related = currentAttributes[XMLString.rel], related == XMLString.alternate { // rel="alternate"
+ if let related = currentAttributes[AttributeKey.rel], related == AttributeValue.alternate { // rel="alternate"
return true
}
return currentAttributes.count == 1 // Example: — no rel or anything
@@ -149,11 +152,11 @@ private extension AtomParser {
}
if feed.language == nil {
- feed.language = currentAttributes[XMLString.xmlLang]
+ feed.language = currentAttributes[AttributeKey.xmlLang]
}
if xmlBaseURL == nil {
- if let xmlBase = currentAttributes[XMLString.xmlBase] {
+ if let xmlBase = currentAttributes[AttributeKey.xmlBase] {
if let baseURL = URL(string: xmlBase) {
xmlBaseURL = baseURL
}
@@ -221,7 +224,7 @@ private extension AtomParser {
var content = currentString(saxParser)
- if currentAttributes?[XMLString.type] == XMLString.text {
+ if currentAttributes?[AttributeKey.type] == AttributeValue.text {
content = content?.replacingOccurrences(of: "\n", with: "\n
")
}
@@ -241,27 +244,27 @@ private extension AtomParser {
guard let attributes = currentAttributes else {
return
}
- guard let urlString = attributes[XMLString.href], !urlString.isEmpty else {
+ guard let urlString = attributes[AttributeKey.href], !urlString.isEmpty else {
return
}
let resolvedURLString = linkResolvedAgainstXMLBase(urlString)
- var rel = attributes[XMLString.rel]
+ var rel = attributes[AttributeKey.rel]
if rel?.isEmpty ?? true {
- rel = XMLString.alternate
+ rel = AttributeValue.alternate
}
- if rel == XMLString.related {
+ if rel == AttributeValue.related {
if article.link == nil {
article.link = resolvedURLString
}
}
- else if rel == XMLString.alternate {
+ else if rel == AttributeValue.alternate {
if article.permalink == nil {
article.permalink = resolvedURLString
}
}
- else if rel == XMLString.enclosure {
+ else if rel == AttributeValue.enclosure {
if let enclosure = enclosure(resolvedURLString, attributes) {
article.addEnclosure(enclosure)
}
@@ -283,10 +286,10 @@ private extension AtomParser {
func enclosure(_ urlString: String, _ attributes: StringDictionary) -> RSSEnclosure? {
let enclosure = RSSEnclosure(url: urlString)
- enclosure.title = attributes[XMLString.title]
- enclosure.mimeType = attributes[XMLString.type]
+ enclosure.title = attributes[AttributeKey.title]
+ enclosure.mimeType = attributes[AttributeKey.type]
- if let lengthString = attributes[XMLString.length] {
+ if let lengthString = attributes[AttributeKey.length] {
enclosure.length = Int(lengthString)
}