diff --git a/lib/cartodb/cartodb_windshaft.js b/lib/cartodb/cartodb_windshaft.js index 229f088b..99aae9a6 100644 --- a/lib/cartodb/cartodb_windshaft.js +++ b/lib/cartodb/cartodb_windshaft.js @@ -212,59 +212,6 @@ var CartodbWindshaft = function(serverOptions) { ); templateMapsController.register(ws); - // Delete a specific template - ws.del(template_baseurl + '/:template_id', function(req, res) { - if ( req.profiler && req.profiler.statsd_client ) { - req.profiler.start('windshaft-cartodb.delete_template'); - } - ws.doCORS(res); - var that = this; - var response = {}; - var cdbuser = ws.userByReq(req); - var template; - var tpl_id; - Step( - function checkPerms(){ - serverOptions.authorizedByAPIKey(req, this); - }, - function updateTemplate(err, authenticated) { - if ( err ) throw err; - if (authenticated !== 1) { - err = new Error("Only authenticated users can delete template maps"); - err.http_status = 403; - throw err; - } - tpl_id = req.params.template_id.split('@'); - if ( tpl_id.length > 1 ) { - if ( tpl_id[0] != cdbuser ) { - var err = new Error("Cannot find template id '" - + req.params.template_id + "' for user '" + cdbuser + "'"); - err.http_status = 404; - throw err; - } - tpl_id = tpl_id[1]; - } - templateMaps.delTemplate(cdbuser, tpl_id, this); - }, - function prepareResponse(err, tpl_val){ - if ( err ) throw err; - return { status: 'ok' }; - }, - function finish(err, response){ - if (err){ - var statusCode = 400; - response = { error: ''+err }; - if ( ! _.isUndefined(err.http_status) ) { - statusCode = err.http_status; - } - ws.sendError(res, response, statusCode, 'DELETE TEMPLATE', err); - } else { - ws.sendResponse(res, ['', 204]); - } - } - ); - }); - // Get a list of owned templates ws.get(template_baseurl, function(req, res) { if ( req.profiler && req.profiler.statsd_client ) { diff --git a/lib/cartodb/controllers/template_maps.js b/lib/cartodb/controllers/template_maps.js index ea90446f..934d6379 100644 --- a/lib/cartodb/controllers/template_maps.js +++ b/lib/cartodb/controllers/template_maps.js @@ -18,7 +18,7 @@ TemplateMapsController.prototype.register = function(app) { app.post(this.templateBaseUrl, this.create.bind(this)); app.put(this.templateBaseUrl + '/:template_id', this.update.bind(this)); app.get(this.templateBaseUrl + '/:template_id', this.retrieve.bind(this)); - + app.del(this.templateBaseUrl + '/:template_id', this.destroy.bind(this)); }; // Add a template @@ -188,6 +188,61 @@ TemplateMapsController.prototype.retrieve = function(req, res) { ); }; +// Delete a specific template +TemplateMapsController.prototype.destroy = function(req, res) { + var self = this; + + if ( req.profiler && req.profiler.statsd_client ) { + req.profiler.start('windshaft-cartodb.delete_template'); + } + this.app.doCORS(res); + + var cdbuser = this.app.userByReq(req); + var template; + var tpl_id; + Step( + function checkPerms(){ + serverOptions.authorizedByAPIKey(req, this); + }, + function updateTemplate(err, authenticated) { + if ( err ) throw err; + if (authenticated !== 1) { + err = new Error("Only authenticated users can delete template maps"); + err.http_status = 403; + throw err; + } + tpl_id = req.params.template_id.split('@'); + if ( tpl_id.length > 1 ) { + if ( tpl_id[0] != cdbuser ) { + var err = new Error("Cannot find template id '" + + req.params.template_id + "' for user '" + cdbuser + "'"); + err.http_status = 404; + throw err; + } + tpl_id = tpl_id[1]; + } + self.templateMaps.delTemplate(cdbuser, tpl_id, this); + }, + function prepareResponse(err, tpl_val){ + if ( err ) throw err; + return { status: 'ok' }; + }, + function finish(err, response){ + if (err){ + var statusCode = 400; + response = { error: ''+err }; + if ( ! _.isUndefined(err.http_status) ) { + statusCode = err.http_status; + } + self.app.sendError(res, response, statusCode, 'DELETE TEMPLATE', err); + } else { + self.app.sendResponse(res, ['', 204]); + } + } + ); +}; + + /** * jsonp endpoint, allows to instantiate a template with a json call. * callback query argument is mandatory