diff options
Diffstat (limited to 'Sora/Data/Booru')
| -rw-r--r-- | Sora/Data/Booru/BooruManager.swift | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift index 68d5079..f5fcf89 100644 --- a/Sora/Data/Booru/BooruManager.swift +++ b/Sora/Data/Booru/BooruManager.swift @@ -26,6 +26,7 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng private let pageCache = NSCache<NSString, BooruPageCacheEntry>() // swiftlint:disable:this legacy_objc_type private let cacheDuration: TimeInterval private let credentials: BooruProviderCredentials? + private let referer: String private let userAgent: String? private let showHeldMoebooruPosts: Bool private var urlCache: [String: URL] = [:] @@ -61,6 +62,7 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng pageCache.countLimit = 50 pageCache.totalCostLimit = 50 * 1_024 * 1_024 + self.referer = Self.baseReferer(for: provider.domain) self.userAgent = Self.resolvedUserAgent( sendUserAgent: sendUserAgent, customUserAgent: customUserAgent @@ -220,6 +222,10 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng return "Sora/\(version) (Build \(buildNumber))" } + private static func baseReferer(for domain: String) -> String { + "https://\(domain)/" + } + func clearCachedPages() { pageCache.removeAllObjects() urlCache.removeAll() @@ -593,8 +599,10 @@ class BooruManager: ObservableObject { // swiftlint:disable:this type_body_leng } func requestURL(_ url: URL) async throws -> Data { - let headers = userAgent.map { value in - HTTPHeaders([HTTPHeader(name: "User-Agent", value: value)]) + var headers = HTTPHeaders([HTTPHeader(name: "Referer", value: referer)]) + + if let userAgent { + headers.add(name: "User-Agent", value: userAgent) } return try await AF.request(url, headers: headers) |