forked from artillery/github-wiki-slack-notifier
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
72 lines (60 loc) · 1.96 KB
/
server.js
File metadata and controls
72 lines (60 loc) · 1.96 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
65
66
67
68
69
70
71
72
/*
Copyright (c) 2015 Artillery Games, Inc. All rights reserved.
This source code is licensed under the MIT-style license found in the
LICENSE file in the root directory of this source tree.
*/
var Slack, createHandler, getenv, handler, http, options, server, slack;
Slack = require('node-slack');
http = require('http');
cfenv = require('cfenv');
createHandler = require('github-webhook-handler');
// Load environment vars from .env if local
var appEnv = cfenv.getAppEnv();
if (appEnv.isLocal)
require('dotenv').load();
slack = new Slack(process.env.SLACK_WEBHOOK_URL);
handler = createHandler({
path: '/webhook',
secret: process.env.GITHUB_WEBHOOK_SECRET
});
server = http.createServer(function(req, res) {
return handler(req, res, function(err) {
res.statusCode = 404;
return res.end('nothing to see here, move along');
});
});
server.listen(appEnv.port, function() {
var ref = server.address(),
address = ref.address,
family = ref.family,
port = ref.port;
return console.log("Listening on " + address + ":" + port + " via " + family);
});
handler.on('error', function(err) {
return console.error("WebHook handler error:", err);
});
handler.on('gollum', function(event) {
var p, page;
p = event.payload;
var multPages = (p.pages.length > 1) ? "s" : "";
var text = "<" + p.repository.html_url + "/wiki|[" + p.repository.name + " wiki]> " +
p.pages.length + " update" + multPages + " by " + p.sender.login + ":";
var attachmentText = "";
for (var i=0; i < p.pages.length; i++) {
page = p.pages[i];
attachmentText += "<" + page.html_url + "/" + page.sha + "|" + page.page_name + "> " + page.action;
attachmentText += (i !== p.pages.length - 1) ? "\n" : "";
}
var attachment = [
{
"pretext": "`" + p.pages[0].sha.substr(0,6) + "`",
"text": attachmentText,
"color": "#5aaafa",
"mrkdwn_in": ["pretext"]
}
];
return slack.send({
text: text,
attachments: attachment
});
});