From b40c8e66246d603e74ec97b45471e19d5c444f77 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Tue, 20 Jan 2015 17:17:06 +0100 Subject: [PATCH] Retrieve template moved to controller --- lib/cartodb/cartodb_windshaft.js | 61 ---------------------- lib/cartodb/controllers/template_maps.js | 64 ++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 61 deletions(-) diff --git a/lib/cartodb/cartodb_windshaft.js b/lib/cartodb/cartodb_windshaft.js index 92746067..229f088b 100644 --- a/lib/cartodb/cartodb_windshaft.js +++ b/lib/cartodb/cartodb_windshaft.js @@ -212,67 +212,6 @@ var CartodbWindshaft = function(serverOptions) { ); templateMapsController.register(ws); - // Get a specific template - ws.get(template_baseurl + '/:template_id', function(req, res) { - if ( req.profiler && req.profiler.statsd_client ) { - req.profiler.start('windshaft-cartodb.get_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 get 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 get template id '" - + req.params.template_id + "' for user '" + cdbuser + "'"); - err.http_status = 404; - throw err; - } - tpl_id = tpl_id[1]; - } - templateMaps.getTemplate(cdbuser, tpl_id, this); - }, - function prepareResponse(err, tpl_val){ - if ( err ) throw err; - if ( ! tpl_val ) { - err = new Error("Cannot find template '" + tpl_id + "' of user '" + cdbuser + "'"); - err.http_status = 404; - throw err; - } - // auth_id was added by ourselves, - // so we remove it before returning to the user - delete tpl_val.auth_id; - return { template: tpl_val }; - }, - 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, 'GET TEMPLATE', err); - } else { - ws.sendResponse(res, [response, 200]); - } - } - ); - }); - // Delete a specific template ws.del(template_baseurl + '/:template_id', 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 27b70be7..ea90446f 100644 --- a/lib/cartodb/controllers/template_maps.js +++ b/lib/cartodb/controllers/template_maps.js @@ -17,6 +17,7 @@ TemplateMapsController.prototype.register = function(app) { app.get(this.templateBaseUrl + '/:template_id/jsonp', this.jsonp.bind(this)); 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)); }; @@ -124,6 +125,69 @@ TemplateMapsController.prototype.update = function(req, res) { ); }; +// Get a specific template +TemplateMapsController.prototype.retrieve = function(req, res) { + var self = this; + + if ( req.profiler && req.profiler.statsd_client ) { + req.profiler.start('windshaft-cartodb.get_template'); + } + + this.app.doCORS(res); + + var cdbuser = this.app.userByReq(req); + var template; + var tpl_id; + Step( + function checkPerms(){ + self.serverOptions.authorizedByAPIKey(req, this); + }, + function updateTemplate(err, authenticated) { + if ( err ) throw err; + if (authenticated !== 1) { + err = new Error("Only authenticated users can get 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 get template id '" + + req.params.template_id + "' for user '" + cdbuser + "'"); + err.http_status = 404; + throw err; + } + tpl_id = tpl_id[1]; + } + self.templateMaps.getTemplate(cdbuser, tpl_id, this); + }, + function prepareResponse(err, tpl_val){ + if ( err ) throw err; + if ( ! tpl_val ) { + err = new Error("Cannot find template '" + tpl_id + "' of user '" + cdbuser + "'"); + err.http_status = 404; + throw err; + } + // auth_id was added by ourselves, + // so we remove it before returning to the user + delete tpl_val.auth_id; + return { template: tpl_val }; + }, + 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, 'GET TEMPLATE', err); + } else { + self.app.sendResponse(res, [response, 200]); + } + } + ); +}; + /** * jsonp endpoint, allows to instantiate a template with a json call. * callback query argument is mandatory