Commit 916fdcf584484c047ba533b47c8783bd010eef9a

Authored by Adhidarma Hadiwinoto
1 parent cc60460055
Exists in master

Add debug on response data

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

1 const MODULE_NAME = 'HIT'; 1 const MODULE_NAME = 'HIT';
2 2
3 const axios = require('axios').default; 3 const axios = require('axios').default;
4 4
5 const config = require('komodo-sdk/config'); 5 const config = require('komodo-sdk/config');
6 const logger = require('tektrans-logger'); 6 const logger = require('tektrans-logger');
7 7
8 const composePayload = require('./generic-xmlrpc/compose-payload'); 8 const composePayload = require('./generic-xmlrpc/compose-payload');
9 const report = require('./report'); 9 const report = require('./report');
10 const dumper = require('./dumper/request'); 10 const dumper = require('./dumper/request');
11 const axiosSafeFailed = require('./axios-safe-failed'); 11 const axiosSafeFailed = require('./axios-safe-failed');
12 const parseResult = require('./parse-result'); 12 const parseResult = require('./parse-result');
13 13
14 const defaultAxiosConfig = { 14 const defaultAxiosConfig = {
15 headers: { 15 headers: {
16 'User-Agent': 'Komodo-GW-ST24B', 16 'User-Agent': 'Komodo-GW-ST24B',
17 'Content-Type': 'text/xml', 17 'Content-Type': 'text/xml',
18 }, 18 },
19 timeout: config.partner.hit_timeout = 2 * 60 * 120, 19 timeout: config.partner.hit_timeout = 2 * 60 * 120,
20 }; 20 };
21 21
22 module.exports = async (xid, task) => { 22 module.exports = async (xid, task) => {
23 const methodName = config.partner.topuprequest_method_name || 'topUpRequest'; 23 const methodName = config.partner.topuprequest_method_name || 'topUpRequest';
24 24
25 logger.verbose(`${MODULE_NAME} E4F52474: Processing task`, { 25 logger.verbose(`${MODULE_NAME} E4F52474: Processing task`, {
26 xid, methodName, task, 26 xid, methodName, task,
27 }); 27 });
28 28
29 const params = { 29 const params = {
30 MSISDN: config.partner.msisdn, 30 MSISDN: config.partner.msisdn,
31 REQUESTID: task.trx_id, 31 REQUESTID: task.trx_id,
32 PIN: config.partner.pin, 32 PIN: config.partner.pin,
33 NOHP: task.destination, 33 NOHP: task.destination,
34 NOM: task.remote_product, 34 NOM: task.remote_product,
35 }; 35 };
36 36
37 const payload = composePayload(methodName, params); 37 const payload = composePayload(methodName, params);
38 const axiosConfig = JSON.parse(JSON.stringify(defaultAxiosConfig)); 38 const axiosConfig = JSON.parse(JSON.stringify(defaultAxiosConfig));
39 axiosConfig.headers['Content-length'] = payload.length; 39 axiosConfig.headers['Content-length'] = payload.length;
40 40
41 let response; 41 let response;
42 let eToDump; 42 let eToDump;
43 43
44 const endpointUrl = config.partner.url; 44 const endpointUrl = config.partner.url;
45 45
46 report(xid, { 46 report(xid, {
47 trx_id: task.trx_id, 47 trx_id: task.trx_id,
48 rc: '68', 48 rc: '68',
49 message: { 49 message: {
50 xid, 50 xid,
51 msg: `Sending request to ${config.partner.url}`, 51 msg: `Sending request to ${config.partner.url}`,
52 }, 52 },
53 }); 53 });
54 54
55 try { 55 try {
56 logger.verbose(`${MODULE_NAME} 47FDCA85: Going to HIT partner`, { 56 logger.verbose(`${MODULE_NAME} 47FDCA85: Going to HIT partner`, {
57 xid, 57 xid,
58 endpointUrl, 58 endpointUrl,
59 methodName, 59 methodName,
60 params, 60 params,
61 }); 61 });
62 62
63 response = await axios.post(endpointUrl, payload, axiosConfig); 63 response = await axios.post(endpointUrl, payload, axiosConfig);
64 if (!response) { 64 if (!response) {
65 const e = new Error(`${MODULE_NAME} BAACC918: Empty response`); 65 const e = new Error(`${MODULE_NAME} BAACC918: Empty response`);
66 e.rc = '90'; 66 e.rc = '90';
67 logger.warn(e.message, { xid }); 67 logger.warn(e.message, { xid });
68 throw e; 68 throw e;
69 } 69 }
70 70
71 if (!response.data) { 71 if (!response.data) {
72 const e = new Error(`${MODULE_NAME} C816D842: Empty response data`); 72 const e = new Error(`${MODULE_NAME} C816D842: Empty response data`);
73 e.rc = '90'; 73 e.rc = '90';
74 logger.warn(e.message, { xid }); 74 logger.warn(e.message, { xid });
75 throw e; 75 throw e;
76 } 76 }
77 77
78 if (typeof response.data !== 'string') { 78 if (typeof response.data !== 'string') {
79 const e = new Error(`${MODULE_NAME} 32A75E8E: Response data is not a string`); 79 const e = new Error(`${MODULE_NAME} 32A75E8E: Response data is not a string`);
80 e.rc = '90'; 80 e.rc = '90';
81 logger.warn(e.message, { xid }); 81 logger.warn(e.message, { xid });
82 throw e; 82 throw e;
83 } 83 }
84 84
85 logger.verbose(`${MODULE_NAME} D0CBD82A: Parsing response`, { xid }); 85 logger.verbose(`${MODULE_NAME} D0CBD82A: Parsing response`, { xid, responseBody: response.data });
86 parseResult(xid, task.trx_id, response.data, false); 86 parseResult(xid, task.trx_id, response.data, false);
87 } catch (e) { 87 } catch (e) {
88 eToDump = e; 88 eToDump = e;
89 89
90 logger.warn(`${MODULE_NAME} 2653B932: Got an exception`, { 90 logger.warn(`${MODULE_NAME} 2653B932: Got an exception`, {
91 xid, 91 xid,
92 eCode: e.code, 92 eCode: e.code,
93 eMessage: e.message, 93 eMessage: e.message,
94 eRc: e.rc, 94 eRc: e.rc,
95 responseStatus: e.response && e.response.status, 95 responseStatus: e.response && e.response.status,
96 responseStatusText: e.response && e.response.statusText, 96 responseStatusText: e.response && e.response.statusText,
97 responseContentType: e.response && e.response.headers && e.response.headers['content-type'], 97 responseContentType: e.response && e.response.headers && e.response.headers['content-type'],
98 responseBody: e.response && e.response.data, 98 responseBody: e.response && e.response.data,
99 }); 99 });
100 100
101 if (e.response) response = e.response; 101 if (e.response) response = e.response;
102 102
103 const rc = e.rc 103 const rc = e.rc
104 || (axiosSafeFailed(e) || '91') 104 || (axiosSafeFailed(e) || '91')
105 || '68'; 105 || '68';
106 106
107 report(xid, { 107 report(xid, {
108 trx_id: task.trx_id, 108 trx_id: task.trx_id,
109 rc, 109 rc,
110 message: { 110 message: {
111 xid, 111 xid,
112 'GW-ERROR': { 112 'GW-ERROR': {
113 code: e.code, 113 code: e.code,
114 message: e.message, 114 message: e.message,
115 endpointUrl, 115 endpointUrl,
116 httpStatus: (e.response && e.response.status) || null, 116 httpStatus: (e.response && e.response.status) || null,
117 httpStatusText: (e.response && e.response.statusText) || null, 117 httpStatusText: (e.response && e.response.statusText) || null,
118 responseBody: e.response && e.response.data, 118 responseBody: e.response && e.response.data,
119 }, 119 },
120 }, 120 },
121 }); 121 });
122 } finally { 122 } finally {
123 dumper( 123 dumper(
124 xid, 124 xid,
125 task, 125 task,
126 endpointUrl, 126 endpointUrl,
127 payload, 127 payload,
128 response.config || axiosConfig, 128 response.config || axiosConfig,
129 response, 129 response,
130 eToDump, 130 eToDump,
131 ); 131 );
132 } 132 }
133 }; 133 };
134 134