summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/AccessMethodRepository
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2024-01-09 11:47:18 +0100
committerBug Magnet <marco.nikic@mullvad.net>2024-01-24 15:55:51 +0100
commita34caacab2e252d6da35c0dc06c16cc459fb275b (patch)
treeef914c9d59881f7c30aab4e9e483156e5c24f134 /ios/MullvadVPN/AccessMethodRepository
parentf4ec9f8a2b1e1390b8580eaaeee6d9cb283909fa (diff)
downloadmullvadvpn-a34caacab2e252d6da35c0dc06c16cc459fb275b.tar.xz
mullvadvpn-a34caacab2e252d6da35c0dc06c16cc459fb275b.zip
Enable testing API access with a given configuration
Diffstat (limited to 'ios/MullvadVPN/AccessMethodRepository')
-rw-r--r--ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift35
1 files changed, 21 insertions, 14 deletions
diff --git a/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift b/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift
index 95f6b302f7..03e108968a 100644
--- a/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift
+++ b/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift
@@ -8,31 +8,38 @@
import Combine
import Foundation
+import MullvadREST
import MullvadSettings
+import MullvadTypes
/// A concrete implementation of an access method proxy configuration.
class ProxyConfigurationTester: ProxyConfigurationTesterProtocol {
- private var cancellable: Cancellable?
+ private var cancellable: MullvadTypes.Cancellable?
+ private let transportProvider: ProxyConfigurationTransportProvider
+ private var headRequest: REST.APIAvailabilityTestRequest?
- static let shared = ProxyConfigurationTester()
-
- init() {}
+ init(transportProvider: ProxyConfigurationTransportProvider) {
+ self.transportProvider = transportProvider
+ }
func start(configuration: PersistentProxyConfiguration, completion: @escaping (Error?) -> Void) {
- let workItem = DispatchWorkItem {
- let randomResult = (0 ... 255).randomElement()?.isMultiple(of: 2) ?? true
-
- completion(randomResult ? nil : URLError(.timedOut))
- }
-
- DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2), execute: workItem)
-
- cancellable = AnyCancellable {
- workItem.cancel()
+ do {
+ let transport = try transportProvider.makeTransport(with: configuration)
+ let request = REST.APIAvailabilityTestRequest(transport: transport)
+ headRequest = request
+ cancellable = request.makeRequest { error in
+ DispatchQueue.main.async {
+ completion(error)
+ }
+ }
+ } catch {
+ completion(error)
}
}
func cancel() {
+ cancellable?.cancel()
cancellable = nil
+ headRequest = nil
}
}