UNPKG

2.27 kBJavaScriptView Raw
1/* eslint-disable max-len */
2const request = require('request');
3const authorisify = require('../../../lib/authorisify');
4const config = require('../../../config/config.json');
5
6const LINC_API_SITES_ENDPOINT = `${config.Api.LincBaseEndpoint}/sites`;
7
8/**
9 * Create webhook by calling appropriate API endpoint
10 * @param siteName
11 * @param serviceName
12 * @param body
13 */
14const createWebhook = (siteName, serviceName, body) => (jwtToken) => new Promise((resolve, reject) => {
15 const options = {
16 url: `${LINC_API_SITES_ENDPOINT}/${siteName}/hooks/${serviceName}`,
17 headers: {
18 'Content-Type': 'application/json',
19 Authorization: `X-Bearer ${jwtToken}`,
20 },
21 body: JSON.stringify(body),
22 };
23 return request.post(options, (err, response, _body) => {
24 if (err) return reject(err);
25
26 const json = JSON.parse(_body);
27 if (json.error) return reject(new Error(json.error));
28 if (response.statusCode !== 200) {
29 return reject(new Error(`Error ${response.statusCode}: ${response.statusMessage}`));
30 }
31
32 return resolve(json);
33 });
34});
35
36/**
37 * Delete webhook in backend
38 * @param siteName
39 * @param serviceName
40 */
41const deleteWebhook = (siteName, serviceName) => (jwtToken) => new Promise((resolve, reject) => {
42 const options = {
43 url: `${LINC_API_SITES_ENDPOINT}/${siteName}/hooks/${serviceName}`,
44 headers: {
45 Authorization: `X-Bearer ${jwtToken}`,
46 },
47 };
48 return request.delete(options, (err, response, body) => {
49 if (err) return reject(err);
50
51 const json = JSON.parse(body);
52 if (json.error) return reject(new Error(json.error));
53 if (response.statusCode !== 200) {
54 return reject(new Error(`Error ${response.statusCode}: ${response.statusMessage}`));
55 }
56
57 return resolve(json);
58 });
59});
60
61/**
62 * Create webhook
63 * @param siteName
64 * @param serviceName
65 * @param body
66 */
67module.exports.createWebhook = (siteName, serviceName, body) => authorisify(createWebhook(siteName, serviceName, body));
68
69/**
70 * Delete webhook
71 * @param siteName
72 * @param serviceName
73 */
74module.exports.deleteWebhook = (siteName, serviceName) => authorisify(deleteWebhook(siteName, serviceName));