| var request = require('request'); |
| |
| module.exports = function(logger, utils) { |
| |
| // Test Endpoint |
| this.endPoint = '/cloudanttriggers/:id'; |
| |
| // Delete Logic |
| this.delete = function (req, res) { |
| |
| var method = 'DELETE /cloudanttriggers'; |
| |
| var id = req.params.id; |
| var args = typeof req.body === 'object' ? req.body : JSON.parse(req.body); |
| |
| //Check that user has access rights to delete a trigger |
| var triggerObj = utils.parseQName(id); |
| var host = 'https://' + utils.routerHost +':'+ 443; |
| var triggerURL = host + '/api/v1/namespaces/' + triggerObj.namespace + '/triggers/' + triggerObj.name; |
| var auth = args.apikey.split(':'); |
| |
| logger.info(method, 'Checking if user has access rights to delete trigger', id); |
| request({ |
| method: 'get', |
| url: triggerURL, |
| auth: { |
| user: auth[0], |
| pass: auth[1] |
| } |
| }, function(error, response, body) { |
| //delete from database if user is authenticated (200) or if trigger has already been deleted (404) |
| if (!error && (response.statusCode === 200 || response.statusCode === 404)) { |
| utils.deleteTriggerFromDB(id, res); |
| } |
| else { |
| var errorMsg = 'Cloudant data trigger ' + id + ' cannot be deleted.'; |
| logger.error(method, errorMsg, error); |
| if (error) { |
| res.status(400).json({ |
| message: errorMsg, |
| error: error.message |
| }); |
| } |
| else { |
| var info; |
| try { |
| info = JSON.parse(body); |
| } |
| catch (e) { |
| info = 'Authentication request failed with status code ' + response.statusCode; |
| } |
| res.status(response.statusCode).json({ |
| message: errorMsg, |
| error: typeof info === 'object' ? info.error : info |
| }); |
| } |
| } |
| }); |
| }; |
| |
| }; |