Blame view

lib/partner-last-seen.js 1.62 KB
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
1
2
3
4
5
  "use strict";
  
  const REDIS_TTL_SECS = 3600 * 24 * 7;
  
  const config = require('komodo-sdk/config');
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
6
  // const logger = require('komodo-sdk/logger');
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
7
8
9
10
11
12
13
14
15
16
17
18
19
  
  const redis = require('redis');
  const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' });
  
  const _caches = {};
  
  
  function _composeKeyword(partner) {
      return `POCHINKI_PARTNER_LAST_SEEN_${ partner }`;
  }
  
  function get(partnerNumber) {
      return new Promise(function(resolve) {
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
20
          partnerNumber = (partnerNumber || '').replace(/^\+/, '');
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
21
22
23
24
25
26
27
28
          if (!partnerNumber) {
              resolve(null);
          }
          else if (_caches[partnerNumber]) {
              resolve(_caches[partnerNumber]);
          }
          else {
              const keyword = _composeKeyword(partnerNumber);
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
29
              // logger.verbose(`REDIS-DEBUG: GET`, {keyword});
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
              
              redisClient.get(keyword, function(err, reply) {
                  if (err) {
                      resolve(null);
                  }
                  else if (reply) {
                      resolve(Number(reply));
                      _caches[partnerNumber] = Number(reply);
                  }
                  else {
                      resolve(null);
                  }
              })
          }
      })
  }
  
  function set(partnerNumber, modemName) {
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
48
      partnerNumber = (partnerNumber || '').replace(/^\+/, '');
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
49
50
51
52
53
54
55
      if (!partnerNumber || !modemName) {
          return;
      }
  
      _caches[partnerNumber] = modemName;
  
      const keyword = _composeKeyword(partnerNumber);
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
56
      // logger.verbose('REDIS-DEBUG: SET', { keyword })
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
57
58
59
60
61
      redisClient.set(keyword, modemName, 'EX', REDIS_TTL_SECS);
  }
  
  exports.get = get;
  exports.set = set;