Skip to content
Snippets Groups Projects
Commit 5c954bab authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Use RestlikeMessage model in RestlikeRequestSender

parent 04d241f2
No related branches found
No related tags found
1 merge request!12Use codable models in API
This commit is part of merge request !12. Comments created here will be created in the context of that merge request.
import Bindings import Bindings
public struct RestlikeRequestSender { public struct RestlikeRequestSender {
public var send: (Int, Int, Data) throws -> Data public var send: (Int, Int, RestlikeMessage) throws -> RestlikeMessage
public func callAsFunction( public func callAsFunction(
clientId: Int, clientId: Int,
connectionId: Int, connectionId: Int,
request: Data request: RestlikeMessage
) throws -> Data { ) throws -> RestlikeMessage {
try send(clientId, connectionId, request) try send(clientId, connectionId, request)
} }
} }
...@@ -15,20 +15,24 @@ public struct RestlikeRequestSender { ...@@ -15,20 +15,24 @@ public struct RestlikeRequestSender {
extension RestlikeRequestSender { extension RestlikeRequestSender {
public static func live(authenticated: Bool) -> RestlikeRequestSender { public static func live(authenticated: Bool) -> RestlikeRequestSender {
RestlikeRequestSender { clientId, connectionId, request in RestlikeRequestSender { clientId, connectionId, request in
let encoder = JSONEncoder()
let requestData = try encoder.encode(request)
var error: NSError? var error: NSError?
let response: Data? let responseData: Data?
if authenticated { if authenticated {
response = BindingsRestlikeRequestAuth(clientId, connectionId, request, &error) responseData = BindingsRestlikeRequestAuth(clientId, connectionId, requestData, &error)
} else { } else {
response = BindingsRestlikeRequest(clientId, connectionId, request, &error) responseData = BindingsRestlikeRequest(clientId, connectionId, requestData, &error)
} }
if let error = error { if let error = error {
throw error throw error
} }
guard let response = response else { guard let responseData = responseData else {
let functionName = "BindingsRestlikeRequest\(authenticated ? "Auth" : "")" let functionName = "BindingsRestlikeRequest\(authenticated ? "Auth" : "")"
fatalError("\(functionName) returned `nil` without providing error") fatalError("\(functionName) returned `nil` without providing error")
} }
let decoder = JSONDecoder()
let response = try decoder.decode(RestlikeMessage.self, from: responseData)
return response return response
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment