Skip to content

Commit 01bab87

Browse files
committed
Caching improvements
1 parent af8db32 commit 01bab87

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

Sources/UsefulNetworkLayer/NetworkLayer/NetworkLayer.swift

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,6 @@ public class NetworkLayer: NSObject, URLSessionDataDelegate {
158158
}
159159
}
160160

161-
instance._cache?.storeResponse(loadedResponse!, data: dataResult,
162-
for: task, expiry: request.cachingTime.expirationDate ?? Date())
163-
164161
instance.proceedResponse(response: loadedResponse!,
165162
data: dataResult,
166163
operationId: operation.identifier,
@@ -237,6 +234,14 @@ public class NetworkLayer: NSObject, URLSessionDataDelegate {
237234
if !request.responseBodyObject.shouldUseCustomInitializer {
238235
do {
239236
let jsonObject = try JSONDecoder().decode(request.responseBodyObject, from: data)
237+
238+
if request.autoCache, let cacheTiming = jsonObject.cachingEndsAt() {
239+
self._cache?.storeResponse(response, data: data, for: dataTask, expiry: cacheTiming)
240+
} else {
241+
self._cache?.storeResponse(response, data: data,
242+
for: dataTask, expiry: request.cachingTime.expirationDate ?? Date())
243+
}
244+
240245
DispatchQueue.main.async {
241246
completion(.success(.init(response: response,
242247
responseBody: jsonObject,
@@ -257,6 +262,9 @@ public class NetworkLayer: NSObject, URLSessionDataDelegate {
257262
self.sendLog(message: "Data Object created from Operation: \(operationId) - Object: \(dataObject.typeName)")
258263
if request.autoCache, let cacheTiming = dataObject.cachingEndsAt() {
259264
self._cache?.storeResponse(response, data: data, for: dataTask, expiry: cacheTiming)
265+
} else {
266+
self._cache?.storeResponse(response, data: data,
267+
for: dataTask, expiry: request.cachingTime.expirationDate ?? Date())
260268
}
261269
DispatchQueue.main.async {
262270
completion(.success(APIResponse(response: response,
@@ -272,6 +280,9 @@ public class NetworkLayer: NSObject, URLSessionDataDelegate {
272280
self.sendLog(message: "Response Object Created from JSON Data with Operation: \(operationId) - Object: \(responseObject.typeName)")
273281
if request.autoCache, let cacheTiming = responseObject.cachingEndsAt() {
274282
self._cache?.storeResponse(response, data: data, for: dataTask, expiry: cacheTiming)
283+
} else {
284+
self._cache?.storeResponse(response, data: data,
285+
for: dataTask, expiry: request.cachingTime.expirationDate ?? Date())
275286
}
276287
DispatchQueue.main.async {
277288
completion(.success(APIResponse(response: response,

0 commit comments

Comments
 (0)