From 74a1c097716c38a2c5f6b7cea295370925a77925 Mon Sep 17 00:00:00 2001 From: Yaroslav Erohin Date: Fri, 28 Dec 2018 10:14:39 +0300 Subject: [PATCH] use actual decoding error --- Sources/SwiftyEOS/Network/Base/EOSRPC.swift | 26 +++++++++++++-------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/Sources/SwiftyEOS/Network/Base/EOSRPC.swift b/Sources/SwiftyEOS/Network/Base/EOSRPC.swift index 407d3ce..dc7472c 100644 --- a/Sources/SwiftyEOS/Network/Base/EOSRPC.swift +++ b/Sources/SwiftyEOS/Network/Base/EOSRPC.swift @@ -77,16 +77,22 @@ func customDateFormatter(_ decoder: Decoder) throws -> Date { return } - let decoder = self.decoder - guard let responseObject = try? decoder.decode(T.self, from: data) else { - guard let errorResponse = try? decoder.decode(RPCErrorResponse.self, from: data) else { - completion(nil, NSError(domain: errorDomain, code: 1, userInfo: [NSLocalizedDescriptionKey: "Decoding error \(String(describing: error))"])) - return - } - completion(nil, NSError(domain: errorDomain, code: RPCErrorResponse.ErrorCode, userInfo: [RPCErrorResponse.ErrorKey: errorResponse])) - return - } - completion(responseObject, error) + let decoder = self.decoder + do { + let responseObject = try decoder.decode(T.self, from: data) + completion(responseObject, nil) + } + catch (let decodingError) { + if let errorResponse = try? decoder.decode(RPCErrorResponse.self, from: data) { + let errorObj = NSError(domain: errorDomain, code: RPCErrorResponse.ErrorCode, + userInfo: [RPCErrorResponse.ErrorKey: errorResponse]) + return completion(nil, errorObj) + } + + let errorObj = NSError(domain: errorDomain, code: 1, + userInfo: [NSLocalizedDescriptionKey: "Decoding error \(decodingError)"]) + completion(nil, errorObj) + } } }