summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2023-11-02 10:47:15 +0100
committerJon Petersson <jon.petersson@kvadrat.se>2023-12-13 15:42:20 +0100
commit8188c51e1b0a5705db7e94053c6d8d45faf615fe (patch)
tree79b38d2b0ff8d8d2fd5b7ab06adde476c3c523e5 /ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift
parentc1e2a227931e8e6011353ff9fce56fe733e4ac63 (diff)
downloadmullvadvpn-8188c51e1b0a5705db7e94053c6d8d45faf615fe.tar.xz
mullvadvpn-8188c51e1b0a5705db7e94053c6d8d45faf615fe.zip
Add API access methods UI/part of backend
Diffstat (limited to 'ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift')
-rw-r--r--ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift37
1 files changed, 37 insertions, 0 deletions
diff --git a/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift b/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift
new file mode 100644
index 0000000000..bf9ad5f03a
--- /dev/null
+++ b/ios/MullvadVPN/AccessMethodRepository/ProxyConfigurationTester.swift
@@ -0,0 +1,37 @@
+//
+// ProxyConfigurationTester.swift
+// MullvadVPN
+//
+// Created by pronebird on 28/11/2023.
+// Copyright © 2023 Mullvad VPN AB. All rights reserved.
+//
+
+import Combine
+import Foundation
+
+/// A concrete implementation of an access method proxy configuration.
+class ProxyConfigurationTester: ProxyConfigurationTesterProtocol {
+ private var cancellable: Cancellable?
+
+ static let shared = ProxyConfigurationTester()
+
+ init() {}
+
+ 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()
+ }
+ }
+
+ func cancel() {
+ cancellable = nil
+ }
+}