From 5c954babb949fcb08e8343daedce402cadfa9758 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Tue, 7 Jun 2022 11:39:05 +0200 Subject: [PATCH] Use RestlikeMessage model in RestlikeRequestSender --- .../RestlikeRequestSender.swift | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Sources/ElixxirDAppsSDK/RestlikeRequestSender.swift b/Sources/ElixxirDAppsSDK/RestlikeRequestSender.swift index fda472aa..efe42bc5 100644 --- a/Sources/ElixxirDAppsSDK/RestlikeRequestSender.swift +++ b/Sources/ElixxirDAppsSDK/RestlikeRequestSender.swift @@ -1,13 +1,13 @@ import Bindings public struct RestlikeRequestSender { - public var send: (Int, Int, Data) throws -> Data + public var send: (Int, Int, RestlikeMessage) throws -> RestlikeMessage public func callAsFunction( clientId: Int, connectionId: Int, - request: Data - ) throws -> Data { + request: RestlikeMessage + ) throws -> RestlikeMessage { try send(clientId, connectionId, request) } } @@ -15,20 +15,24 @@ public struct RestlikeRequestSender { extension RestlikeRequestSender { public static func live(authenticated: Bool) -> RestlikeRequestSender { RestlikeRequestSender { clientId, connectionId, request in + let encoder = JSONEncoder() + let requestData = try encoder.encode(request) var error: NSError? - let response: Data? + let responseData: Data? if authenticated { - response = BindingsRestlikeRequestAuth(clientId, connectionId, request, &error) + responseData = BindingsRestlikeRequestAuth(clientId, connectionId, requestData, &error) } else { - response = BindingsRestlikeRequest(clientId, connectionId, request, &error) + responseData = BindingsRestlikeRequest(clientId, connectionId, requestData, &error) } if let error = error { throw error } - guard let response = response else { + guard let responseData = responseData else { let functionName = "BindingsRestlikeRequest\(authenticated ? "Auth" : "")" fatalError("\(functionName) returned `nil` without providing error") } + let decoder = JSONDecoder() + let response = try decoder.decode(RestlikeMessage.self, from: responseData) return response } } -- GitLab