diff options
| author | Steffen Ernst <steffen.ernst@mullvad.net> | 2025-04-09 10:33:39 +0200 |
|---|---|---|
| committer | Steffen Ernst <steffen.ernst@mullvad.net> | 2025-05-08 09:31:27 +0200 |
| commit | 01660f7d4af6fc539ce938f44f26bdf55337b57a (patch) | |
| tree | 4a15da846efe1f5fe9bf486d2c35727b1e2d1b31 /ios/MullvadREST/MullvadAPI/APIRequest | |
| parent | a74a0c0aa3270bb2cf7861f94ad7dc590ed50d22 (diff) | |
| download | mullvadvpn-01660f7d4af6fc539ce938f44f26bdf55337b57a.tar.xz mullvadvpn-01660f7d4af6fc539ce938f44f26bdf55337b57a.zip | |
Add storekit 2 functions to mullvad api
Diffstat (limited to 'ios/MullvadREST/MullvadAPI/APIRequest')
| -rw-r--r-- | ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift | 16 | ||||
| -rw-r--r-- | ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift | 34 |
2 files changed, 37 insertions, 13 deletions
diff --git a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift index ab1087fe5e..f2ecafdbf6 100644 --- a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift +++ b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequest.swift @@ -18,6 +18,12 @@ public enum APIRequest: Codable, Sendable { case createAccount(_ retryStrategy: REST.RetryStrategy) case getAccount(_ retryStrategy: REST.RetryStrategy, accountNumber: String) case deleteAccount(_ retryStrategy: REST.RetryStrategy, accountNumber: String) + case initStorekitPayment(retryStrategy: REST.RetryStrategy, accountNumber: String) + case checkStorekitPayment( + retryStrategy: REST.RetryStrategy, + accountNumber: String, + transaction: StorekitTransaction + ) // Device Proxy case getDevice(_ retryStrategy: REST.RetryStrategy, accountNumber: String, identifier: String) @@ -55,6 +61,10 @@ public enum APIRequest: Codable, Sendable { "rotate-device-key" case .createDevice: "create-device" + case .initStorekitPayment: + "init-storekit-payment" + case .checkStorekitPayment: + "check-storekit-payment" } } @@ -70,8 +80,10 @@ public enum APIRequest: Codable, Sendable { let .getDevice(strategy, _, _), let .getDevices(strategy, _), let .deleteDevice(strategy, _, _), - let .rotateDeviceKey(strategy, _, _, _): - return strategy + let .rotateDeviceKey(strategy, _, _, _), + let .initStorekitPayment(strategy, _), + let .checkStorekitPayment(strategy, _, _): + strategy } } } diff --git a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift index 8e2ac4fad2..d204165c0d 100644 --- a/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift +++ b/ios/MullvadREST/MullvadAPI/APIRequest/APIRequestProxy.swift @@ -45,20 +45,32 @@ public final class APIRequestProxy: APIRequestProxyProtocol, @unchecked Sendable completion(ProxyAPIResponse(data: nil, error: nil)) return } + do { + let cancellable = try transport.sendRequest(proxyRequest.request) { [weak self] response in + guard let self else { return } - let cancellable = transport.sendRequest(proxyRequest.request) { [weak self] response in - guard let self else { return } - - // Use `dispatchQueue` to guarantee thread safe access to `proxiedRequests` - dispatchQueue.async { - _ = self.removeRequest(identifier: proxyRequest.id) - completion(response) + // Use `dispatchQueue` to guarantee thread safe access to `proxiedRequests` + dispatchQueue.async { + _ = self.removeRequest(identifier: proxyRequest.id) + completion(response) + } } - } - // Cancel old task, if there's one scheduled. - let oldTask = self.addRequest(identifier: proxyRequest.id, task: cancellable) - oldTask?.cancel() + // Cancel old task, if there's one scheduled. + let oldTask = self.addRequest(identifier: proxyRequest.id, task: cancellable) + oldTask?.cancel() + } catch { + completion( + ProxyAPIResponse( + data: nil, + error: APIError( + statusCode: 0, + errorDescription: error.localizedDescription, + serverResponseCode: nil + ) + ) + ) + } } } |
