From dcbdd261df3fddc30515a19c7c17be5489215791 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <adhisimon@gmail.com> Date: Fri, 12 Nov 2021 18:04:00 +0700 Subject: [PATCH] Create sender module --- lib/custom-ping.js | 12 ++++++++---- lib/sender.js | 40 ++++++++++++++++++++++++++++++++++++++++ lib/transport.js | 14 +++++++------- 3 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 lib/sender.js diff --git a/lib/custom-ping.js b/lib/custom-ping.js index d2db165..9ab44b6 100644 --- a/lib/custom-ping.js +++ b/lib/custom-ping.js @@ -4,6 +4,8 @@ const uniqid = require('uniqid'); const config = require('komodo-sdk/config'); const logger = require('tektrans-logger'); +const sender = require('./sender'); + let bot; const allowedFromPartnerList = ( @@ -56,7 +58,7 @@ const sendPong = (xid, partner, pingMessage) => { }); } - bot.send(partner.trim(), pongMessage); + sender.send(partner.trim(), pongMessage); }; exports.sendPong = sendPong; @@ -72,7 +74,7 @@ const pingSender = async () => { if (bot) { const msg = `PING ${xid}`; - bot.send(config.username, msg); + sender.send(config.username, msg); if ( config.custom_ping @@ -81,8 +83,10 @@ const pingSender = async () => { ) { const partnerCount = config.custom_ping.send_to.length; for (let i = 0; i < partnerCount; i += 1) { + const additionalDelay = Math.random() * 1000; + // eslint-disable-next-line no-await-in-loop - await sleepMs(1000); + await sleepMs(1000 + additionalDelay); const partner = config.custom_ping.send_to[i]; @@ -94,7 +98,7 @@ const pingSender = async () => { }); } - bot.send(partner, msg); + sender.send(partner, msg, xid); } } } diff --git a/lib/sender.js b/lib/sender.js new file mode 100644 index 0000000..ce658d0 --- /dev/null +++ b/lib/sender.js @@ -0,0 +1,40 @@ +const MODULE_NAME = 'SENDER'; + +const logger = require('tektrans-logger'); + +let bot; + +const init = (botFromCaller) => { + logger.verbose(`${MODULE_NAME} D74B30FF: Sender initialized`); + bot = botFromCaller; +}; +exports.init = init; + +const send = (partner, msg, xid) => { + if (!bot) { + logger.verbose(`${MODULE_NAME} 78B04B3B: Not sending message because bot has not been initialized`, { + xid, + partner, + msg, + }); + + return; + } + + logger.verbose(`${MODULE_NAME} 648A5F17: Sending message`, { + xid, + partner, + msg, + }); + + try { + bot.send(partner, msg); + } catch (e) { + logger.warn(`${MODULE_NAME} C50237D8: Exception on sending message`, { + xid, + eCode: e.code, + eMessage: e.message || e, + }); + } +}; +exports.send = send; diff --git a/lib/transport.js b/lib/transport.js index b3a8453..0c01df3 100644 --- a/lib/transport.js +++ b/lib/transport.js @@ -9,12 +9,15 @@ const uniqid = require('uniqid'); const customPing = require('./custom-ping'); const killOnIdle = require('./kill-on-idle'); +const sender = require('./sender'); let isReady; bot.on('online', (data) => { logger.info(`XMPP transport connected, JID: ${data.jid.user}`); + sender.init(bot); + if (config.custom_ping) { customPing.setBot(bot); } @@ -43,7 +46,7 @@ bot.on('chat', (partner, msg) => { return; } - if (partner === config.username.replace(/\/.*$/, '')) { + if ((partner || '').toLowerCase() === config.username.toLowerCase().replace(/\/.*$/, '')) { return; } @@ -136,11 +139,8 @@ bot.on('error', (err) => { } }); -function send(partner, msg) { - logger.verbose('Sending message via XMPP transport', { - transport: 'xmpp', me: config.username, partner, msg, - }); - bot.send(partner, msg); +function send(partner, msg, xid) { + sender.send(partner, msg, xid); } bot.on('subscribe', (from) => { @@ -150,7 +150,7 @@ bot.on('subscribe', (from) => { }); function ping() { - if (isReady) bot.send(config.username, 'PING!'); + if (isReady) send(config.username, `PING ${uniqid()}`); } function init() { -- 1.9.0