-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathslack-invite-server.js
59 lines (52 loc) · 1.39 KB
/
slack-invite-server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Meteor.setInterval(function() {
try {
HTTP.get('https://slack.com/api/rtm.start', {params: {
token: Meteor.settings.slackToken
}}, function(err, res) {
if (!err && res.data && res.data.users) {
var users = res.data.users;
var total = users.length;
var active = _.filter(users, function(user) {
return 'active' == user.presence;
}).length;
var data = {
_id: 'slack',
online: active,
registered: total
};
// Extend data with team info.
_.extend(data, _.pick(res.data.team, 'name', 'domain'));
// Upsert data in Mongo.
Slack.upsert({_id: 'slack'}, data);
}
});
} catch(e) {
console.log(e);
}
}, 30000);
Meteor.publish('slack', function() {
return Slack.find({_id:'slack'});
});
Meteor.methods({
invite: function(email) {
if (!this.isSimulation && Slack.find().count() === 1) {
var domain = Slack.findOne().domain;
if (domain) {
var url = "https://" + domain + ".slack.com/api/users.admin.invite";
var data = {
email: email,
token: Meteor.settings.slackToken,
set_active: true
};
try {
var data = HTTP.call("POST", url, {
params: data
}).data;
} catch(e) {
console.log(e);
}
return data;
}
}
}
});