From 56c6f0e5beb4c49d6f524c82fb1b9646099cc301 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <gua@adhisimon.org>
Date: Wed, 4 Apr 2018 18:36:28 +0700
Subject: [PATCH] snSanitizer dan msgSanitizer

---
 xmlout.js | 31 ++++++++++++++++++++++---------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/xmlout.js b/xmlout.js
index 1ad27dc..e744ccd 100644
--- a/xmlout.js
+++ b/xmlout.js
@@ -168,6 +168,24 @@ function _topupRequest(task, pendingOnConnectError) {
     });
 }
 
+function snSanitizer(sn) {
+    if (!sn && typeof sn === 'string') {
+        return;
+    }
+
+    sn = sn.replace(/[^A-Z0-9\/]/g, '-');
+    sn = sn.replace(/-+/g, '-');
+    sn = sn.replace(/^-+/, '');
+    sn = sn.replace(/-+$/, '');
+    sn = sn.trim();
+
+    return sn;
+}
+
+function msgSanitizer(msg) {
+    return msg.replace(/;\s*SN=.+?;/, '; ').trim();
+}
+
 function prefixMessageWithSN(data) {
 
     if (data['RESPONSECODE'] != '00') {
@@ -188,16 +206,11 @@ function prefixMessageWithSN(data) {
         }
     }
 
+    sn = snSanitizer(sn);
+
     if (sn) {
-        //sn = sn.replace(/ /g, '-');
-        //sn = sn.replace(/[\()]/g, '-');
-        sn = sn.replace(/[^A-Z0-9\/]/g, '-');
-        sn = sn.replace(/-+/g, '-');
-        sn = sn.replace(/^-+/, '');
-        sn = sn.replace(/-+$/, '');
-        sn = sn.replace(/;\s*SN=.+?;/, '; ');
-        sn = sn.trim();
-        return 'SN=' + sn + '; ' + data['MESSAGE'];
+        msg = 'SN=' + sn + '; ' + data['MESSAGE'];
+        return msgSanitizer(msg);
     }
 
     return data['MESSAGE'];
-- 
1.9.0