Add URL to widgets with their endpoints

This commit is contained in:
Raul Ochoa 2015-10-26 14:35:51 +01:00
parent 6d9182aba8
commit 8b222914c5
2 changed files with 38 additions and 1 deletions

View File

@ -306,6 +306,8 @@ MapController.prototype.afterLayergroupCreate = function(req, res, mapconfig, la
layergroup.layergroupid = layergroup.layergroupid + ':' + result.lastUpdatedTime;
layergroup.last_updated = new Date(result.lastUpdatedTime).toISOString();
addWidgetsUrl(username, layergroup);
if (req.method === 'GET') {
var tableCacheEntry = new TablesCacheEntry(dbName, result.affectedTables);
var ttl = global.environment.varnish.layergroupTtl || 86400;
@ -324,3 +326,36 @@ MapController.prototype.afterLayergroupCreate = function(req, res, mapconfig, la
}
);
};
function addWidgetsUrl(username, layergroup) {
// global.environment.serverMetadata
if (layergroup.metadata && Array.isArray(layergroup.metadata.layers)) {
layergroup.metadata.layers = layergroup.metadata.layers.map(function(layer, layerIndex) {
if (layer.widgets) {
Object.keys(layer.widgets).forEach(function(widgetName) {
var resource = layergroup.layergroupid + '/' + layerIndex + '/widget/' + widgetName;
layer.widgets[widgetName].url = getUrls(username, resource);
});
}
return layer;
});
}
}
function getUrls(username, resource) {
var cdnUrl = global.environment.serverMetadata && global.environment.serverMetadata.cdn_url;
if (cdnUrl) {
return {
http: 'http://' + cdnUrl.http + '/' + username + '/api/v1/map' + resource,
https: 'https://' + cdnUrl.https + '/' + username + '/api/v1/map' + resource
};
} else {
var port = global.environment.port;
return {
http: 'http://' + username + '.' + 'localhost.lan:' + port + '/api/v1/map' + resource
};
}
}

View File

@ -71,7 +71,9 @@ describe('lists', function() {
if (err) {
return next(err);
}
return next(null, JSON.parse(res.body).layergroupid);
var parsedBody = JSON.parse(res.body);
assert.ok(parsedBody.metadata.layers[0].widgets.names);
return next(null, parsedBody.layergroupid);
}
);
},