Middlewarify dataview endpoint

This commit is contained in:
Daniel García Aubert
2018-03-05 17:44:04 +01:00
parent 39bd6694f2
commit 5e43a7145a
+23 -22
View File
@@ -124,7 +124,8 @@ LayergroupController.prototype.register = function(app) {
userMiddleware,
allowQueryParams(allowedDataviewQueryParams),
this.prepareContext,
this.dataview.bind(this)
this.getMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi),
this.getDataview()
);
app.get(
@@ -133,7 +134,8 @@ LayergroupController.prototype.register = function(app) {
userMiddleware,
allowQueryParams(allowedDataviewQueryParams),
this.prepareContext,
this.dataview.bind(this)
this.getMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi),
this.getDataview()
);
app.get(
@@ -186,32 +188,31 @@ LayergroupController.prototype.analysisNodeStatus = function(req, res, next) {
);
};
LayergroupController.prototype.dataview = function(req, res, next) {
var self = this;
LayergroupController.prototype.getMapStoreMapConfigProvider = function (mapStore, userLimitsApi) {
return function getMapStoreMapConfigProviderMiddleware (req, res, next) {
const { user } = res.locals;
step(
function retrieveDataview() {
var mapConfigProvider = new MapStoreMapConfigProvider(
self.mapStore, res.locals.user, self.userLimitsApi, res.locals
);
self.dataviewBackend.getDataview(
mapConfigProvider,
res.locals.user,
res.locals,
this
);
},
function finish(err, dataview, stats) {
res.locals.mapConfigProvider = new MapStoreMapConfigProvider(mapStore, user, userLimitsApi, res.locals);
next();
};
};
LayergroupController.prototype.getDataview = function () {
return function getDataviewMiddleware (req, res, next) {
const { user, mapConfigProvider } = res.locals;
this.dataviewBackend.getDataview(mapConfigProvider, user, res.locals, (err, dataview, stats) => {
req.profiler.add(stats || {});
if (err) {
err.label = 'GET DATAVIEW';
next(err);
} else {
self.sendResponse(req, res, dataview, 200);
return next(err);
}
}
);
this.sendResponse(req, res, dataview, 200);
});
}.bind(this);
};
LayergroupController.prototype.dataviewSearch = function(req, res, next) {