|
|
|
|
@ -120,7 +120,11 @@ public class Services { |
|
|
|
|
return try jsonDecoder.decode(T.self, from: task.0) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func getRequest(servicePath: String) throws -> URLRequest { |
|
|
|
|
fileprivate func _postRequest(servicePath: String) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .post) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func _getRequest(servicePath: String) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .get) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -146,11 +150,17 @@ public class Services { |
|
|
|
|
|
|
|
|
|
// MARK: - Services |
|
|
|
|
|
|
|
|
|
func get<T: Storable>() async throws -> [T] { |
|
|
|
|
let getRequest = try getRequest(servicePath: T.resourceName() + "/") |
|
|
|
|
public func get<T: Storable>() async throws -> [T] { |
|
|
|
|
let getRequest = try _getRequest(servicePath: T.resourceName() + "/") |
|
|
|
|
return try await self._runRequest(getRequest) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public func post<T: Storable>(_ instance: T) async throws -> T { |
|
|
|
|
var postRequest = try self._postRequest(servicePath: T.resourceName()) |
|
|
|
|
postRequest.httpBody = try jsonEncoder.encode(instance) |
|
|
|
|
return try await self._runRequest(postRequest) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func runApiCall<T: Storable>(_ apiCall: ApiCall<T>) async throws -> T { |
|
|
|
|
let request = try self._request(from: apiCall) |
|
|
|
|
return try await self._runRequest(request, apiCallId: apiCall.id) |
|
|
|
|
@ -244,6 +254,20 @@ public class Services { |
|
|
|
|
try self.keychainStore.deleteToken() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// public func addPurchase(_ purchase: Purchase) async throws { |
|
|
|
|
// var postRequest = try self._postRequest(servicePath: Purchase.resourceName()) |
|
|
|
|
// postRequest.httpBody = try jsonEncoder.encode(purchase) |
|
|
|
|
// let purchase: Purchase = try await self._runRequest(postRequest) |
|
|
|
|
// if var purchases: [Purchase] = UserDefaults(suiteName: "le.storage")?.array(forKey: Purchase.resourceName()) as? [Purchase] { |
|
|
|
|
// purchases.append(purchase) |
|
|
|
|
// UserDefaults(suiteName: "le.storage")?.setValue(purchases, forKey: Purchase.resourceName()) |
|
|
|
|
// } |
|
|
|
|
// } |
|
|
|
|
// |
|
|
|
|
// var purchases: [Purchase] { |
|
|
|
|
// return UserDefaults(suiteName: "le.storage")?.array(forKey: Purchase.resourceName()) as? [Purchase] ?? [] |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
struct AuthResponse: Codable { |
|
|
|
|
|