-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
65 lines (59 loc) · 1.63 KB
/
index.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
60
61
62
63
64
65
"use strict"
var request = require('request');
class Slack {
constructor(context, team, token) {
this.context = context;
if ( ! team || ! token ) { return this.error('undefined slack env'); }
this.team = team;
this.token = token;
this.api_base = `https://${team}.slack.com/api`;
}
getInfo() {
const params = {
url: this.api_base + '/users.list',
qs: {
token: this.token,
presence: 1,
},
};
request.get(params, (err, response, body) => {
if ( err ) { return this.error(err); }
var info = {};
var users = JSON.parse(body).members.filter((user) => ( ! user.is_bot && ! user.deleted ));
info.total = users.length;
info.online = users.filter((user) => ( user.presence === 'active' )).length;
this.context.succeed(info);
});
}
invite(email) {
if ( ! email ) { this.errpr('undefined email'); }
const params = {
url: this.api_base + '/users.admin.invite',
form: {
email: email,
token: this.token,
set_active: true,
},
};
request.post(params, (err, response, body) => {
if ( err ) { return this.error(err); }
this.context.succeed( JSON.parse(body) );
});
}
error(message) {
return this.context.fail( new Error(message) );
}
}
exports.handler = function(event, context) {
var slack = new Slack(context, event.slack_team, event.slack_token);
switch ( event.action ) {
case 'info':
slack.getInfo();
break;
case 'invite':
slack.invite(event.email);
break;
default:
return context.fail( new Error('undefined action') );
}
};