Create and use getNamedMapProvider middleware

This commit is contained in:
Daniel García Aubert
2017-12-29 19:31:02 +01:00
parent 79233471c6
commit ef5ea5b4cb
2 changed files with 29 additions and 36 deletions
+24 -31
View File
@@ -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) {