diff options
Diffstat (limited to 'ios/MullvadVPN/AccessMethodRepository')
| -rw-r--r-- | ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift | 35 |
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 } } |
