Commit cd0f9f5a8cf61dbe065b6a8ffde723783235e739
1 parent
f3d7598abb
Exists in
master
and in
1 other branch
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); |
package-lock.json
... | ... | @@ -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", |