TripleParity/docks-api

View on GitHub
routes/webhook.js

Summary

Maintainability
A
0 mins
Test Coverage
const express = require('express');
let router = new express.Router();
let DockerEventWatcher = require('../lib/docker_event_watcher');
let Webhook = require('../lib/docker_webhook');

/* eslint-disable */ 
let dockerEventWatcher = new DockerEventWatcher();
let handler = dockerEventWatcher.dockerEventHandler;
dockerEventWatcher.start();
/* eslint-enable */
let Webhooks = dockerEventWatcher.forward_to;

router.post('/', async (req, res, next) => {
  if (!req.body.hasOwnProperty('url') || req.body['url'] === '') {
    res.status(500).send({message: 'Required parameter missing'});
    return;
  }

  if (!req.body.hasOwnProperty('types') || req.body['types'] === '') {
    res.status(500).send({message: 'Required parameter missing'});
    return;
  }

  if (!req.body.hasOwnProperty('name') || req.body['name'] === '') {
    res.status(500).send({message: 'Required parameter missing'});
    return;
  }

  let wh = new Webhook(req.body['name'], req.body['url'],
    req.body['types'], handler);

  if (req.body.hasOwnProperty('slack') || req.body['slack'] === true) {
    wh.modify = (json) => {
      return {text: JSON.stringify(json)};
    };
  }

  if (req.body.hasOwnProperty('modifier')) {
    wh.modify = eval(Buffer.from(req.body['modifier'], 'base64').toString());
  }

  wh.init();

  Webhooks.push(wh);

  res.status(200).send({message: 'Webhook created!'});
});
/**
 * Deletes a webhook
 * @param {string} path
 * @param {any} ()
 */
router.delete('/', async (req, res, next) => {
  let name = req.params.name;

  let j = 0;
  let se = false;

  Webhooks.forEach((webhook) => {
    if (webhook.name === name) {
      Webhooks.splice(j, 1);
      res.status(200).send({message: 'Webhook deleted!'});
      se = true;
    }
    j++;
  });

  if (!se) {
    res.status(400).send({message: 'Webhook not found!'});
  }
});

module.exports = router;