|
|
|
|
@ -125,16 +125,16 @@ public class Services { |
|
|
|
|
return try jsonDecoder.decode(T.self, from: task.0) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func _postRequest(servicePath: String) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .post) |
|
|
|
|
fileprivate func _postRequest(servicePath: String, requiresToken: Bool? = nil) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .post, requiresToken: requiresToken) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func _putRequest(servicePath: String) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .put) |
|
|
|
|
fileprivate func _putRequest(servicePath: String, requiresToken: Bool? = nil) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .put, requiresToken: requiresToken) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func _getRequest(servicePath: String) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .get) |
|
|
|
|
fileprivate func _getRequest(servicePath: String, requiresToken: Bool? = nil) throws -> URLRequest { |
|
|
|
|
return try self._baseRequest(servicePath: servicePath, method: .get, requiresToken: requiresToken) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func _baseRequest(conf: ServiceConf) throws -> URLRequest { |
|
|
|
|
@ -160,18 +160,18 @@ public class Services { |
|
|
|
|
// MARK: - Services |
|
|
|
|
|
|
|
|
|
public func get<T: Storable>() async throws -> [T] { |
|
|
|
|
let getRequest = try _getRequest(servicePath: T.resourceName() + "/") |
|
|
|
|
let getRequest = try _getRequest(servicePath: T.resourceName() + "/", requiresToken: T.requestsRequiresToken()) |
|
|
|
|
return try await self._runRequest(getRequest) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public func post<T: Storable>(_ instance: T) async throws -> T { |
|
|
|
|
var postRequest = try self._postRequest(servicePath: T.resourceName() + "/") |
|
|
|
|
var postRequest = try self._postRequest(servicePath: T.resourceName() + "/", requiresToken: T.requestsRequiresToken()) |
|
|
|
|
postRequest.httpBody = try jsonEncoder.encode(instance) |
|
|
|
|
return try await self._runRequest(postRequest) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public func put<T: Storable>(_ instance: T) async throws -> T { |
|
|
|
|
var postRequest = try self._putRequest(servicePath: T.resourceName() + "/" + instance.id + "/") |
|
|
|
|
var postRequest = try self._putRequest(servicePath: T.resourceName() + "/" + instance.id + "/", requiresToken: T.requestsRequiresToken()) |
|
|
|
|
postRequest.httpBody = try jsonEncoder.encode(instance) |
|
|
|
|
return try await self._runRequest(postRequest) |
|
|
|
|
} |
|
|
|
|
|