From 9e61d939fc762955081d003ebf149015be124aa9 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <adhisimon@gmail.com>
Date: Mon, 31 May 2021 13:30:47 +0700
Subject: [PATCH] TOPUP: cleansed

---
 lib/partner-listener/routers/topup.js | 41 ++++++++++++++++++++++++++++-------
 package-lock.json                     | 37 +++++++++++++++++--------------
 package.json                          |  2 +-
 3 files changed, 55 insertions(+), 25 deletions(-)

diff --git a/lib/partner-listener/routers/topup.js b/lib/partner-listener/routers/topup.js
index aa9c81e..10b1ded 100644
--- a/lib/partner-listener/routers/topup.js
+++ b/lib/partner-listener/routers/topup.js
@@ -1,3 +1,5 @@
+const MODULE_NAME = 'PARTNER-LISTENER.ROUTER.TOPUP';
+
 const express = require('express');
 
 const config = require('komodo-sdk/config');
@@ -9,7 +11,7 @@ const router = express.Router();
 module.exports = router;
 
 function onInvalidParameter(missingParameter, req, res) {
-    logger.verbose(`TOPUP: Undefined ${missingParameter} parameter`, {
+    logger.verbose(`${MODULE_NAME} 1536D577: Undefined ${missingParameter} parameter`, {
         xid: res.locals.xid,
         ip: req.ip,
         terminal_name: req.body.terminal_name || req.query.terminal_name,
@@ -52,10 +54,12 @@ function pagePrerequisite(req, res, next) {
 }
 
 async function pageIndex(req, res) {
+    const { xid } = res.locals;
+
     const terminalName = `${req.body.terminal_name || req.query.terminal_name}@${req.ip.replace(/^::ffff:/, '')}`;
 
     const [err, coreResponse] = await coreapi({
-        xid: res.locals.xid,
+        xid,
         path: '/prepaid/buy',
         qs: {
             terminal_name: terminalName,
@@ -70,18 +74,39 @@ async function pageIndex(req, res) {
         },
     });
 
-    logger.verbose('Got CORE response', { xid: res.locals.xid, err, coreResponse });
-
     if (err || !coreResponse) {
-        logger.warn('TOPUP: ERROR on /prepaid/buy response', {
-            xid: res.locals.xid, err, coreResponseTypeof: typeof coreResponse, coreResponse,
+        logger.warn(`${MODULE_NAME} 8DEBE15F: ERROR on /prepaid/buy response`, {
+            xid,
+            err,
+            coreResponseTypeof: typeof coreResponse,
+            coreResponse,
         });
         res.end('INVALID CORE RESPONSE');
         return;
     }
 
-    // res.end('OK');
-    res.json(coreResponse);
+    logger.verbose(`${MODULE_NAME} 2528A9B4: Got CORE response`, {
+        xid,
+        coreResponse,
+    });
+
+    const responseToPartner = {
+        httpgetx_xid: xid,
+        request_id: coreResponse.request_id,
+        transaction_id: coreResponse.transaction_id,
+        transaction_date: coreResponse.transaction_date,
+        store_name: coreResponse.store_name,
+        terminal_name: coreResponse.terminal_name,
+        product_name: coreResponse.product_name,
+        destination: coreResponse.destination,
+        rc: coreResponse.rc,
+        sn: coreResponse.sn,
+        amount: Number(coreResponse.amount) || null,
+        ending_balance: Number(coreResponse.ending_balance) || null,
+        message: coreResponse.message,
+    };
+
+    res.json(responseToPartner);
 }
 
 // router.all('/', (req, res) => { res.status(404).end('404: Not implemented yet'); });
diff --git a/package-lock.json b/package-lock.json
index 1a0994a..970eee4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -356,9 +356,9 @@
       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
     },
     "color-string": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz",
-      "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==",
+      "version": "1.5.5",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz",
+      "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==",
       "requires": {
         "color-name": "^1.0.0",
         "simple-swizzle": "^0.2.2"
@@ -919,20 +919,25 @@
       }
     },
     "express-session": {
-      "version": "1.17.1",
-      "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz",
-      "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==",
+      "version": "1.17.2",
+      "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
+      "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==",
       "requires": {
-        "cookie": "0.4.0",
+        "cookie": "0.4.1",
         "cookie-signature": "1.0.6",
         "debug": "2.6.9",
         "depd": "~2.0.0",
         "on-headers": "~1.0.2",
         "parseurl": "~1.3.3",
-        "safe-buffer": "5.2.0",
+        "safe-buffer": "5.2.1",
         "uid-safe": "~2.1.5"
       },
       "dependencies": {
+        "cookie": {
+          "version": "0.4.1",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+          "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
+        },
         "debug": {
           "version": "2.6.9",
           "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -952,9 +957,9 @@
           "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
         },
         "safe-buffer": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
-          "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
         }
       }
     },
@@ -1001,9 +1006,9 @@
       "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
     },
     "fecha": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
-      "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg=="
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
+      "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q=="
     },
     "figures": {
       "version": "3.2.0",
@@ -1599,8 +1604,8 @@
       }
     },
     "komodo-sdk": {
-      "version": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git#4af07f8facf4d10ced4da38c4d44e1a4670a5165",
-      "from": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git",
+      "version": "git+https://gitlab.kodesumber.com/komodo/komodo-sdk.git#4af07f8facf4d10ced4da38c4d44e1a4670a5165",
+      "from": "git+https://gitlab.kodesumber.com/komodo/komodo-sdk.git",
       "requires": {
         "array-unique": "^0.3.2",
         "basic-auth": "^2.0.0",
diff --git a/package.json b/package.json
index b019c47..9b9045b 100644
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
   "dependencies": {
     "axios": "^0.19.2",
     "express": "^4.17.1",
-    "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git",
+    "komodo-sdk": "git+https://gitlab.kodesumber.com/komodo/komodo-sdk.git",
     "moment": "^2.24.0",
     "request": "^2.88.0",
     "uniqid": "^5.0.3",
-- 
1.9.0