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
|
var api = require('./api')
var apis = {}
var xpress = {
get: () => { this.match('get', arguments) },
post: () => { this.match('post', arguments) },
put: () => { this.match('put', arguments) },
delete: () => { this.match('delete', arguments) },
match: (type, args) => {
var uri = args[0]
var cbs = args.slice(1)
apis[type] = apis[type] || {}
apis[type][uri] = cbs
},
}
var router = module.exports = {
get: (uri) => { router.match('get', uri) },
put: (uri) => { router.match('put', uri) },
post: (uri) => { router.match('post', uri) },
delete: (uri) => { router.match('delete', uri) },
match: (type, uri) => {
return (req, res, next) => {
var fns = apis[type][uri]
req.isAuthenticated = () => true
res.json = (data) => { next && next(data) }
var promises = fns.map(fn => {
return new Promise((resolve, reject) => {
newRes = { ...res }
fn(req, newRes, () => {
res = newRes
resolve(req, res)
})
})
})
return Promise.all(promises)
}
},
}
|