@@ -34,8 +34,7 @@ final class INPAuthHandler: RequestInterceptor {
34
34
var adaptedRequest = urlRequest
35
35
if let authenticationType = adaptedRequest. value ( forHTTPHeaderField: NetworkConstants . HeaderParameters. authenticationType) ,
36
36
authenticationType == NetworkConstants . HeaderParameters. refreshToken {
37
- completion ( . success( adaptedRequest) )
38
- return
37
+ return completion ( . success( adaptedRequest) )
39
38
}
40
39
guard
41
40
let accessToken = InPlayer . Account. getCredentials ( ) ? . accessToken,
@@ -63,13 +62,24 @@ final class INPAuthHandler: RequestInterceptor {
63
62
else {
64
63
return completion ( . doNotRetry)
65
64
}
66
- requestToRetry. append ( completion)
65
+
66
+ if let credentials = InPlayer . Account. getCredentials ( ) {
67
+ if Date ( ) . timeIntervalSince1970. isLess ( than: credentials. expires) {
68
+
69
+ // token is not expired, but invalidated. Remove from storage and do not retry
70
+ InPlayer . Account. removeCredentials ( )
71
+
72
+ return completion ( . doNotRetry)
73
+ } else {
74
+ requestToRetry. append ( completion)
67
75
68
- if !isRefreshing {
69
- refreshTokens { [ weak self] ( succeeded, accessToken, refreshToken) in
70
- guard let strongSelf = self else { return }
71
- strongSelf. requestToRetry. forEach { $0 ( . retryWithDelay( 0.25 ) ) }
72
- strongSelf. requestToRetry. removeAll ( )
76
+ if !isRefreshing {
77
+ refreshTokens { [ weak self] ( succeeded, accessToken, refreshToken) in
78
+ guard let strongSelf = self else { return }
79
+ strongSelf. requestToRetry. forEach { $0 ( . retryWithDelay( 0.25 ) ) }
80
+ strongSelf. requestToRetry. removeAll ( )
81
+ }
82
+ }
73
83
}
74
84
}
75
85
}
0 commit comments