From fcea0c9b83cd5f818613bd13ceae09139a29da32 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Tue, 20 Jan 2015 16:58:12 +0100 Subject: [PATCH] Move template creation to controller --- lib/cartodb/cartodb_windshaft.js | 46 ---------------------- lib/cartodb/controllers/template_maps.js | 49 ++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 46 deletions(-) diff --git a/lib/cartodb/cartodb_windshaft.js b/lib/cartodb/cartodb_windshaft.js index 2ea3efbb..b8063748 100644 --- a/lib/cartodb/cartodb_windshaft.js +++ b/lib/cartodb/cartodb_windshaft.js @@ -212,52 +212,6 @@ var CartodbWindshaft = function(serverOptions) { ); templateMapsController.register(ws); - // Add a template - ws.post(template_baseurl, function(req, res) { - ws.doCORS(res); - var that = this; - var response = {}; - var cdbuser = ws.userByReq(req); - Step( - function checkPerms(){ - serverOptions.authorizedByAPIKey(req, this); - }, - function addTemplate(err, authenticated) { - if ( err ) throw err; - if (authenticated !== 1) { - err = new Error("Only authenticated user can create templated maps"); - err.http_status = 403; - throw err; - } - var next = this; - if ( ! req.headers['content-type'] || req.headers['content-type'].split(';')[0] != 'application/json' ) - throw new Error('template POST data must be of type application/json'); - var cfg = req.body; - templateMaps.addTemplate(cdbuser, cfg, this); - }, - function prepareResponse(err, tpl_id){ - if ( err ) throw err; - // NOTE: might omit "cdbuser" if == dbowner ... - return { template_id: cdbuser + '@' + tpl_id }; - }, - function finish(err, response){ - if ( req.profiler ) { - res.header('X-Tiler-Profiler', req.profiler.toJSONString()); - } - if (err){ - response = { error: ''+err }; - var statusCode = 400; - if ( ! _.isUndefined(err.http_status) ) { - statusCode = err.http_status; - } - ws.sendError(res, response, statusCode, 'POST TEMPLATE', err); - } else { - ws.sendResponse(res, [response, 200]); - } - } - ); - }); - // Update a template ws.put(template_baseurl + '/:template_id', function(req, res) { ws.doCORS(res); diff --git a/lib/cartodb/controllers/template_maps.js b/lib/cartodb/controllers/template_maps.js index 661fd2a9..937bcc3e 100644 --- a/lib/cartodb/controllers/template_maps.js +++ b/lib/cartodb/controllers/template_maps.js @@ -14,6 +14,55 @@ module.exports = TemplateMapsController; TemplateMapsController.prototype.register = function(app) { app.get(this.templateBaseUrl + '/:template_id/jsonp', this.jsonp.bind(this)); + app.post(this.templateBaseUrl, this.create.bind(this)); + +}; + +// Add a template +TemplateMapsController.prototype.create = function(req, res) { + var self = this; + + this.app.doCORS(res); + + var cdbuser = self.app.userByReq(req); + + Step( + function checkPerms(){ + serverOptions.authorizedByAPIKey(req, this); + }, + function addTemplate(err, authenticated) { + if ( err ) throw err; + if (authenticated !== 1) { + err = new Error("Only authenticated user can create templated maps"); + err.http_status = 403; + throw err; + } + if ( ! req.headers['content-type'] || req.headers['content-type'].split(';')[0] != 'application/json' ) + throw new Error('template POST data must be of type application/json'); + var cfg = req.body; + self.templateMaps.addTemplate(cdbuser, cfg, this); + }, + function prepareResponse(err, tpl_id){ + if ( err ) throw err; + // NOTE: might omit "cdbuser" if == dbowner ... + return { template_id: cdbuser + '@' + tpl_id }; + }, + function finish(err, response){ + if ( req.profiler ) { + res.header('X-Tiler-Profiler', req.profiler.toJSONString()); + } + if (err){ + response = { error: ''+err }; + var statusCode = 400; + if ( ! _.isUndefined(err.http_status) ) { + statusCode = err.http_status; + } + self.app.sendError(res, response, statusCode, 'POST TEMPLATE', err); + } else { + self.app.sendResponse(res, [response, 200]); + } + } + ); }; /**