summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-02-08 11:35:04 +0100
committerAndrej Mihajlov <and@mullvad.net>2023-02-10 11:42:14 +0100
commit36b3c9691d24bdc2e8d1064b3677bdfbace176c2 (patch)
treea15c589fb050786b46b99445ebd7bec53e6cef42
parenta161c19e9b75fe0f89d9f49ce8a325a0e7b44fad (diff)
downloadmullvadvpn-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.swift5
-rw-r--r--ios/MullvadREST/RESTAccessTokenManager.swift3
-rw-r--r--ios/MullvadREST/RESTAccountsProxy.swift5
-rw-r--r--ios/MullvadREST/RESTAuthorization.swift30
-rw-r--r--ios/MullvadREST/RESTDevicesProxy.swift25
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(