Make CacheControlInfo and HTTPResponse429 use same names for things.

This commit is contained in:
Brent Simmons
2024-12-02 21:39:07 -08:00
parent efa92d3df7
commit a2934cd308
4 changed files with 20 additions and 17 deletions

View File

@@ -180,7 +180,7 @@ private extension LocalAccountRefresher {
func feedShouldBeSkipped(_ feed: WebFeed) -> Bool {
if let cacheControlInfo = feed.cacheControlInfo, !cacheControlInfo.isExpired {
if let cacheControlInfo = feed.cacheControlInfo, !cacheControlInfo.canResume {
os_log(.debug, "Dropping request for Cache-Control reasons: \(feed.url)")
return true
}

View File

@@ -15,13 +15,13 @@ public struct CacheControlInfo: Codable, Equatable {
let dateCreated: Date
let maxAge: TimeInterval
public var isExpired: Bool {
Date() > dateExpired
}
var dateExpired: Date {
var resumeDate: Date {
dateCreated + maxAge
}
public var canResume: Bool {
Date() >= resumeDate
}
public init?(urlResponse: HTTPURLResponse) {
guard let cacheControlValue = urlResponse.valueForHTTPHeaderField(HTTPResponseHeader.cacheControl) else {
return nil

View File

@@ -322,11 +322,11 @@ private extension DownloadSession {
guard let retryAfterValue = httpResponse.value(forHTTPHeaderField: HTTPResponseHeader.retryAfter) else {
return nil
}
guard let retryAfterSeconds = Int(retryAfterValue), retryAfterSeconds > 0 else {
guard let retryAfter = TimeInterval(retryAfterValue), retryAfter > 0 else {
return nil
}
return HTTPResponse429(url: url, retryAfterSeconds: retryAfterSeconds)
return HTTPResponse429(url: url, retryAfter: retryAfter)
}
func cancelAndRemoveTasksWithHost(_ host: String) {

View File

@@ -13,11 +13,17 @@ final class HTTPResponse429 {
let url: URL
let host: String // lowercased
let retryAfterSeconds: Int
let dateMessageReceived: Date
let resumeDate: Date // dateMessageReceived + retryAfterSeconds
let dateCreated: Date
let retryAfter: TimeInterval
init?(url: URL, retryAfterSeconds: Int) {
var resumeDate: Date {
dateCreated + TimeInterval(retryAfter)
}
var canResume: Bool {
Date() >= resumeDate
}
init?(url: URL, retryAfter: TimeInterval) {
guard let host = url.host() else {
return nil
@@ -25,10 +31,7 @@ final class HTTPResponse429 {
self.url = url
self.host = host.lowercased()
self.retryAfterSeconds = retryAfterSeconds
let currentDate = Date()
self.dateMessageReceived = currentDate
self.resumeDate = currentDate + TimeInterval(retryAfterSeconds)
self.retryAfter = retryAfter
self.dateCreated = Date()
}
}