const express = require('express') const bodyParser = require('body-parser') const hooks = require('./hooks') console.log('Initialize express server') const app = express() app.use(bodyParser.json()) const port = process.env.SERVER_PORT || 8080 app.post('/webhook', async (req, res) => { const selectedHooks = [] if(req.query['hooks']) { req.query.hooks.split(',').forEach(hookName => { const hook = hooks[hookName.trim()] if(!hook) { console.warn(`Hook ${hookName} does not exist! from=${req.ip}`) return } selectedHooks.push(hook) }) }else { selectedHooks.push(...Object.values(hooks)) } const errors = {} const promises = selectedHooks.map(async hook => { console.log(`Execute hook ${hook.name} from=${req.ip}`) const error = await hook.exec(req) if(error) { errors[hook.name] = error } }) await Promise.all(promises) if(Object.keys(errors).length) { res.status(400).json(errors) return } res.status(200).send() }) app.listen(port) console.log(`Started express server on port ${port}`)