summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift
diff options
context:
space:
mode:
authorJon Petersson <jon.petersson@mullvad.net>2025-03-13 13:17:16 +0100
committerJon Petersson <jon.petersson@mullvad.net>2025-03-31 11:39:29 +0200
commiteb72686c74607872ee510b432a442ea10baa1b86 (patch)
tree40b51bd8e94c88633ec4c7332241986465355bf6 /ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift
parentefbb2c3c0c95f7e7a195c03e9d2483ec731a578e (diff)
downloadmullvadvpn-eb72686c74607872ee510b432a442ea10baa1b86.tar.xz
mullvadvpn-eb72686c74607872ee510b432a442ea10baa1b86.zip
Tie rust and Swift side together
Diffstat (limited to 'ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift')
-rw-r--r--ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift50
1 files changed, 50 insertions, 0 deletions
diff --git a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift
new file mode 100644
index 0000000000..2462a998a7
--- /dev/null
+++ b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift
@@ -0,0 +1,50 @@
+//
+// APIRequest.swift
+// MullvadVPN
+//
+// Created by Jon Petersson on 2025-02-24.
+// Copyright © 2025 Mullvad VPN AB. All rights reserved.
+//
+
+public enum APIRequest: Codable, Sendable {
+ case getAddressList(_ retryStrategy: REST.RetryStrategy)
+ case getRelayList(_ retryStrategy: REST.RetryStrategy, etag: String?)
+
+ var name: String {
+ switch self {
+ case .getAddressList:
+ "get-address-list"
+ case .getRelayList:
+ "get-relay-lisy"
+ }
+ }
+
+ var retryStrategy: REST.RetryStrategy {
+ switch self {
+ case .getAddressList(let strategy), .getRelayList(let strategy, _):
+ strategy
+ }
+ }
+}
+
+public struct ProxyAPIRequest: Codable, Sendable {
+ public let id: UUID
+ public let request: APIRequest
+
+ public init(id: UUID, request: APIRequest) {
+ self.id = id
+ self.request = request
+ }
+}
+
+public struct ProxyAPIResponse: Codable, Sendable {
+ public let data: Data?
+ public let error: APIError?
+ public let etag: String?
+
+ public init(data: Data?, error: APIError?, etag: String? = nil) {
+ self.data = data
+ self.error = error
+ self.etag = etag
+ }
+}