DockerERTFF/lib/setup/webhooks.js

22 lines
804 B
JavaScript

const fs = require('fs-extra');
module.exports = function(app) {
app.all('/webhooks/:name', (req, res, next) => {
const name = req.params.name;
if (!/^[a-zA-Z0-9-_]+$/.test(name)) {
res.status(400).json({error: `Invalid webhook name.`});
} else if (fs.existsSync(`lib/webhooks/${name}.js`)) {
const webhook = require(`../webhooks/${name}`);
if (webhook.handler) {
webhook.handler(req, res, next);
} else {
res.status(400).json({error: `Webhook ${name} has no handler.`});
}
} else {
const webhook = require('../core/webhook');
const handler = webhook.createHandler(name);
handler(req, res, next);
}
});
};