| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- const Slack = require('./slack.js').Slack
- ,MultiChatManager = require('./multichatManager.js').MultiChatManager
- ,INACTIVE_DELAY = 120000
- ,PING_DELAY = 600000
- ,RTM_PING_DELAY = 15000
- ;
- function SlackManager() {
- this.cache = require('memory-cache');
- }
- var instance = new SlackManager();
- setInterval(function() {
- var keys = instance.cache.keys();
- keys.forEach(function(instKey) {
- if (!instance.cache.get(instKey))
- instance.cache.del(instKey);
- else
- instance.cache.get(instKey).ping();
- });
- }, PING_DELAY);
- setInterval(function() {
- var keys = instance.cache.keys(),
- now = Date.now();
- keys.forEach(function(instKey) {
- var inst = instance.cache.get(instKey);
- if (inst && inst.data.cleanTyping(now))
- MultiChatManager.onCtxUpdated(inst);
- });
- }, 1000);
- SlackManager.prototype.getAuthScope = function() {
- return [
- "identity.basic",
- "identity.email"
- ];
- };
- setInterval(function() {
- var keys = instance.cache.keys();
- keys.forEach(function(instKey) {
- let instVal = instance.cache.get(instKey);
- instVal && instVal.rtmPing();
- });
- }, RTM_PING_DELAY);
- SlackManager.prototype.getScope = function() {
- return [
- "client"
- ];
- };
- SlackManager.prototype.lazyGet = function(servId, slackToken, reqT) {
- var key = "SLACK_" +servId,
- val = this.cache.get(key);
- if (val) {
- this.cache.put(key, val, INACTIVE_DELAY, function(key, val) {
- instance.removed(key, val);
- });
- } else {
- val = new Slack(slackToken, this);
- this.cache.put(key, val, INACTIVE_DELAY, function(key, val) {
- instance.removed(key, val);
- val.close();
- });
- }
- return val;
- };
- SlackManager.prototype.removed = function(key, slack) {
- slack.close();
- };
- SlackManager.prototype.suicide = function(slack) {
- this.cache.del("SLACK_" +slack.sessId);
- };
- module.exports.SlackManager = instance;
|