summaryrefslogtreecommitdiffhomepage
path: root/ios/PacketTunnel/DeviceCheck/DeviceCheckRemoteService.swift
diff options
context:
space:
mode:
Diffstat (limited to 'ios/PacketTunnel/DeviceCheck/DeviceCheckRemoteService.swift')
-rw-r--r--ios/PacketTunnel/DeviceCheck/DeviceCheckRemoteService.swift58
1 files changed, 58 insertions, 0 deletions
diff --git a/ios/PacketTunnel/DeviceCheck/DeviceCheckRemoteService.swift b/ios/PacketTunnel/DeviceCheck/DeviceCheckRemoteService.swift
new file mode 100644
index 0000000000..da8c11726d
--- /dev/null
+++ b/ios/PacketTunnel/DeviceCheck/DeviceCheckRemoteService.swift
@@ -0,0 +1,58 @@
+//
+// DeviceCheckRemoteService.swift
+// PacketTunnel
+//
+// Created by pronebird on 30/05/2023.
+// Copyright © 2023 Mullvad VPN AB. All rights reserved.
+//
+
+import Foundation
+import MullvadREST
+import MullvadTypes
+import class WireGuardKitTypes.PublicKey
+
+/// An object that implements remote service used by `DeviceCheckOperation`.
+struct DeviceCheckRemoteService: DeviceCheckRemoteServiceProtocol {
+ private let accountsProxy: REST.AccountsProxy
+ private let devicesProxy: REST.DevicesProxy
+
+ init(accountsProxy: REST.AccountsProxy, devicesProxy: REST.DevicesProxy) {
+ self.accountsProxy = accountsProxy
+ self.devicesProxy = devicesProxy
+ }
+
+ func getAccountData(
+ accountNumber: String,
+ completion: @escaping (Result<Account, Error>) -> Void
+ ) -> Cancellable {
+ accountsProxy.getAccountData(accountNumber: accountNumber, retryStrategy: .noRetry, completion: completion)
+ }
+
+ func getDevice(
+ accountNumber: String,
+ identifier: String,
+ completion: @escaping (Result<Device, Error>) -> Void
+ ) -> Cancellable {
+ devicesProxy.getDevice(
+ accountNumber: accountNumber,
+ identifier: identifier,
+ retryStrategy: .noRetry,
+ completion: completion
+ )
+ }
+
+ func rotateDeviceKey(
+ accountNumber: String,
+ identifier: String,
+ publicKey: PublicKey,
+ completion: @escaping (Result<Device, Error>) -> Void
+ ) -> Cancellable {
+ devicesProxy.rotateDeviceKey(
+ accountNumber: accountNumber,
+ identifier: identifier,
+ publicKey: publicKey,
+ retryStrategy: .default,
+ completion: completion
+ )
+ }
+}