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) } }, }