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