Commit a5ae0d715cee05fde6ff9af82e09b46f0e14dec0
1 parent
0f6b41821e
Exists in
master
Uniform response
Showing 1 changed file with 16 additions and 11 deletions Inline Diff
lib/parse-result.js
1 | const MODULE_NAME = 'PARSE-RESULT'; | 1 | const MODULE_NAME = 'PARSE-RESULT'; |
2 | 2 | ||
3 | const config = require('komodo-sdk/config'); | 3 | const config = require('komodo-sdk/config'); |
4 | const logger = require('komodo-sdk/logger'); | 4 | const logger = require('komodo-sdk/logger'); |
5 | 5 | ||
6 | const getParamsMemberObj = require('./generic-xmlrpc/get-params-members-obj'); | 6 | const getParamsMemberObj = require('./generic-xmlrpc/get-params-members-obj'); |
7 | const parseXml = require('./parse-xml'); | 7 | const parseXml = require('./parse-xml'); |
8 | 8 | ||
9 | const report = require('./report'); | 9 | const report = require('./report'); |
10 | const translateRc = require('./translate-rc'); | 10 | const translateRc = require('./translate-rc'); |
11 | 11 | ||
12 | module.exports = (xid, trxIdFromCaller, xml, isCallback) => { | 12 | module.exports = (xid, trxIdFromCaller, xml, isCallback) => { |
13 | logger.verbose(`${MODULE_NAME} 58547863: Processing XML message`, { xid }); | 13 | logger.verbose(`${MODULE_NAME} 58547863: Processing XML message`, { xid, isCallback }); |
14 | |||
15 | const responseType = isCallback ? 'CALLBACK' : 'DIRECT-RESPONSE'; | ||
14 | 16 | ||
15 | if (!trxIdFromCaller && !isCallback) { | 17 | if (!trxIdFromCaller && !isCallback) { |
16 | if (logger) logger.warn(`${MODULE_NAME} 8CAAD7C9: No trx id on non callback`, { xid }); | 18 | if (logger) logger.warn(`${MODULE_NAME} 8CAAD7C9: No trx id on non callback`, { xid }); |
17 | return; | 19 | return; |
18 | } | 20 | } |
19 | 21 | ||
20 | const obj = parseXml(xid, xml); | 22 | const obj = parseXml(xid, xml); |
21 | if (!obj) { | 23 | if (!obj) { |
22 | logger.warn(`${MODULE_NAME} B46CAAD1: Invalid XML`, { xid }); | 24 | const e = new Error(`${MODULE_NAME} B46CAAD1: Invalid XML`); |
25 | logger.warn(e.message, { xid }); | ||
23 | 26 | ||
24 | if (trxIdFromCaller) { | 27 | if (trxIdFromCaller) { |
25 | report(xid, { | 28 | report(xid, { |
26 | trx_id: trxIdFromCaller.toString(), | 29 | trx_id: trxIdFromCaller.toString(), |
27 | rc: '68', | 30 | rc: '68', |
28 | message: { | 31 | message: { |
29 | xid, | 32 | xid, |
30 | isDirectResponse: !isCallback, | 33 | responseType, |
31 | isCallback: !!isCallback, | 34 | 'GW-ERROR': { |
32 | body: xml, | 35 | message: e.message, |
36 | responseFromPartner: xml, | ||
37 | }, | ||
33 | }, | 38 | }, |
34 | }); | 39 | }); |
35 | } | 40 | } |
36 | 41 | ||
37 | return; | 42 | return; |
38 | } | 43 | } |
39 | 44 | ||
40 | const params = getParamsMemberObj(obj, false); | 45 | const params = getParamsMemberObj(obj, false); |
41 | 46 | ||
42 | if (!params) { | 47 | if (!params) { |
43 | const e = new Error(`${MODULE_NAME} A7B7EB30: Can not get params from message`); | 48 | const e = new Error(`${MODULE_NAME} A7B7EB30: Can not get params from message`); |
44 | logger.warn(e.message, { xid }); | 49 | logger.warn(e.message, { xid }); |
45 | 50 | ||
46 | if (trxIdFromCaller) { | 51 | if (trxIdFromCaller) { |
47 | report(xid, { | 52 | report(xid, { |
48 | trx_id: trxIdFromCaller.toString(), | 53 | trx_id: trxIdFromCaller.toString(), |
49 | rc: '68', | 54 | rc: '68', |
50 | message: { | 55 | message: { |
51 | xid, | 56 | xid, |
52 | responseType: isCallback ? 'CALLBACK' : 'DIRECT-RESPONSE', | 57 | responseType, |
53 | 'GW-ERROR': { | 58 | 'GW-ERROR': { |
54 | message: e.message, | 59 | message: e.message, |
55 | response: obj, | 60 | responseFromPartner: obj, |
56 | }, | 61 | }, |
57 | }, | 62 | }, |
58 | }); | 63 | }); |
59 | } | 64 | } |
60 | } | 65 | } |
61 | 66 | ||
62 | logger.verbose(`${MODULE_NAME} 3D5400C1: Params extracted from response`, { xid, params }); | 67 | logger.verbose(`${MODULE_NAME} 3D5400C1: Params extracted from response`, { xid, params }); |
63 | 68 | ||
64 | const requestIdField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.requestId) || 'REQUESTID'; | 69 | const requestIdField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.requestId) || 'REQUESTID'; |
65 | const requestIdFromResponse = params[requestIdField]; | 70 | const requestIdFromResponse = params[requestIdField]; |
66 | 71 | ||
67 | const responseCodeField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.responseCode) || 'RESPONSECODE'; | 72 | const responseCodeField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.responseCode) || 'RESPONSECODE'; |
68 | const responseCodeFromResponse = params[responseCodeField]; | 73 | const responseCodeFromResponse = params[responseCodeField]; |
69 | 74 | ||
70 | const messageField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.message) || 'MESSAGE'; | 75 | // eslint-disable-next-line max-len |
71 | const messageFromResponse = params[messageField]; | 76 | // const messageField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.message) || 'MESSAGE'; |
77 | // const messageFromResponse = params[messageField]; | ||
72 | 78 | ||
73 | const snField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.sn) || 'SN'; | 79 | const snField = (config.partner.xmlrpc_field && config.partner.xmlrpc_field.sn) || 'SN'; |
74 | const snFromResponse = params[snField]; | 80 | const snFromResponse = params[snField]; |
75 | 81 | ||
76 | const trxId = trxIdFromCaller || requestIdFromResponse; | 82 | const trxId = trxIdFromCaller || requestIdFromResponse; |
77 | if (!trxId) { | 83 | if (!trxId) { |
78 | logger.warn(`${MODULE_NAME} 534E684A: Unknown trxId`, { xid }); | 84 | logger.warn(`${MODULE_NAME} 534E684A: Unknown trxId`, { xid }); |
79 | return; | 85 | return; |
80 | } | 86 | } |
81 | 87 | ||
82 | const rc = translateRc(xid, responseCodeFromResponse) || '68'; | 88 | const rc = translateRc(xid, responseCodeFromResponse) || '68'; |
83 | 89 | ||
84 | const sn = (rc === '00' && snFromResponse) || null; | 90 | const sn = (rc === '00' && snFromResponse) || null; |
85 | 91 | ||
86 | report(xid, { | 92 | report(xid, { |
87 | trx_id: trxId.toString(), | 93 | trx_id: trxId.toString(), |
88 | rc, | 94 | rc, |
89 | sn, | 95 | sn, |
90 | message: { | 96 | message: { |
91 | xid, | 97 | xid, |
92 | responseType: isCallback ? 'CALLBACK' : 'DIRECT-RESPONSE', | 98 | responseType: isCallback ? 'CALLBACK' : 'DIRECT-RESPONSE', |
93 | message: messageFromResponse, | 99 | message: params, |
94 | detail: params, | ||
95 | }, | 100 | }, |
96 | }); | 101 | }); |
97 | }; | 102 | }; |