Commit cd0f9f5a8cf61dbe065b6a8ffde723783235e739

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

product-tree API

Showing 4 changed files with 76 additions and 6 deletions Side-by-side Diff

lib/partner-listener/index.js
... ... @@ -13,6 +13,7 @@ const routerInquiry = require('./routers/inquiry');
13 13 const routerPay = require('./routers/pay');
14 14 const routerTopup = require('./routers/topup');
15 15 const routerTrxStatus = require('./routers/trx-status');
  16 +const routerProductTree = require('./routers/product-tree');
16 17  
17 18 const app = express();
18 19  
... ... @@ -49,6 +50,7 @@ app.use('/inquiry', routerInquiry);
49 50 app.use('/pay', routerPay);
50 51 app.use('/topup', routerTopup);
51 52 app.use('/trx-status', routerTrxStatus);
  53 +app.use('/product-tree', routerProductTree);
52 54 app.use('/', routerTopup);
53 55  
54 56 app.use((req, res) => {
lib/partner-listener/routers/product-tree.js
... ... @@ -0,0 +1,53 @@
  1 +const MODULE_NAME = 'PARTNER-LISTENER.ROUTERS.PRODUCT-TREE';
  2 +
  3 +const axios = require('axios').default;
  4 +const express = require('express');
  5 +const urlJoin = require('url-join');
  6 +
  7 +const coreUrl = require('komodo-sdk/core-url');
  8 +const logger = require('tektrans-logger');
  9 +
  10 +const getFromBodyQsParams = require('../../get-from-body-qs-params');
  11 +
  12 +const CORE_ENDPOINT = urlJoin(coreUrl, '/product-tree');
  13 +
  14 +const router = express.Router();
  15 +module.exports = router;
  16 +
  17 +const mainHandler = async (req, res) => {
  18 + const { xid } = res.locals;
  19 +
  20 + const terminalName = getFromBodyQsParams(req, 'terminal_name');
  21 + const password = getFromBodyQsParams(req, 'password');
  22 +
  23 + try {
  24 + const result = await axios.get(CORE_ENDPOINT, {
  25 + params: {
  26 + terminal_name: terminalName,
  27 + password,
  28 + },
  29 + });
  30 +
  31 + if (!result) {
  32 + const e = new Error(`${MODULE_NAME} B7555411: Invalid result from CORE`);
  33 + throw e;
  34 + }
  35 +
  36 + result.httpgetx_xid = xid;
  37 + res.json(result);
  38 + } catch (e) {
  39 + logger.warn(`${MODULE_NAME} 5AA99A06: Exception`, {
  40 + xid,
  41 + eCode: e.code,
  42 + eMessage: e.message || e,
  43 + });
  44 +
  45 + res.json({
  46 + xid,
  47 + ts: new Date(),
  48 + error: e.message || e,
  49 + });
  50 + }
  51 +};
  52 +
  53 +router.get('/', mainHandler);
... ... @@ -17,6 +17,7 @@
17 17 "request": "^2.88.0",
18 18 "tektrans-logger": "^1.2.3",
19 19 "uniqid": "^5.3.0",
  20 + "url-join": "^5.0.0",
20 21 "uuid": "^3.3.3"
21 22 },
22 23 "devDependencies": {
... ... @@ -2113,6 +2114,11 @@
2113 2114 "macaddress": "^0.2.8"
2114 2115 }
2115 2116 },
  2117 + "node_modules/komodo-sdk/node_modules/url-join": {
  2118 + "version": "4.0.1",
  2119 + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
  2120 + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
  2121 + },
2116 2122 "node_modules/kuler": {
2117 2123 "version": "2.0.0",
2118 2124 "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
... ... @@ -4194,9 +4200,12 @@
4194 4200 }
4195 4201 },
4196 4202 "node_modules/url-join": {
4197   - "version": "4.0.1",
4198   - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
4199   - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
  4203 + "version": "5.0.0",
  4204 + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
  4205 + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
  4206 + "engines": {
  4207 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
  4208 + }
4200 4209 },
4201 4210 "node_modules/util-deprecate": {
4202 4211 "version": "1.0.2",
... ... @@ -6305,6 +6314,11 @@
6305 6314 "requires": {
6306 6315 "macaddress": "^0.2.8"
6307 6316 }
  6317 + },
  6318 + "url-join": {
  6319 + "version": "4.0.1",
  6320 + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
  6321 + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
6308 6322 }
6309 6323 }
6310 6324 },
... ... @@ -7919,9 +7933,9 @@
7919 7933 }
7920 7934 },
7921 7935 "url-join": {
7922   - "version": "4.0.1",
7923   - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
7924   - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
  7936 + "version": "5.0.0",
  7937 + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
  7938 + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA=="
7925 7939 },
7926 7940 "util-deprecate": {
7927 7941 "version": "1.0.2",
... ... @@ -37,6 +37,7 @@
37 37 "request": "^2.88.0",
38 38 "tektrans-logger": "^1.2.3",
39 39 "uniqid": "^5.3.0",
  40 + "url-join": "^5.0.0",
40 41 "uuid": "^3.3.3"
41 42 }
42 43 }