diff options
| author | Jon Petersson <jon.petersson@kvadrat.se> | 2024-09-09 14:10:57 +0200 |
|---|---|---|
| committer | Emīls <emils@mullvad.net> | 2024-09-10 22:05:59 +0200 |
| commit | 747747ea6f0a7f1a96c2495c95d496bdea1fa5bb (patch) | |
| tree | 46d8c2cefaf242db4edf1b76fb44c7e0f6b4a532 /ios/MullvadVPN/RelayCacheTracker | |
| parent | de91617a8bbbdeb69ad46533fa003915bcbe81a6 (diff) | |
| download | mullvadvpn-747747ea6f0a7f1a96c2495c95d496bdea1fa5bb.tar.xz mullvadvpn-747747ea6f0a7f1a96c2495c95d496bdea1fa5bb.zip | |
Store the raw JSON payload from the getRelays API call
Diffstat (limited to 'ios/MullvadVPN/RelayCacheTracker')
| -rw-r--r-- | ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift b/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift index 2d2d0d384e..27f1caa1fa 100644 --- a/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift +++ b/ios/MullvadVPN/RelayCacheTracker/RelayCacheTracker.swift @@ -63,7 +63,7 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol { cache = relayCache do { - cachedRelays = try cache.read() + cachedRelays = try cache.read().cachedRelays try hotfixRelaysThatDoNotHaveDaita() } catch { logger.error( @@ -89,8 +89,8 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol { // If the cached relays already have daita information, this fix is not necessary guard daitaPropertyMissing else { return } - let preBundledRelays = try cache.readPrebundledRelays() - let preBundledDaitaRelays = preBundledRelays.relays.wireguard.relays.filter { $0.daita == true } + let preBundledRelays = try cache.readPrebundledRelays().relays + let preBundledDaitaRelays = preBundledRelays.wireguard.relays.filter { $0.daita == true } var cachedRelaysWithFixedDaita = cachedRelays.relays.wireguard.relays // For each daita enabled relay in the prebundled relays @@ -119,9 +119,19 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol { bridge: cachedRelays.relays.bridge ) - let updatedCachedRelays = CachedRelays(relays: updatedRelays, updatedAt: Date()) + let updatedRawRelayData = try REST.Coding.makeJSONEncoder().encode(updatedRelays) + let updatedCachedRelays = try StoredRelays( + etag: cachedRelays.etag, + rawData: updatedRawRelayData, + updatedAt: cachedRelays.updatedAt + ) + try cache.write(record: updatedCachedRelays) - self.cachedRelays = updatedCachedRelays + self.cachedRelays = CachedRelays( + etag: cachedRelays.etag, + relays: updatedRelays, + updatedAt: cachedRelays.updatedAt + ) } func startPeriodicUpdates() { @@ -196,7 +206,7 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol { } func refreshCachedRelays() throws { - let newCachedRelays = try cache.read() + let newCachedRelays = try cache.read().cachedRelays relayCacheLock.lock() cachedRelays = newCachedRelays @@ -244,8 +254,8 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol { -> Result<RelaysFetchResult, Error> { result.tryMap { response -> RelaysFetchResult in switch response { - case let .newContent(etag, relays): - try self.storeResponse(etag: etag, relays: relays) + case let .newContent(etag, rawData): + try self.storeResponse(etag: etag, rawData: rawData) return .newContent @@ -262,18 +272,14 @@ final class RelayCacheTracker: RelayCacheTrackerProtocol { } } - private func storeResponse(etag: String?, relays: REST.ServerRelaysResponse) throws { - let numRelays = relays.wireguard.relays.count - - logger.info("Downloaded \(numRelays) relays.") - - let newCachedRelays = CachedRelays( + private func storeResponse(etag: String?, rawData: Data) throws { + let newCachedData = try StoredRelays( etag: etag, - relays: relays, + rawData: rawData, updatedAt: Date() ) - try cache.write(record: newCachedRelays) + try cache.write(record: newCachedData) try refreshCachedRelays() } |
