Commit dcbdd261df3fddc30515a19c7c17be5489215791
1 parent
f0b4793fef
Exists in
master
Create sender module
Showing 3 changed files with 55 additions and 11 deletions Side-by-side Diff
lib/custom-ping.js
... | ... | @@ -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 () => { |
94 | 98 | }); |
95 | 99 | } |
96 | 100 | |
97 | - bot.send(partner, msg); | |
101 | + sender.send(partner, msg, xid); | |
98 | 102 | } |
99 | 103 | } |
100 | 104 | } |
lib/sender.js
... | ... | @@ -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; |
lib/transport.js
... | ... | @@ -9,12 +9,15 @@ const uniqid = require('uniqid'); |
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('chat', (partner, msg) => { |
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('error', (err) => { |
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('subscribe', (from) => { |
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() { |