summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2020-03-26 12:38:52 +0100
committerAndrej Mihajlov <and@mullvad.net>2020-03-26 16:23:13 +0100
commit5eca8ab8efbb03938dfd01908c347822db981ab9 (patch)
tree3d4e3a6347dec1a1772e9c2ac1b5f730732b93c5
parent56624b3f835d9e896c08651a1e09a28cbe475010 (diff)
downloadmullvadvpn-5eca8ab8efbb03938dfd01908c347822db981ab9.tar.xz
mullvadvpn-5eca8ab8efbb03938dfd01908c347822db981ab9.zip
Add a method to submit the appstore receipt to API
-rw-r--r--ios/MullvadVPN/MullvadAPI.swift25
1 files changed, 25 insertions, 0 deletions
diff --git a/ios/MullvadVPN/MullvadAPI.swift b/ios/MullvadVPN/MullvadAPI.swift
index 9e6add133a..7ba5de4d5c 100644
--- a/ios/MullvadVPN/MullvadAPI.swift
+++ b/ios/MullvadVPN/MullvadAPI.swift
@@ -38,6 +38,22 @@ enum DeferReasonError: Error {
case server(MullvadAPI.ResponseError)
}
+/// A response received when sending the AppStore receipt to the backend
+struct SendAppStoreReceiptResponse: Codable {
+ let timeAdded: TimeInterval
+ let newExpiry: Date
+
+ /// Returns a formatted string for the `timeAdded` interval, i.e "30 days"
+ var formattedTimeAdded: String? {
+ let formatter = DateComponentsFormatter()
+ formatter.allowedUnits = [.day, .hour]
+ formatter.unitsStyle = .full
+ formatter.maximumUnitCount = 1
+
+ return formatter.string(from: timeAdded)
+ }
+}
+
class MullvadAPI {
private let session: URLSession
@@ -172,6 +188,15 @@ class MullvadAPI {
return MullvadAPI.makeDataTaskPublisher(request: request)
}
+ func sendAppStoreReceipt(accountToken: String, receiptData: Data) -> AnyPublisher<Response<SendAppStoreReceiptResponse>, MullvadAPI.Error> {
+ let request = JsonRpcRequest(method: "apple_payment", params: [
+ AnyEncodable(accountToken),
+ AnyEncodable(receiptData)
+ ])
+
+ return MullvadAPI.makeDataTaskPublisher(request: request)
+ }
+
private static func makeDataTaskPublisher<T: Decodable>(request: JsonRpcRequest) -> AnyPublisher<Response<T>, MullvadAPI.Error> {
return Just(request)
.encode(encoder: makeJSONEncoder())