diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2023-02-08 11:35:04 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2023-02-10 11:42:14 +0100 |
| commit | 36b3c9691d24bdc2e8d1064b3677bdfbace176c2 (patch) | |
| tree | a15c589fb050786b46b99445ebd7bec53e6cef42 | |
| parent | a161c19e9b75fe0f89d9f49ce8a325a0e7b44fad (diff) | |
| download | mullvadvpn-36b3c9691d24bdc2e8d1064b3677bdfbace176c2.tar.xz mullvadvpn-36b3c9691d24bdc2e8d1064b3677bdfbace176c2.zip | |
Disable retry strategy for access tokens
Requests that require authorization already implement their own retry strategy. Hence access token requests should be a part of that strategy and not behave as each having their individual strategy.
Previously a request requiring authentication configured with 3 retry attempts would perform 9 calls (3 * 3) to obtain access token in the worst case. That's because each individual request to obtain access token was configured with default retry strategy (3 retry attempts). With this change exactly 3 attempts will be made.
| -rw-r--r-- | ios/MullvadREST/RESTAPIProxy.swift | 5 | ||||
| -rw-r--r-- | ios/MullvadREST/RESTAccessTokenManager.swift | 3 | ||||
| -rw-r--r-- | ios/MullvadREST/RESTAccountsProxy.swift | 5 | ||||
| -rw-r--r-- | ios/MullvadREST/RESTAuthorization.swift | 30 | ||||
| -rw-r--r-- | ios/MullvadREST/RESTDevicesProxy.swift | 25 |
5 files changed, 17 insertions, 51 deletions
diff --git a/ios/MullvadREST/RESTAPIProxy.swift b/ios/MullvadREST/RESTAPIProxy.swift index 6daf2418ee..2bfca67f91 100644 --- a/ios/MullvadREST/RESTAPIProxy.swift +++ b/ios/MullvadREST/RESTAPIProxy.swift @@ -130,10 +130,7 @@ extension REST { return requestBuilder.getRequest() }, - authorizationProvider: createAuthorizationProvider( - accountNumber: accountNumber, - retryStrategy: .default - ) + authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber) ) let responseHandler = diff --git a/ios/MullvadREST/RESTAccessTokenManager.swift b/ios/MullvadREST/RESTAccessTokenManager.swift index aa072a5e24..5a9dba1a52 100644 --- a/ios/MullvadREST/RESTAccessTokenManager.swift +++ b/ios/MullvadREST/RESTAccessTokenManager.swift @@ -25,7 +25,6 @@ extension REST { func getAccessToken( accountNumber: String, - retryStrategy: REST.RetryStrategy, completionHandler: @escaping (OperationCompletion<REST.AccessTokenData, REST.Error>) -> Void ) -> Cancellable { @@ -39,7 +38,7 @@ extension REST { let task = self.proxy.getAccessToken( accountNumber: accountNumber, - retryStrategy: retryStrategy + retryStrategy: .noRetry ) { completion in self.dispatchQueue.async { switch completion { diff --git a/ios/MullvadREST/RESTAccountsProxy.swift b/ios/MullvadREST/RESTAccountsProxy.swift index 34f7c2f797..cb50b66faa 100644 --- a/ios/MullvadREST/RESTAccountsProxy.swift +++ b/ios/MullvadREST/RESTAccountsProxy.swift @@ -66,10 +66,7 @@ extension REST { return requestBuilder.getRequest() }, - authorizationProvider: createAuthorizationProvider( - accountNumber: accountNumber, - retryStrategy: .default - ) + authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber) ) let responseHandler = REST.defaultResponseHandler( diff --git a/ios/MullvadREST/RESTAuthorization.swift b/ios/MullvadREST/RESTAuthorization.swift index 90478c9645..c75a20f8cd 100644 --- a/ios/MullvadREST/RESTAuthorization.swift +++ b/ios/MullvadREST/RESTAuthorization.swift @@ -22,40 +22,28 @@ extension REST { struct AccessTokenProvider: RESTAuthorizationProvider { private let accessTokenManager: AccessTokenManager private let accountNumber: String - private let retryStrategy: REST.RetryStrategy - init( - accessTokenManager: AccessTokenManager, - accountNumber: String, - retryStrategy: REST.RetryStrategy - ) { + init(accessTokenManager: AccessTokenManager, accountNumber: String) { self.accessTokenManager = accessTokenManager self.accountNumber = accountNumber - self.retryStrategy = retryStrategy } func getAuthorization(completion: @escaping (Completion) -> Void) -> Cancellable { - return accessTokenManager.getAccessToken( - accountNumber: accountNumber, - retryStrategy: retryStrategy - ) { operationCompletion in - completion(operationCompletion.map { tokenData in - return tokenData.accessToken - }) - } + return accessTokenManager + .getAccessToken(accountNumber: accountNumber) { operationCompletion in + completion(operationCompletion.map { tokenData in + return tokenData.accessToken + }) + } } } } extension REST.Proxy where ConfigurationType == REST.AuthProxyConfiguration { - func createAuthorizationProvider( - accountNumber: String, - retryStrategy: REST.RetryStrategy - ) -> RESTAuthorizationProvider { + func createAuthorizationProvider(accountNumber: String) -> RESTAuthorizationProvider { return REST.AccessTokenProvider( accessTokenManager: configuration.accessTokenManager, - accountNumber: accountNumber, - retryStrategy: retryStrategy + accountNumber: accountNumber ) } } diff --git a/ios/MullvadREST/RESTDevicesProxy.swift b/ios/MullvadREST/RESTDevicesProxy.swift index ac7e40cce6..14648ca19b 100644 --- a/ios/MullvadREST/RESTDevicesProxy.swift +++ b/ios/MullvadREST/RESTDevicesProxy.swift @@ -53,10 +53,7 @@ extension REST { return requestBuilder.getRequest() }, - authorizationProvider: createAuthorizationProvider( - accountNumber: accountNumber, - retryStrategy: .default - ) + authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber) ) let responseHandler = @@ -104,10 +101,7 @@ extension REST { return requestBuilder.getRequest() }, - authorizationProvider: createAuthorizationProvider( - accountNumber: accountNumber, - retryStrategy: .default - ) + authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber) ) let responseHandler = REST.defaultResponseHandler( @@ -146,10 +140,7 @@ extension REST { return requestBuilder.getRequest() }, - authorizationProvider: createAuthorizationProvider( - accountNumber: accountNumber, - retryStrategy: .default - ) + authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber) ) let responseHandler = REST.defaultResponseHandler( @@ -196,10 +187,7 @@ extension REST { return requestBuilder.getRequest() }, - authorizationProvider: createAuthorizationProvider( - accountNumber: accountNumber, - retryStrategy: .default - ) + authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber) ) let responseHandler = @@ -268,10 +256,7 @@ extension REST { return urlRequest }, - authorizationProvider: createAuthorizationProvider( - accountNumber: accountNumber, - retryStrategy: .default - ) + authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber) ) let responseHandler = REST.defaultResponseHandler( |
