37 lines
992 B
JavaScript
37 lines
992 B
JavaScript
const router = require('express').Router();
|
|
const { Webhook } = require('../models/webhook');
|
|
const crypto = require('crypto');
|
|
|
|
// GET /api/webhooks
|
|
router.get('/', async (req, res, next) => {
|
|
try {
|
|
const hooks = await Webhook.list();
|
|
res.json({ results: hooks });
|
|
} catch (err) { next(err); }
|
|
});
|
|
|
|
// POST /api/webhooks
|
|
router.post('/', async (req, res, next) => {
|
|
try {
|
|
const { name, url, events, secret } = req.body;
|
|
const hook = await Webhook.create({
|
|
id: crypto.randomUUID(),
|
|
name, url, events, secret,
|
|
created_on: Math.floor(Date.now() / 1000)
|
|
});
|
|
res.json({ results: hook });
|
|
} catch (err) { next(err); }
|
|
});
|
|
|
|
// DELETE /api/webhooks/:id
|
|
router.delete('/:id', async (req, res, next) => {
|
|
try {
|
|
const hook = await Webhook.get(req.params.id);
|
|
if (!hook) return res.status(404).json({ error: 'Not found' });
|
|
await hook.delete();
|
|
res.json({ success: true });
|
|
} catch (err) { next(err); }
|
|
});
|
|
|
|
module.exports = router;
|