blob: 330b4f1e21462cafd9317dbf5f57ce09a1a4eca6 [file] [log] [blame]
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';
logger.info(method);
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(':');
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 = JSON.parse(body);
res.status(response.statusCode).json({
message: errorMsg,
error: info.error
});
}
}
});
};
};