forked from github/hubot-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sendgrid.coffee
71 lines (57 loc) · 1.94 KB
/
sendgrid.coffee
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
66
67
68
69
70
71
# Basic SendGrid statistics.
#
# Set HUBOT_SENDGRID_USER to your SendGrid username (the same as you use to log in to sendgrid.com)
# Set HUBOT_SENDGRID_KEY to your SendGrid password (the same as you use to log in to sendgrid.com)
#
# sendgrid total - total sendgrid usage for the account
# sendgrid today - Total usage for today
# sendgrid c[ategory] <category> - Today's usage for the given category
env = process.env
module.exports = (robot) ->
if env.HUBOT_SENDGRID_USER and env.HUBOT_SENDGRID_KEY
robot.respond /(sendgrid)( me)? today/i, (msg) ->
opts =
days: 0
query msg, opts, (json) ->
msg.send formatResponse(json[0])
robot.respond /(sendgrid)( me)? total/i, (msg) ->
opts =
aggregate: 1
query msg, opts, (json) ->
msg.send formatResponse(json)
robot.respond /(sendgrid)( me)? c(ategory)? (.*)/i, (msg) ->
category = msg.match[4]
msg.send "Category: #{category}"
opts =
days: 0
category: [category]
query msg, opts, (json) ->
msg.send formatResponse(json[0])
query = (msg, opts, callback) ->
opts.api_user = env.HUBOT_SENDGRID_USER
opts.api_key = env.HUBOT_SENDGRID_KEY
msg.http("https://sendgrid.com/api/stats.get.json")
.query(opts)
.get() (err, res, body) ->
callback JSON.parse(body)
stats =
requests: 'Requests'
delivered: 'Delivered'
bounces: 'Bounces'
repeat_bounces: 'Repeat Bounces'
invalid_email: 'Invalid Emails'
opens: 'Opens'
unique_opens: 'Unique Opens'
clicks: 'Clicks'
unique_clicks: 'Unique Clicks'
unsubscribes: 'Unsubscribes'
repeat_unsubscribes: 'Repeat Unsubscribes'
blocked: 'Blocked'
spam_drop: 'Spam Drop'
spamreports: 'Spam Reports'
repeat_spamreports: 'Repeat Spam Reports'
formatResponse = (json) =>
details = for stat, description of stats
" #{description}: #{json[stat]}"
details.unshift "Stats for #{json.date}:"
details.join("\n")