const MODULE_NAME = 'PARSE-RESULT'; const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); const getParamsMemberObj = require('./generic-xmlrpc/get-params-members-obj'); const parseXml = require('./parse-xml'); const report = require('./report'); const translateRc = require('./translate-rc'); module.exports = (xid, trxIdFromCaller, xml, isCallback) => { logger.verbose(`${MODULE_NAME} 58547863: Processing XML message`, { xid }); if (!trxIdFromCaller && !isCallback) { if (logger) logger.warn(`${MODULE_NAME} 8CAAD7C9: No trx id on non callback`, { xid }); return; } const obj = parseXml(xid, xml); if (!obj) { logger.warn(`${MODULE_NAME} B46CAAD1: Invalid XML`, { xid }); if (trxIdFromCaller) { report(xid, { trx_id: trxIdFromCaller, rc: '68', message: { xid, isDirectResponse: !isCallback, isCallback: !!isCallback, body: xml, }, }); } return; } const params = getParamsMemberObj(obj, false); logger.verbose(`${MODULE_NAME} 3D5400C1: Params extracted from response`, { xid, params }); const requestIdField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.requestId) || 'REQUESTID'; const requestIdFromResponse = params[requestIdField]; const responseCodeField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.responseCode) || 'RESPONSECODE'; const responseCodeFromResponse = params[responseCodeField]; // eslint-disable-next-line max-len // const messageField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.message) || 'MESSAGE'; // const messageFromResponse = params[messageField]; const snField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.sn) || 'SN'; const snFromResponse = params[snField]; const trxId = trxIdFromCaller || requestIdFromResponse; if (!trxId) { logger.warn(`${MODULE_NAME} 534E684A: Unknown trxId`, { xid }); return; } const rc = translateRc(xid, responseCodeFromResponse) || '68'; const sn = (rc === '00' && snFromResponse) || null; report(xid, { trx_id: trxId, rc, sn, message: { xid, responseType: isCallback ? 'CALLBACK' : 'DIRECT-RESPONSE', body: xml, }, }); };