Skip to content

Commit 8dac2e1

Browse files
committed
Fixed crash with expired token.
1 parent ab84977 commit 8dac2e1

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

Sources/Core/Client/Client+Request.swift

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,21 @@ extension Client {
6565
@discardableResult
6666
public func request<T: Decodable>(endpoint: Endpoint, _ completion: @escaping Completion<T>) -> URLSessionDataTask {
6767
logger?.log("Endpoint: \(String(describing: endpoint))", level: .debug)
68-
logger?.timing("Prepare for request", reset: true)
69-
70-
func retryRequestForExpiredToken() {
68+
69+
func retryRequestForExpiredToken(_ endpoint: Endpoint) {
70+
logger?.log("🀄️ Token expired. The request added to the waiting list", level: .debug)
71+
7172
connection.connected()
7273
.take(1)
73-
.subscribe(onNext: { [unowned self] in self.request(endpoint: endpoint, completion) })
74+
.subscribe(onNext: { [unowned self] in
75+
self.logger?.log("Retring the request when token was expired...", level: .debug)
76+
self.request(endpoint: endpoint, completion)
77+
})
7478
.disposed(by: expiredTokenDisposeBag)
7579
}
7680

7781
if isExpiredTokenInProgress {
78-
retryRequestForExpiredToken()
82+
retryRequestForExpiredToken(endpoint)
7983
return URLSessionDataTask()
8084
}
8185

@@ -87,17 +91,17 @@ extension Client {
8791

8892
if endpoint.isUploading {
8993
urlRequest = try encodeRequestForUpload(for: endpoint, url: url).get()
90-
logger?.timing("Uploading...")
94+
logger?.timing("Uploading...", reset: true)
9195
} else {
9296
urlRequest = try encodeRequest(for: endpoint, url: url).get()
93-
logger?.timing("Sending request...")
97+
logger?.timing("Sending request...", reset: true)
9498
}
9599

96100
task = urlSession.dataTask(with: urlRequest) { [unowned self] in
97101
self.parse(data: $0, response: $1, error: $2, completion: completion)
98102

99103
if self.isExpiredTokenInProgress {
100-
retryRequestForExpiredToken()
104+
retryRequestForExpiredToken(endpoint)
101105
}
102106
}
103107

@@ -279,7 +283,7 @@ extension Client {
279283
}
280284

281285
if errorResponse.code == ClientErrorResponse.tokenExpiredErrorCode {
282-
logger?.log("🀄️ The Token is expired")
286+
logger?.log("🀄️ Token is expired")
283287
touchTokenProvider()
284288
return
285289
}
@@ -292,7 +296,6 @@ extension Client {
292296
}
293297

294298
do {
295-
logger?.timing("Prepare for decoding")
296299
let response = try JSONDecoder.stream.decode(T.self, from: data)
297300
logger?.timing("Response decoded")
298301
performInCallbackQueue { completion(.success(response)) }

Sources/Core/Client/Client+Setup.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ extension Client {
9393
self.token = nil
9494

9595
if token.isEmpty {
96-
logger?.log("The Token is empty.", level: .error)
96+
logger?.log("❌ Token is empty.", level: .error)
9797
return
9898
}
9999

Sources/Core/Client/ClientLogger.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,16 +253,16 @@ public final class ClientLogger {
253253
/// - tag: a tag.
254254
/// - reset: reset the last timing.
255255
public func timing(_ tag: String = "", reset: Bool = false) {
256-
guard level.isEnabled(with: .info) else {
256+
guard level.isEnabled(with: .debug) else {
257257
return
258258
}
259259

260260
if reset {
261-
log("\(tag)", level: .info)
261+
log("\(tag)", level: .debug)
262262
} else {
263263
let overall: CFTimeInterval = round((CACurrentMediaTime() - startTime) * 1000) / 1000
264264
let time: CFTimeInterval = round((CACurrentMediaTime() - lastTime) * 1000) / 1000
265-
log("\(tag) \(overall) +\(time < 0.001 ? 0 : time)", level: .info)
265+
log("\(tag): \(overall) +\(time < 0.001 ? 0 : time)", level: .debug)
266266
}
267267

268268
lastTime = CACurrentMediaTime()

0 commit comments

Comments
 (0)