From c0832083bf943c464580db5e087dadbf24bb7d25 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Mon, 25 Jul 2022 19:03:43 +0100 Subject: [PATCH] Add RestlikeMessage model --- .../{Legacy => }/RestlikeMessage.swift | 8 ++++ .../RestlikeMessageTests.swift | 41 ++++++++++--------- 2 files changed, 30 insertions(+), 19 deletions(-) rename Sources/ElixxirDAppsSDK/{Legacy => }/RestlikeMessage.swift (79%) diff --git a/Sources/ElixxirDAppsSDK/Legacy/RestlikeMessage.swift b/Sources/ElixxirDAppsSDK/RestlikeMessage.swift similarity index 79% rename from Sources/ElixxirDAppsSDK/Legacy/RestlikeMessage.swift rename to Sources/ElixxirDAppsSDK/RestlikeMessage.swift index 884afde1..414a74b4 100644 --- a/Sources/ElixxirDAppsSDK/Legacy/RestlikeMessage.swift +++ b/Sources/ElixxirDAppsSDK/RestlikeMessage.swift @@ -34,4 +34,12 @@ extension RestlikeMessage: Codable { case uri = "URI" case error = "Error" } + + static func decode(_ data: Data) throws -> RestlikeMessage { + try JSONDecoder().decode(Self.self, from: data) + } + + func encode() throws -> Data { + try JSONEncoder().encode(self) + } } diff --git a/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift b/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift index 164fce5b..c8e343ce 100644 --- a/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift +++ b/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift @@ -4,34 +4,37 @@ import XCTest final class RestlikeMessageTests: XCTestCase { func testCoding() throws { + let version: Int = 1 + let headersString = "Y29udGVudHM6YXBwbGljYXRpb24vanNvbg==" + let contentString = "VGhpcyBpcyBhIHJlc3RsaWtlIG1lc3NhZ2U=" + let method: Int = 2 + let uri = "xx://CmixRestlike/rest" + let error = "" let jsonString = """ { - "Version": 1, - "Headers": "Y29udGVudHM6YXBwbGljYXRpb24vanNvbg==", - "Content": "VGhpcyBpcyBhIHJlc3RsaWtlIG1lc3NhZ2U=", - "Method": 2, - "URI": "xx://CmixRestlike/rest", - "Error": "" + "Version": \(version), + "Headers": "\(headersString)", + "Content": "\(contentString)", + "Method": \(method), + "URI": "\(uri)", + "Error": "\(error)" } """ let jsonData = jsonString.data(using: .utf8)! - let decoder = JSONDecoder() - decoder.dataDecodingStrategy = .base64 - let message = try decoder.decode(RestlikeMessage.self, from: jsonData) + + let message = try RestlikeMessage.decode(jsonData) XCTAssertNoDifference(message, RestlikeMessage( - version: 1, - headers: Data(base64Encoded: "Y29udGVudHM6YXBwbGljYXRpb24vanNvbg==")!, - content: Data(base64Encoded: "VGhpcyBpcyBhIHJlc3RsaWtlIG1lc3NhZ2U=")!, - method: 2, - uri: "xx://CmixRestlike/rest", - error: "" + version: version, + headers: Data(base64Encoded: headersString)!, + content: Data(base64Encoded: contentString)!, + method: method, + uri: uri, + error: error )) - let encoder = JSONEncoder() - encoder.dataEncodingStrategy = .base64 - let encodedMessage = try encoder.encode(message) - let decodedMessage = try decoder.decode(RestlikeMessage.self, from: encodedMessage) + let encodedMessage = try message.encode() + let decodedMessage = try RestlikeMessage.decode(encodedMessage) XCTAssertNoDifference(decodedMessage, message) } -- GitLab