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 | Phabricator = require '../lib/phabricator'
|
30 | module.exports = (robot) ->
|
31 |
|
32 | robot.phab ?= new Phabricator robot, process.env
|
33 | phab = robot.phab
|
34 |
|
35 |
|
36 |
|
37 | robot.respond /ph(?:ab)? ([^ ]*) set alerts *$/, (msg) ->
|
38 | assigned = msg.match[1]
|
39 | if assigned is 'me'
|
40 | perm = 'phuser'
|
41 | assigned = msg.envelope.user.name
|
42 | else
|
43 | perm = 'phadmin'
|
44 | phab.getPermission(msg.envelope.user, perm)
|
45 | .then ->
|
46 | phab.getUser(msg.envelope.user, { name: assigned })
|
47 | .then (userPhid) ->
|
48 | phab.setAlerts(assigned, userPhid)
|
49 | .then ->
|
50 | if assigned is msg.envelope.user.name
|
51 | msg.send 'Ok, you will now receive private messages when your owned' +
|
52 | ' or subscribed items are modified.'
|
53 | else
|
54 | msg.send "Ok, #{assigned} will now receive private messages when their owned" +
|
55 | ' or subscribed items are modified.'
|
56 | .catch (e) ->
|
57 | msg.send e
|
58 | msg.finish()
|
59 |
|
60 |
|
61 |
|
62 | robot.respond /ph(?:ab)? ([^ ]*) unset alerts *$/, (msg) ->
|
63 | assigned = msg.match[1]
|
64 | if assigned is 'me'
|
65 | perm = 'phuser'
|
66 | assigned = msg.envelope.user.name
|
67 | else
|
68 | perm = 'phadmin'
|
69 | phab.getPermission(msg.envelope.user, perm)
|
70 | .then ->
|
71 | phab.unsetAlerts(assigned)
|
72 | .then ->
|
73 | if assigned is msg.envelope.user.name
|
74 | msg.send 'Ok, you will stop receiving private messages when your owned' +
|
75 | ' or subscribed items are modified.'
|
76 | else
|
77 | msg.send "Ok, #{assigned} will stop receiving private messages when their owned" +
|
78 | ' or subscribed items are modified.'
|
79 | .catch (e) ->
|
80 | msg.send e
|
81 | msg.finish()
|
82 |
|
83 | robot.router.post "/#{robot.name}/phabs/feeds", (req, res) ->
|
84 | if req.body.storyID?
|
85 | phab.getFeed(req.body)
|
86 | .then (announce) ->
|
87 | for room in announce.rooms
|
88 | robot.messageRoom room, announce.message
|
89 | for user in announce.users
|
90 | robot.messageRoom user, announce.message
|
91 | robot.logger.debug "#{req.ip} - ok - #{res.statusCode}"
|
92 | .catch (e) ->
|
93 | robot.logger.debug "#{req.ip} - no - #{res.statusCode} - #{e}"
|
94 | res.status(200).end()
|
95 | else
|
96 | robot.logger.debug "#{req.ip} - no - #{res.statusCode} - no story"
|
97 | res.status(422).end()
|