Commit dcbdd261df3fddc30515a19c7c17be5489215791

Authored by Adhidarma Hadiwinoto
1 parent f0b4793fef
Exists in master

Create sender module

Showing 3 changed files with 55 additions and 11 deletions Side-by-side Diff

... ... @@ -4,6 +4,8 @@ const uniqid = require('uniqid');
4 4 const config = require('komodo-sdk/config');
5 5 const logger = require('tektrans-logger');
6 6  
  7 +const sender = require('./sender');
  8 +
7 9 let bot;
8 10  
9 11 const allowedFromPartnerList = (
... ... @@ -56,7 +58,7 @@ const sendPong = (xid, partner, pingMessage) => {
56 58 });
57 59 }
58 60  
59   - bot.send(partner.trim(), pongMessage);
  61 + sender.send(partner.trim(), pongMessage);
60 62 };
61 63 exports.sendPong = sendPong;
62 64  
... ... @@ -72,7 +74,7 @@ const pingSender = async () => {
72 74 if (bot) {
73 75 const msg = `PING ${xid}`;
74 76  
75   - bot.send(config.username, msg);
  77 + sender.send(config.username, msg);
76 78  
77 79 if (
78 80 config.custom_ping
... ... @@ -81,8 +83,10 @@ const pingSender = async () => {
81 83 ) {
82 84 const partnerCount = config.custom_ping.send_to.length;
83 85 for (let i = 0; i < partnerCount; i += 1) {
  86 + const additionalDelay = Math.random() * 1000;
  87 +
84 88 // eslint-disable-next-line no-await-in-loop
85   - await sleepMs(1000);
  89 + await sleepMs(1000 + additionalDelay);
86 90  
87 91 const partner = config.custom_ping.send_to[i];
88 92  
... ... @@ -94,7 +98,7 @@ const pingSender = async () =&gt; {
94 98 });
95 99 }
96 100  
97   - bot.send(partner, msg);
  101 + sender.send(partner, msg, xid);
98 102 }
99 103 }
100 104 }
... ... @@ -0,0 +1,40 @@
  1 +const MODULE_NAME = 'SENDER';
  2 +
  3 +const logger = require('tektrans-logger');
  4 +
  5 +let bot;
  6 +
  7 +const init = (botFromCaller) => {
  8 + logger.verbose(`${MODULE_NAME} D74B30FF: Sender initialized`);
  9 + bot = botFromCaller;
  10 +};
  11 +exports.init = init;
  12 +
  13 +const send = (partner, msg, xid) => {
  14 + if (!bot) {
  15 + logger.verbose(`${MODULE_NAME} 78B04B3B: Not sending message because bot has not been initialized`, {
  16 + xid,
  17 + partner,
  18 + msg,
  19 + });
  20 +
  21 + return;
  22 + }
  23 +
  24 + logger.verbose(`${MODULE_NAME} 648A5F17: Sending message`, {
  25 + xid,
  26 + partner,
  27 + msg,
  28 + });
  29 +
  30 + try {
  31 + bot.send(partner, msg);
  32 + } catch (e) {
  33 + logger.warn(`${MODULE_NAME} C50237D8: Exception on sending message`, {
  34 + xid,
  35 + eCode: e.code,
  36 + eMessage: e.message || e,
  37 + });
  38 + }
  39 +};
  40 +exports.send = send;
... ... @@ -9,12 +9,15 @@ const uniqid = require(&#39;uniqid&#39;);
9 9  
10 10 const customPing = require('./custom-ping');
11 11 const killOnIdle = require('./kill-on-idle');
  12 +const sender = require('./sender');
12 13  
13 14 let isReady;
14 15  
15 16 bot.on('online', (data) => {
16 17 logger.info(`XMPP transport connected, JID: ${data.jid.user}`);
17 18  
  19 + sender.init(bot);
  20 +
18 21 if (config.custom_ping) {
19 22 customPing.setBot(bot);
20 23 }
... ... @@ -43,7 +46,7 @@ bot.on(&#39;chat&#39;, (partner, msg) =&gt; {
43 46 return;
44 47 }
45 48  
46   - if (partner === config.username.replace(/\/.*$/, '')) {
  49 + if ((partner || '').toLowerCase() === config.username.toLowerCase().replace(/\/.*$/, '')) {
47 50 return;
48 51 }
49 52  
... ... @@ -136,11 +139,8 @@ bot.on(&#39;error&#39;, (err) =&gt; {
136 139 }
137 140 });
138 141  
139   -function send(partner, msg) {
140   - logger.verbose('Sending message via XMPP transport', {
141   - transport: 'xmpp', me: config.username, partner, msg,
142   - });
143   - bot.send(partner, msg);
  142 +function send(partner, msg, xid) {
  143 + sender.send(partner, msg, xid);
144 144 }
145 145  
146 146 bot.on('subscribe', (from) => {
... ... @@ -150,7 +150,7 @@ bot.on(&#39;subscribe&#39;, (from) =&gt; {
150 150 });
151 151  
152 152 function ping() {
153   - if (isReady) bot.send(config.username, 'PING!');
  153 + if (isReady) send(config.username, `PING ${uniqid()}`);
154 154 }
155 155  
156 156 function init() {