From 0072f9c65a8dcd4296c8610bde7d94fbceefe453 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 14 Dec 2024 22:09:14 -0800 Subject: [PATCH] Add special case user-agent for openrss.org when downloading from Downloader (this matches behavior in DownloadSession). --- RSWeb/Sources/RSWeb/Downloader.swift | 13 ++++++------- RSWeb/Sources/RSWeb/SpecialCases.swift | 10 ++++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/RSWeb/Sources/RSWeb/Downloader.swift b/RSWeb/Sources/RSWeb/Downloader.swift index f4037a1df..c0dc12ca8 100755 --- a/RSWeb/Sources/RSWeb/Downloader.swift +++ b/RSWeb/Sources/RSWeb/Downloader.swift @@ -38,16 +38,15 @@ public final class Downloader { } public func download(_ url: URL, _ completion: DownloadCallback? = nil) { - let task = urlSession.dataTask(with: url) { (data, response, error) in - DispatchQueue.main.async() { - completion?(data, response, error) - } - } - task.resume() + download(URLRequest(url: url), completion) } public func download(_ urlRequest: URLRequest, _ completion: DownloadCallback? = nil) { - let task = urlSession.dataTask(with: urlRequest) { (data, response, error) in + + var urlRequestToUse = urlRequest + urlRequestToUse.addSpecialCaseUserAgentIfNeeded() + + let task = urlSession.dataTask(with: urlRequestToUse) { (data, response, error) in DispatchQueue.main.async() { completion?(data, response, error) } diff --git a/RSWeb/Sources/RSWeb/SpecialCases.swift b/RSWeb/Sources/RSWeb/SpecialCases.swift index 49c311f8a..67c70f6ed 100644 --- a/RSWeb/Sources/RSWeb/SpecialCases.swift +++ b/RSWeb/Sources/RSWeb/SpecialCases.swift @@ -66,6 +66,16 @@ extension Set where Element == URL { } } +extension URLRequest { + + mutating func addSpecialCaseUserAgentIfNeeded() { + + if let url, url.isOpenRSSOrgURL { + setValue(UserAgent.openRSSOrgUserAgent, forHTTPHeaderField: HTTPRequestHeader.userAgent) + } + } +} + extension UserAgent { static let openRSSOrgUserAgent = {