From 120c8a3574ea8d8473ca6803937d44adc73ef139 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Mon, 17 Oct 2016 15:35:17 +0700
Subject: [PATCH] debugging cekstatus

---
 cekstatus.js  | 72 +++++++++++++++++++++++++++++++++++++----------------------
 partner-sc.js |  2 ++
 2 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/cekstatus.js b/cekstatus.js
index df8c05c..0fc9924 100644
--- a/cekstatus.js
+++ b/cekstatus.js
@@ -8,15 +8,25 @@ var argv = require('minimist')(process.argv.slice(2), {string: ['requestid', 'de
 var strftime = require('strftime');
 var fs = require('fs');
 var ini = require('ini');
+var winston = require('winston');
 
 var config;
+var logger = new winston.Logger({
+    transports: [
+      new (winston.transports.Console)()
+    ]
+});
+
+function setLogger(_logger) {
+    logger = _logger;
+}
 
 function advice(data, callback) {
     if (!data.trxid && !data.destination) {
-        console.log('Webreport advice request without data. Canceling');
+        logger.warn('Webreport advice request without data. Canceling', {data: data});
         return;
     }
-    
+
     if (data.config) {
         config = data.config;
     } else {
@@ -24,19 +34,19 @@ function advice(data, callback) {
             config = ini.parse(fs.readFileSync(__dirname + '/config.ini', 'utf-8'));
         }
         catch(err) {
-            console.log('Error loading config file');
+            logger.warn('Error loading config file');
             return;
         }
     }
-    
+
     login(data, callback);
 };
 
 function login(data, callback) {
     var jar = request.jar();
-    
+
     var options = {
-        url: 'http://103.11.75.142:9009/dealer/index.php/admin/login', 
+        url: 'http://103.11.75.142:9009/dealer/index.php/admin/login',
         jar: jar,
         followAllRedirects: true,
         form: {
@@ -45,21 +55,21 @@ function login(data, callback) {
             Submit: 'Login',
         },
     };
-    
+
     //console.log('Requesting', options);
     request.post(options, function(error, httpResponse, body) {
         if (error) {
-            console.log('Error retrieving login');
+            logger.warn('Error retrieving login', {options: options, error: error, body: body});
             return;
         }
-        
+
         if (body.search('Incorrect username') >= 0) {
-            console.log('Salah username / password');
+            logger.warn('Salah username / password', {options = options});
             return;
         }
 
         getTrxStatusPage(data, jar, callback);
-        
+
     });
 }
 
@@ -79,29 +89,29 @@ function getTrxStatusPage(data, jar, callback) {
             submit: 'Find',
         },
     };
-    
+
     if (data.trxid) {
         options.form.trxid = data.trxid;
     }
-    
+
     if (data.destination) {
         options.form.destmisdn = data.destination;
     }
-    
+
     //console.log(options);
     request.post(options, function(error, httpResponse, body) {
         if (error) {
-            console.log('Error retrieving trx status page');
+            logger.warn('Error retrieving trx status page', {data: data, options: options, err: error});
             return;
         }
-        
+
         body = body.replace(/<\/thead>\s<\/tbody>/, "</thead>\n<tbody>");
-        
+
         var document = parse5.parse(body);
         var xhtml = xmlser.serializeToString(document);
         var doc = new dom().parseFromString(xhtml);
         var select = xpath.useNamespaces({"x": "http://www.w3.org/1999/xhtml"});
-        
+
         var nodes = select('//x:*[@id="dirlist"]/x:tbody/x:tr/x:td', doc);
         var status = {};
 
@@ -119,39 +129,46 @@ function getTrxStatusPage(data, jar, callback) {
             }
         }
         catch(errStatus) {
-            console.log('Error parsing status');
+            logger.warn('Error parsing status', {data: data, status: status});
             if (callback) {
                 callback();
             }
             return;
         }
-        
+
         status.response = status.response.replace('<td>', '');
         status.response = status.response.replace('</td>', '');
         status.response = status.response.replace(/\n/g, '');
         status.response = status.response.trim();
         //status.response_raw = status.response;
-        
+
         xml2js(status.response, function (err, result) {
             if (err) {
-                console.log('Gagal parsing XML', status.response);
+                logger.warn('Gagal parsing XML', {err: err, status: status, doc: doc});
                 if (callback) {
                     status.response = {};
                     callback(status);
                 }
                 return;
             }
-            
-            status.response = result.result;
-            
+
+            try {
+                status.response = result.result;
+            }
+            catch(e) {
+                logger.warn('Exception on get status.response', {e: e, result: result});
+            }
+
+
+
             if (!callback) {
-                console.log(status);
+                logger.warn('Invalid callback on checkstatus', {status: status});
             } else {
                 callback(status);
             }
         });
     });
-    
+
 }
 
 if (require.main === module) {
@@ -171,4 +188,5 @@ if (require.main === module) {
     advice(data);
 }
 
+exports.setLogger = setLogger;
 exports.advice = advice;
diff --git a/partner-sc.js b/partner-sc.js
index a523632..f2b8d6b 100644
--- a/partner-sc.js
+++ b/partner-sc.js
@@ -578,6 +578,8 @@ function start(options) {
         });
     }
 
+    cekstatus.setLogger(logger);
+
     createHttpReportServer();
     initMongoClient();
 }
-- 
1.9.0