const DEBUG_ON_NON_JSON_DIRECT_RESPONSE = !!(process.env.DEBUG_ON_NON_JSON_DIRECT_RESPONSE) const request = require('request'); const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); if (!process.env.KOMODO_MESSAGING_DO_NOT_LISTEN) { require('./http-callback-handler'); } let transport; const originData = { origin: config.origin, report_port: config.listen_port } function setTransport(_transport) { transport = _transport; } function onIncomingMessage(params) { if ( typeof params.partner !== 'string' || typeof params.msg !== 'string' || !params.partner.trim() || !params.msg.trim() ) { logger.verbose('Not reporting to messaging center because of invalid parameter. F68CCCD74E79'); return; } const requestOptions = { url: config.messaging_url, qs: { origin: originData.origin, origin_label: params.origin_label, origin_transport: params.origin_transport, report_port: originData.report_port, partner: params.partner, partner_raw: params.partner_raw || params.partner, from: params.partner, from_raw: params.partner_raw || params.partner, msg: params.msg.trim(), do_not_forward_to_core: params.do_not_forward_to_core || null, is_outgoing: params.is_outgoing || null, } } logger.verbose('MESSAGING-CLIENT-LIB: Sending report to messaging service', { qs: requestOptions.qs }); request(requestOptions, function(err, res, body) { if (err) { logger.warn('MESSAGING-CLIENT-LIB: error on request to messaging service', {err: err}); return; } logger.verbose('MESSAGING-CLIENT-LIB: Got resposnse', { body }); if (params.do_not_forward_to_core) return; if (params.is_outgoing) return; try { var data = JSON.parse(body); } catch(e) { if (DEBUG_ON_NON_JSON_DIRECT_RESPONSE) { logger.verbose('MESSAGING-CLIENT-LIB: direct response from messaging service is not on JSON format, forwarding raw response', { partner: params.partner, msg: params.msg.trim(), directResponse: body, }); } sendToPartner(params.partner, body); return; } //logger.verbose('DEBUG', {msg: data.message, err: data.error}); const responseMessage = data.message || data.error; sendToPartner(params.partner, responseMessage); }) } function sendToPartner(partner, msg) { if (transport && transport.send) { transport.send(partner, msg); } } exports.setTransport = setTransport; exports.onIncomingMessage = onIncomingMessage; exports.sendToPartner = sendToPartner;