-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.coffee
More file actions
64 lines (54 loc) · 1.56 KB
/
server.coffee
File metadata and controls
64 lines (54 loc) · 1.56 KB
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
express = require 'express'
util = require 'util'
co = require 'co'
Promise = require 'bluebird'
bodyparser = require 'body-parser'
config = require 'config'
https = require 'https'
querystring = require 'querystring'
URL = require 'url'
https_post = (url, params) ->
postData = JSON.stringify(params)
url = URL.parse(url)
new Promise (rs, rj) ->
response = ""
options =
hostname: url.hostname
path: url.path
method: "POST"
headers:
"Content-Type": "application/json"
req = https.request options, (res) ->
res.setEncoding("utf8")
res.on "data", (d) ->
response += d
res.on "end", ->
rs response
req.on "error", (e) -> rj e
req.write postData
req.end()
app = express()
app.use bodyparser.urlencoded(extended: true)
app.use bodyparser.json()
app.post "/github_notification", (req, res) ->
co ->
change_pages = req.body.pages
author = req.body.sender
change_pages.forEach (change_page) ->
message = "<#{change_page.html_url}|#{change_page.title}> #{change_page.action}"
username = author.login
usericon = author.avatar_url
parameters =
text: message
username: username
icon_url: usericon
console.log JSON.stringify(parameters, null, 2)
response = yield https_post config.slack_webhook, parameters
console.log response
res.send 200
.catch (err) ->
console.error err
res.status(500).send(err.message)
port = process.env.PORT || 9000
server = app.listen parseInt(port), ->
console.log "app listening.."