-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
57 lines (51 loc) · 1.32 KB
/
server.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
var express = require('express')
var app = express()
var bodyParser = require('body-parser')
var config = require(process.argv[2])
var Hook = require('./lib/coding')
var async = require('async')
var logger = require('express-req-logger')
var repository = config.repository || []
var hooks = repository.map(function (item) {
return new Hook(item)
})
app.use(logger())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}))
app.post('/', function (req, res, next) {
var eventType = getHeaders(req.headers, 'x-coding-event') || req.body.event
var body = req.body
var data = {
https_url: body.repository ? body.repository.https_url : '',
ssh_url: body.repository ? body.repository.ssh_url : '',
ref: body.ref || '',
token: body.token || ''
}
if (eventType === 'push') {
async.map(hooks, function (item, next) {
item.pull(data, next)
}, function (err, result) {
if (err) {
return res.status(500).send(err)
}
console.log(result.join(''))
res.end()
})
} else {
res.end()
}
})
var getHeaders = function (headers, name) {
var reg = new RegExp(name, 'i')
for (var key in headers) {
if (reg.test(key)) {
return headers[key]
}
}
}
var port = config.port || 4000
app.listen(port, () => {
console.log('server start at ' + port)
})