diff --git a/lib/cartodb/cartodb_windshaft.js b/lib/cartodb/cartodb_windshaft.js index 99aae9a6..ec55fb8c 100644 --- a/lib/cartodb/cartodb_windshaft.js +++ b/lib/cartodb/cartodb_windshaft.js @@ -212,49 +212,6 @@ var CartodbWindshaft = function(serverOptions) { ); templateMapsController.register(ws); - // Get a list of owned templates - ws.get(template_baseurl, function(req, res) { - if ( req.profiler && req.profiler.statsd_client ) { - req.profiler.start('windshaft-cartodb.get_template_list'); - } - ws.doCORS(res); - var that = this; - var response = {}; - var cdbuser = ws.userByReq(req); - Step( - function checkPerms(){ - serverOptions.authorizedByAPIKey(req, this); - }, - function listTemplates(err, authenticated) { - if ( err ) throw err; - if (authenticated !== 1) { - err = new Error("Only authenticated user can list templated maps"); - err.http_status = 403; - throw err; - } - templateMaps.listTemplates(cdbuser, this); - }, - function prepareResponse(err, tpl_ids){ - if ( err ) throw err; - // NOTE: might omit "cbduser" if == dbowner ... - var ids = _.map(tpl_ids, function(id) { return cdbuser + '@' + id; }); - return { template_ids: ids }; - }, - function finish(err, response){ - var statusCode = 200; - if (err){ - response = { error: ''+err }; - if ( ! _.isUndefined(err.http_status) ) { - statusCode = err.http_status; - } - ws.sendError(res, response, statusCode, 'GET TEMPLATE LIST', err); - } else { - ws.sendResponse(res, [response, statusCode]); - } - } - ); - }); - ws.setDBParams = function(cdbuser, params, callback) { Step( function setAuth() { diff --git a/lib/cartodb/controllers/template_maps.js b/lib/cartodb/controllers/template_maps.js index 934d6379..67090c3e 100644 --- a/lib/cartodb/controllers/template_maps.js +++ b/lib/cartodb/controllers/template_maps.js @@ -19,6 +19,7 @@ TemplateMapsController.prototype.register = function(app) { 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)); + app.get(this.templateBaseUrl, this.list.bind(this)); }; // Add a template @@ -202,7 +203,7 @@ TemplateMapsController.prototype.destroy = function(req, res) { var tpl_id; Step( function checkPerms(){ - serverOptions.authorizedByAPIKey(req, this); + self.serverOptions.authorizedByAPIKey(req, this); }, function updateTemplate(err, authenticated) { if ( err ) throw err; @@ -242,6 +243,50 @@ TemplateMapsController.prototype.destroy = function(req, res) { ); }; +// Get a list of owned templates +TemplateMapsController.prototype.list = function(req, res) { + var self = this; + + if ( req.profiler && req.profiler.statsd_client ) { + req.profiler.start('windshaft-cartodb.get_template_list'); + } + this.app.doCORS(res); + + var cdbuser = this.app.userByReq(req); + + Step( + function checkPerms(){ + self.serverOptions.authorizedByAPIKey(req, this); + }, + function listTemplates(err, authenticated) { + if ( err ) throw err; + if (authenticated !== 1) { + err = new Error("Only authenticated user can list templated maps"); + err.http_status = 403; + throw err; + } + self.templateMaps.listTemplates(cdbuser, this); + }, + function prepareResponse(err, tpl_ids){ + if ( err ) throw err; + // NOTE: might omit "cbduser" if == dbowner ... + var ids = _.map(tpl_ids, function(id) { return cdbuser + '@' + id; }); + return { template_ids: ids }; + }, + function finish(err, response){ + var statusCode = 200; + if (err){ + response = { error: ''+err }; + if ( ! _.isUndefined(err.http_status) ) { + statusCode = err.http_status; + } + self.app.sendError(res, response, statusCode, 'GET TEMPLATE LIST', err); + } else { + self.app.sendResponse(res, [response, statusCode]); + } + } + ); +}; /** * jsonp endpoint, allows to instantiate a template with a json call.