blob: ca62359b95219f8c981d9dd4bba7e2f133430aa1 [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';
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
});
}
}
});
};
};