From 5a173671e4cd14c781952fd413b366d1d1288c3a Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <gua@adhisimon.org>
Date: Tue, 14 Feb 2017 11:52:06 +0700
Subject: [PATCH] penanganan invalid xml

---
 partner-trugee.js | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/partner-trugee.js b/partner-trugee.js
index 8986f14..316da15 100644
--- a/partner-trugee.js
+++ b/partner-trugee.js
@@ -109,8 +109,15 @@ function directResponseHandler(body, request_id) {
         var response_code = '68';
 
         //var request_id = result.pulsamatic.partner_trxid[0].trim();
-        var message = result.pulsamatic.message[0].trim();
-        var status = result.pulsamatic.result[0].trim();
+        var message = getMessageFromXmlResponse(result);
+        if (!message) {
+            message = body;
+        }
+
+        var status = getStatusFromXmlResponse(result);
+        if (!status) {
+            status = 'UNKNOWN';
+        }
 
         if (status === 'failed') {
             response_code = '40';
@@ -126,6 +133,29 @@ function directResponseHandler(body, request_id) {
     });
 }
 
+function getMessageFromXmlResponse(response) {
+    var message = null;
+    try {
+        message = response.pulsamatic.message[0].trim();
+    }
+    catch(e) {
+        logger.warn('Undefined message from response', {response: response});
+    }
+    return message;
+}
+
+function getStatusFromXmlResponse(response) {
+    var status = null;
+    try {
+        status = response.pulsamatic.result[0].trim();
+    }
+    catch(e) {
+        logger.warn('Undefined status from response', {response: response});
+    }
+    return message;
+}
+
+
 function responseCodeFromMessage(message) {
     if (message.indexOf('Jenis produk tidak cocok') >= 0) {
         return '14';
-- 
1.9.0