From ef5ea5b4cbc2713afa3fb39f58c2bfb58ced9364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Fri, 29 Dec 2017 19:31:02 +0100 Subject: [PATCH] Create and use getNamedMapProvider middleware --- lib/cartodb/controllers/named_maps.js | 55 ++++++++++++--------------- yarn.lock | 10 ++--- 2 files changed, 29 insertions(+), 36 deletions(-) diff --git a/lib/cartodb/controllers/named_maps.js b/lib/cartodb/controllers/named_maps.js index cd2d120f..6486379c 100644 --- a/lib/cartodb/controllers/named_maps.js +++ b/lib/cartodb/controllers/named_maps.js @@ -27,6 +27,7 @@ NamedMapsController.prototype.register = function(app) { cors(), userMiddleware, this.prepareContext, + this.getNamedMapProvider(), this.tile.bind(this), vectorError() ); @@ -37,10 +38,29 @@ NamedMapsController.prototype.register = function(app) { userMiddleware, allowQueryParams(['layer', 'zoom', 'lon', 'lat', 'bbox']), this.prepareContext, + this.getNamedMapProvider(), this.staticMap.bind(this) ); }; +NamedMapsController.prototype.getNamedMapProvider = function () { + return function getNamedMapProviderMiddleware (req, res, next) { + const { user } = res.locals; + const { config, auth_token } = req.query; + const { template_id } = req.params; + + this.namedMapProviderCache.get(user, template_id, config, auth_token, res.locals, (err, namedMapProvider) => { + if (err) { + return next(err); + } + + res.locals.namedMapProvider = namedMapProvider; + + next(); + }); + }.bind(this); +}; + 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'); @@ -83,23 +103,10 @@ NamedMapsController.prototype.sendResponse = function(req, res, body, headers, n NamedMapsController.prototype.tile = function(req, res, next) { var self = this; - var cdbUser = res.locals.user; + const { namedMapProvider } = res.locals; - var namedMapProvider; step( - function getNamedMapProvider() { - self.namedMapProviderCache.get( - cdbUser, - req.params.template_id, - req.query.config, - req.query.auth_token, - res.locals, - this - ); - }, - function getTile(err, _namedMapProvider) { - assert.ifError(err); - namedMapProvider = _namedMapProvider; + function getTile() { self.tileBackend.getTile(namedMapProvider, req.params, this); }, function handleImage(err, tile, headers, stats) { @@ -126,23 +133,9 @@ NamedMapsController.prototype.staticMap = function(req, res, next) { res.locals.format = 'png'; res.locals.layer = res.locals.layer || 'all'; - var namedMapProvider; + const { namedMapProvider } = res.locals; step( - function getNamedMapProvider() { - self.namedMapProviderCache.get( - cdbUser, - req.params.template_id, - req.query.config, - req.query.auth_token, - res.locals, - this - ); - }, - function prepareLayerVisibility(err, _namedMapProvider) { - assert.ifError(err); - - namedMapProvider = _namedMapProvider; - + function prepareLayerVisibility() { self.prepareLayerFilterFromPreviewLayers(cdbUser, req, res.locals, namedMapProvider, this); }, function prepareImageOptions(err) { diff --git a/yarn.lock b/yarn.lock index 26e59383..d689972f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"abaculus@github:cartodb/abaculus#2.0.3-cdb1": +abaculus@cartodb/abaculus#2.0.3-cdb1: version "2.0.3-cdb1" resolved "https://codeload.github.com/cartodb/abaculus/tar.gz/f5f34e1c80cdd8d49edd1d6fe3b2220ab2e23aaf" dependencies: @@ -226,7 +226,7 @@ camshaft@0.60.0: dot "^1.0.3" request "^2.69.0" -"canvas@github:cartodb/node-canvas#1.6.2-cdb2": +canvas@cartodb/node-canvas#1.6.2-cdb2: version "1.6.2-cdb2" resolved "https://codeload.github.com/cartodb/node-canvas/tar.gz/8acf04557005c633f9e68524488a2657c04f3766" dependencies: @@ -252,7 +252,7 @@ carto@CartoDB/carto#0.15.1-cdb1: optimist "~0.6.0" underscore "~1.6.0" -"carto@github:cartodb/carto#0.15.1-cdb3": +carto@cartodb/carto#0.15.1-cdb3: version "0.15.1-cdb3" resolved "https://codeload.github.com/cartodb/carto/tar.gz/945f5efb74fd1af1f5e1f69f409f9567f94fb5a7" dependencies: @@ -2223,7 +2223,7 @@ through@2: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -"tilelive-bridge@github:cartodb/tilelive-bridge#2.3.1-cdb4": +tilelive-bridge@cartodb/tilelive-bridge#2.3.1-cdb4: version "2.3.1-cdb4" resolved "https://codeload.github.com/cartodb/tilelive-bridge/tar.gz/faa2b638da2d119b78281575d40255cb523f6ca6" dependencies: @@ -2231,7 +2231,7 @@ through@2: mapnik-pool "~0.1.3" sphericalmercator "1.0.x" -"tilelive-mapnik@github:cartodb/tilelive-mapnik#0.6.18-cdb3": +tilelive-mapnik@cartodb/tilelive-mapnik#0.6.18-cdb3: version "0.6.18-cdb3" resolved "https://codeload.github.com/cartodb/tilelive-mapnik/tar.gz/23bd1c31dd57d0b76c86b9f1eaf62462b3c17d01" dependencies: