"use strict"; const request = require('request'); const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); 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() ) { return; } const partner = params.partner.trim(); const msg = params.msg.trim(); const requestOptions = { url: config.messaging_url, qs: { origin: originData.origin, report_port: originData.report_port, from: partner, msg: msg } } request(requestOptions, function(err, res, body) { if (err) { logger.warn(err); return; } try { var data = JSON.parse(body); } catch(e) { logger.verbose('Direct response is not on JSON format, forwarding raw response'); sendToPartner(partner, body); return; } logger.verbose('DEBUG', {msg: data.message, err: data.error}); const responseMessage = data.message || data.error; sendToPartner(partner, responseMessage); }) } function sendToPartner(partner, msg) { if (transport && transport.send) { transport.send(partner, msg); } } exports.setTransport = setTransport; exports.onIncomingMessage = onIncomingMessage; exports.sendToPartner = sendToPartner;