Add special case user-agent for openrss.org when downloading from Downloader (this matches behavior in DownloadSession).

This commit is contained in:
Brent Simmons
2024-12-14 22:09:14 -08:00
parent 3c6e1bd43c
commit 0072f9c65a
2 changed files with 16 additions and 7 deletions

View File

@@ -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)
}

View File

@@ -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 = {