@@ -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) ) }
0 commit comments