Commit 65f444c366ac12e255370585bcf7884fc0f131b8

Authored by Adhidarma Hadiwinoto
1 parent e1034b74fb
Exists in master and in 1 other branch dev

Activating /topup

Showing 1 changed file with 1 additions and 1 deletions Inline Diff

lib/partner-listener/routers/topup.js
1 const express = require('express'); 1 const express = require('express');
2 2
3 const config = require('komodo-sdk/config'); 3 const config = require('komodo-sdk/config');
4 const logger = require('komodo-sdk/logger'); 4 const logger = require('komodo-sdk/logger');
5 const coreapi = require('komodo-sdk/coreapi'); 5 const coreapi = require('komodo-sdk/coreapi');
6 // const coreapi = require('../../coreapi'); 6 // const coreapi = require('../../coreapi');
7 7
8 const router = express.Router(); 8 const router = express.Router();
9 module.exports = router; 9 module.exports = router;
10 10
11 function onInvalidParameter(missingParameter, req, res) { 11 function onInvalidParameter(missingParameter, req, res) {
12 logger.verbose(`TOPUP: Undefined ${missingParameter} parameter`, { 12 logger.verbose(`TOPUP: Undefined ${missingParameter} parameter`, {
13 xid: res.locals.xid, 13 xid: res.locals.xid,
14 ip: req.ip, 14 ip: req.ip,
15 terminal_name: req.body.terminal_name || req.query.terminal_name, 15 terminal_name: req.body.terminal_name || req.query.terminal_name,
16 request_id: req.body.request_id || req.query.request_id, 16 request_id: req.body.request_id || req.query.request_id,
17 product_name: req.body.product_name || req.query.product_name, 17 product_name: req.body.product_name || req.query.product_name,
18 destination: req.body.destination || req.query.destination, 18 destination: req.body.destination || req.query.destination,
19 }); 19 });
20 res.end('INVALID REQUEST'); 20 res.end('INVALID REQUEST');
21 } 21 }
22 22
23 function pagePrerequisite(req, res, next) { 23 function pagePrerequisite(req, res, next) {
24 if (!req.body) req.body = {}; 24 if (!req.body) req.body = {};
25 25
26 if (!req.body.terminal_name && !req.query.terminal_name) { 26 if (!req.body.terminal_name && !req.query.terminal_name) {
27 onInvalidParameter('terminal_name', req, res); 27 onInvalidParameter('terminal_name', req, res);
28 return; 28 return;
29 } 29 }
30 30
31 if (!req.body.password && !req.query.password) { 31 if (!req.body.password && !req.query.password) {
32 onInvalidParameter('password', req, res); 32 onInvalidParameter('password', req, res);
33 return; 33 return;
34 } 34 }
35 35
36 if (!req.body.request_id && !req.query.request_id) { 36 if (!req.body.request_id && !req.query.request_id) {
37 onInvalidParameter('request_id', req, res); 37 onInvalidParameter('request_id', req, res);
38 return; 38 return;
39 } 39 }
40 40
41 if (!req.body.product_name && !req.query.product_name) { 41 if (!req.body.product_name && !req.query.product_name) {
42 onInvalidParameter('product_name', req, res); 42 onInvalidParameter('product_name', req, res);
43 return; 43 return;
44 } 44 }
45 45
46 if (!req.body.destination && !req.query.destination) { 46 if (!req.body.destination && !req.query.destination) {
47 onInvalidParameter('destination', req, res); 47 onInvalidParameter('destination', req, res);
48 return; 48 return;
49 } 49 }
50 50
51 next(); 51 next();
52 } 52 }
53 53
54 async function pageIndex(req, res) { 54 async function pageIndex(req, res) {
55 const terminalName = `${req.body.terminal_name || req.query.terminal_name}@${req.ip.replace(/^::ffff:/, '')}`; 55 const terminalName = `${req.body.terminal_name || req.query.terminal_name}@${req.ip.replace(/^::ffff:/, '')}`;
56 56
57 const [err, coreResponse] = await coreapi({ 57 const [err, coreResponse] = await coreapi({
58 xid: res.locals.xid, 58 xid: res.locals.xid,
59 path: '/prepaid/buy', 59 path: '/prepaid/buy',
60 qs: { 60 qs: {
61 terminal_name: terminalName, 61 terminal_name: terminalName,
62 password: req.body.password || req.query.password, 62 password: req.body.password || req.query.password,
63 request_id: req.body.request_id || req.query.request_id, 63 request_id: req.body.request_id || req.query.request_id,
64 product_name: req.body.product_name || req.query.product_name, 64 product_name: req.body.product_name || req.query.product_name,
65 destination: req.body.destination || req.query.destination, 65 destination: req.body.destination || req.query.destination,
66 origin: config.name || 'HTTPGETX', 66 origin: config.name || 'HTTPGETX',
67 report_ip: config.listener.core.ip || null, 67 report_ip: config.listener.core.ip || null,
68 report_port: config.listener.core.port, 68 report_port: config.listener.core.port,
69 reverse_url: req.body.reverse_url || req.query.reverse_url || null, 69 reverse_url: req.body.reverse_url || req.query.reverse_url || null,
70 }, 70 },
71 }); 71 });
72 72
73 logger.verbose('Got CORE response', { xid: res.locals.xid, err, coreResponse }); 73 logger.verbose('Got CORE response', { xid: res.locals.xid, err, coreResponse });
74 74
75 if (err) { 75 if (err) {
76 logger.warn('TOPUP: ERROR on /prepaid/buy response', { 76 logger.warn('TOPUP: ERROR on /prepaid/buy response', {
77 xid: res.locals.xid, err, coreResponseTypeof: typeof coreResponse, coreResponse, 77 xid: res.locals.xid, err, coreResponseTypeof: typeof coreResponse, coreResponse,
78 }); 78 });
79 res.end('INVALID CORE RESPONSE'); 79 res.end('INVALID CORE RESPONSE');
80 return; 80 return;
81 } 81 }
82 82
83 res.end('OK'); 83 res.end('OK');
84 } 84 }
85 85
86 router.all('/', (req, res) => { res.status(404).end('404: Not implemented yet'); }); 86 // router.all('/', (req, res) => { res.status(404).end('404: Not implemented yet'); });
87 router.get('/', pagePrerequisite, pageIndex); 87 router.get('/', pagePrerequisite, pageIndex);
88 88