From 35a043ea234b7ae9151bcc4c0e42ac457f4eddca Mon Sep 17 00:00:00 2001 From: Tommy Sadiq Hinrichsen Date: Thu, 29 Jun 2017 15:21:16 +0200 Subject: [PATCH] node not being parsed if there is an error --- Sources/VaporAPNS/VaporAPNS.swift | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Sources/VaporAPNS/VaporAPNS.swift b/Sources/VaporAPNS/VaporAPNS.swift index 5671c8a..1f4f76d 100644 --- a/Sources/VaporAPNS/VaporAPNS.swift +++ b/Sources/VaporAPNS/VaporAPNS.swift @@ -140,11 +140,15 @@ open class VaporAPNS { if responseData != "" { // Get JSON from loaded data string - let jsonNode = JSON(.bytes(responseData.makeBytes()), in: nil).makeNode(in: nil) - if let reason = jsonNode["reason"]?.string { - result = Result.error(apnsId: message.messageId, deviceToken: deviceToken, error: APNSError.init(errorReason: reason)) - } else { - result = Result.success(apnsId: message.messageId, deviceToken: deviceToken, serviceStatus: .success) + do { + let jsonNode = try JSON(bytes: responseData.makeBytes()).makeNode(in: nil) + if let reason = jsonNode["reason"]?.string { + result = Result.error(apnsId: message.messageId, deviceToken: deviceToken, error: APNSError.init(errorReason: reason)) + } else { + result = Result.success(apnsId: message.messageId, deviceToken: deviceToken, serviceStatus: .success) + } + } catch let e { + result = Result.error(apnsId: message.messageId, deviceToken: deviceToken, error: APNSError.init(errorReason: e.localizedDescription)) } } else { result = Result.success(apnsId: message.messageId, deviceToken: deviceToken, serviceStatus: .success)