1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-11-01 19:07:38 +01:00
unleash.unleash/src/lib/addons/webhook.js

40 lines
990 B
JavaScript
Raw Normal View History

'use strict';
const Mustache = require('mustache');
const Addon = require('./addon');
const definition = require('./webhook-definition');
class Webhook extends Addon {
constructor(args) {
super(definition, args);
}
async handleEvent(event, parameters) {
const { url, bodyTemplate, contentType } = parameters;
const context = {
event,
};
let body;
if (typeof bodyTemplate === 'string' && bodyTemplate.length > 1) {
body = Mustache.render(bodyTemplate, context);
} else {
body = JSON.stringify(event);
}
const requestOpts = {
method: 'POST',
headers: { 'Content-Type': contentType || 'application/json' },
body,
};
const res = await this.fetchRetry(url, requestOpts);
this.logger.info(
`Handled event "${event.type}". Status code: ${res.status}`,
);
}
}
module.exports = Webhook;