From 048de639b42b71282562b6da67ae80cc2984ff13 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Tue, 16 Aug 2016 19:23:24 +0700
Subject: [PATCH] coba lebih bersih

---
 partner-fm.js | 52 ++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 40 insertions(+), 12 deletions(-)

diff --git a/partner-fm.js b/partner-fm.js
index 4ac5464..1335d18 100644
--- a/partner-fm.js
+++ b/partner-fm.js
@@ -152,33 +152,34 @@ function topupResponseHandler(xmlResponse, _requestId, cb) {
 
             logger.info('Response parsed', {data: data});
 
-            try {
-                msg = data.fm.message[0];
-            }
-            catch(e) {
-                msg = 'Unknown message'
+            msg = getMessageFromResponse(data);
+            if (!msg) {
+                msg = 'Unknown message';
             }
 
-            if (data.fm.status[0] == '0') {
+            var status = getStatusFromResponse(data);
+
+            if (status == '0') {
 
                 rc = '00';
                 msg = modifyMessageWithSn(msg);
                 logger.verbose('Modify message on success message', {msg: msg});
 
-            } else if (data.fm.status[0] == '1') {
+            } else if (status == '1') {
                 rc = '68';
-            } else if (data.fm.status[0] == '2') {
+            } else if (status == '2') {
                 rc = '40';
-            } else if (data.fm.status[0] == '3') {
+            } else if (status == '3') {
                 rc = '40';
             } else {
                 rc = '68';
+                msg = msg + '. Status is not valid ' + status;
             }
 
-            if (data.fm.refTrxid[0]) {
-                requestId = data.fm.refTrxid[0];
+            var requestIdFromData = getRequestIdFromResponse(data);
+            if (requestIdFromData) {
+                requestId = requestIdFromData;
             }
-
         }
 
         cb(requestId, rc, msg, xmlResponse)
@@ -217,6 +218,33 @@ function getSnFromMessage(msg) {
     }
 }
 
+function getStatusFromResponse(msg) {
+    try {
+        return data.fm.status[0];
+    }
+    catch(e) {
+        return;
+    }
+}
+
+function getMessageFromResponse(msg) {
+    try {
+        return data.fm.message[0];
+    }
+    catch(e) {
+        return;
+    }
+}
+
+function getRequestIdFromResponse(msg) {
+    try {
+        return data.fm.refTrxid[0];
+    }
+    catch(e) {
+        return;
+    }
+}
+
 function modifyMessageWithSn(msg) {
     var sn = getSnFromMessage(msg);
 
-- 
1.9.0