diff --git a/lib/cartodb/controllers/analyses.js b/lib/cartodb/controllers/analyses.js index 7aabc11b..ffc0bea1 100644 --- a/lib/cartodb/controllers/analyses.js +++ b/lib/cartodb/controllers/analyses.js @@ -3,21 +3,13 @@ var assert = require('assert'); var dot = require('dot'); dot.templateSettings.strip = false; var PSQL = require('cartodb-psql'); - -var util = require('util'); -var BaseController = require('./base'); - var cors = require('../middleware/cors'); var userMiddleware = require('../middleware/user'); - function AnalysesController(prepareContext) { - BaseController.call(this); this.prepareContext = prepareContext; } -util.inherits(AnalysesController, BaseController); - module.exports = AnalysesController; AnalysesController.prototype.register = function(app) { @@ -30,9 +22,16 @@ AnalysesController.prototype.register = function(app) { ); }; -AnalysesController.prototype.sendResponse = function(req, res, resource) { +AnalysesController.prototype.sendResponse = function(req, res, body) { res.set('Cache-Control', 'public,max-age=10,must-revalidate'); - this.send(req, res, resource, 200); + + res.status(200); + + if (req.query && req.query.callback) { + res.jsonp(body); + } else { + res.json(body); + } }; AnalysesController.prototype.catalog = function (req, res, next) { diff --git a/lib/cartodb/controllers/base.js b/lib/cartodb/controllers/base.js deleted file mode 100644 index b9c6ac1e..00000000 --- a/lib/cartodb/controllers/base.js +++ /dev/null @@ -1,22 +0,0 @@ -function BaseController() { -} - -module.exports = BaseController; - -BaseController.prototype.send = function(req, res, body, status, headers) { - if (headers) { - res.set(headers); - } - - res.status(status); - - if (!Buffer.isBuffer(body) && typeof body === 'object') { - if (req.query && req.query.callback) { - res.jsonp(body); - } else { - res.json(body); - } - } else { - res.send(body); - } -}; diff --git a/lib/cartodb/controllers/layergroup.js b/lib/cartodb/controllers/layergroup.js index c5e4c53a..dc6f85ff 100644 --- a/lib/cartodb/controllers/layergroup.js +++ b/lib/cartodb/controllers/layergroup.js @@ -1,9 +1,6 @@ var assert = require('assert'); var step = require('step'); -var util = require('util'); -var BaseController = require('./base'); - var cors = require('../middleware/cors'); var userMiddleware = require('../middleware/user'); var allowQueryParams = require('../middleware/allow-query-params'); @@ -30,8 +27,6 @@ var QueryTables = require('cartodb-query-tables'); */ function LayergroupController(prepareContext, pgConnection, mapStore, tileBackend, previewBackend, attributesBackend, surrogateKeysCache, userLimitsApi, layergroupAffectedTables, analysisBackend) { - BaseController.call(this); - this.pgConnection = pgConnection; this.mapStore = mapStore; this.tileBackend = tileBackend; @@ -47,8 +42,6 @@ function LayergroupController(prepareContext, pgConnection, mapStore, tileBacken this.prepareContext = prepareContext; } -util.inherits(LayergroupController, BaseController); - module.exports = LayergroupController; LayergroupController.prototype.register = function(app) { @@ -422,7 +415,22 @@ LayergroupController.prototype.sendResponse = function(req, res, body, status, h res.set('X-Cache-Channel', affectedTables.getCacheChannel()); self.surrogateKeysCache.tag(res, affectedTables); } - self.send(req, res, body, status, headers); + + if (headers) { + res.set(headers); + } + + res.status(status); + + if (!Buffer.isBuffer(body) && typeof body === 'object') { + if (req.query && req.query.callback) { + res.jsonp(body); + } else { + res.json(body); + } + } else { + res.send(body); + } } ); diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index f2e86d13..d1f67813 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -6,9 +6,6 @@ var QueryTables = require('cartodb-query-tables'); var ResourceLocator = require('../models/resource-locator'); -var util = require('util'); -var BaseController = require('./base'); - var cors = require('../middleware/cors'); var userMiddleware = require('../middleware/user'); @@ -36,9 +33,6 @@ var CreateLayergroupMapConfigProvider = require('../models/mapconfig/provider/cr function MapController(prepareContext, pgConnection, templateMaps, mapBackend, metadataBackend, surrogateKeysCache, userLimitsApi, layergroupAffectedTables, mapConfigAdapter, statsBackend) { - - BaseController.call(this); - this.pgConnection = pgConnection; this.templateMaps = templateMaps; this.mapBackend = mapBackend; @@ -54,11 +48,8 @@ function MapController(prepareContext, pgConnection, templateMaps, mapBackend, m this.prepareContext = prepareContext; } -util.inherits(MapController, BaseController); - module.exports = MapController; - MapController.prototype.register = function(app) { app.get( app.base_url_mapconfig, @@ -181,7 +172,7 @@ MapController.prototype.create = function(req, res, prepareConfigFn, next) { var datasource = context.datasource || Datasource.EmptyDatasource(); mapConfig = new MapConfig(requestMapConfig, datasource); self.mapBackend.createLayergroup( - mapConfig, + mapConfig, res.locals, new CreateLayergroupMapConfigProvider(mapConfig, res.locals.user, self.userLimitsApi, res.locals), this @@ -294,7 +285,13 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn res.set('X-Layergroup-Id', layergroup.layergroupid); self.surrogateKeysCache.tag(res, new NamedMapsCacheEntry(cdbuser, mapConfigProvider.getTemplateName())); - self.send(req, res, layergroup, 200); + res.status(200); + + if (req.query && req.query.callback) { + res.jsonp(layergroup); + } else { + res.json(layergroup); + } } } ); diff --git a/lib/cartodb/controllers/named_maps.js b/lib/cartodb/controllers/named_maps.js index 759ae4b6..55790bbf 100644 --- a/lib/cartodb/controllers/named_maps.js +++ b/lib/cartodb/controllers/named_maps.js @@ -3,17 +3,12 @@ var assert = require('assert'); var _ = require('underscore'); var NamedMapsCacheEntry = require('../cache/model/named_maps_entry'); -var util = require('util'); -var BaseController = require('./base'); - var cors = require('../middleware/cors'); var userMiddleware = require('../middleware/user'); var allowQueryParams = require('../middleware/allow-query-params'); function NamedMapsController(prepareContext, namedMapProviderCache, tileBackend, previewBackend, surrogateKeysCache, tablesExtentApi, metadataBackend) { - BaseController.call(this); - this.namedMapProviderCache = namedMapProviderCache; this.tileBackend = tileBackend; this.previewBackend = previewBackend; @@ -23,8 +18,6 @@ function NamedMapsController(prepareContext, namedMapProviderCache, tileBackend, this.prepareContext = prepareContext; } -util.inherits(NamedMapsController, BaseController); - module.exports = NamedMapsController; NamedMapsController.prototype.register = function(app) { @@ -46,7 +39,7 @@ NamedMapsController.prototype.register = function(app) { ); }; -NamedMapsController.prototype.sendResponse = function(req, res, resource, headers, namedMapProvider) { +NamedMapsController.prototype.sendResponse = function(req, res, body, headers, namedMapProvider) { this.surrogateKeysCache.tag(res, new NamedMapsCacheEntry(res.locals.user, namedMapProvider.getTemplateName())); res.set('Content-Type', headers['content-type'] || headers['Content-Type'] || 'image/png'); res.set('Cache-Control', 'public,max-age=7200,must-revalidate'); @@ -79,7 +72,8 @@ NamedMapsController.prototype.sendResponse = function(req, res, resource, header self.surrogateKeysCache.tag(res, result); } } - self.send(req, res, resource, 200); + res.status(200); + res.send(body); } ); }; @@ -143,7 +137,7 @@ NamedMapsController.prototype.staticMap = function(req, res, next) { assert.ifError(err); namedMapProvider = _namedMapProvider; - + self.prepareLayerFilterFromPreviewLayers(cdbUser, req, res.locals, namedMapProvider, this); }, function prepareImageOptions(err) { @@ -192,10 +186,10 @@ NamedMapsController.prototype.staticMap = function(req, res, next) { }; NamedMapsController.prototype.prepareLayerFilterFromPreviewLayers = function ( - user, - req, - params, - namedMapProvider, + user, + req, + params, + namedMapProvider, callback ) { var self = this; diff --git a/lib/cartodb/controllers/named_maps_admin.js b/lib/cartodb/controllers/named_maps_admin.js index ae57ada3..0f54ddf3 100644 --- a/lib/cartodb/controllers/named_maps_admin.js +++ b/lib/cartodb/controllers/named_maps_admin.js @@ -2,9 +2,6 @@ var step = require('step'); var assert = require('assert'); var templateName = require('../backends/template_maps').templateName; -var util = require('util'); -var BaseController = require('./base'); - var cors = require('../middleware/cors'); var userMiddleware = require('../middleware/user'); @@ -16,14 +13,10 @@ var userMiddleware = require('../middleware/user'); * @constructor */ function NamedMapsAdminController(authApi, templateMaps) { - BaseController.call(this); - this.authApi = authApi; this.templateMaps = templateMaps; } -util.inherits(NamedMapsAdminController, BaseController); - module.exports = NamedMapsAdminController; NamedMapsAdminController.prototype.register = function (app) { @@ -206,12 +199,18 @@ NamedMapsAdminController.prototype.list = function(req, res, next) { }; function finishFn(controller, req, res, description, status, next) { - return function finish(err, response){ + return function finish(err, body){ if (err) { err.label = description; next(err); } else { - controller.send(req, res, response, status || 200); + res.status(status || 200); + + if (req.query && req.query.callback) { + res.jsonp(body); + } else { + res.json(body); + } } }; }