Revert "Drop /map_metadata API entry point"

This reverts commit b37b07a06a1dd3cf05d60f4aa613ab5c48b90700.

This was too light of a decision...
This commit is contained in:
Sandro Santilli 2013-12-16 17:17:55 +01:00
parent 9c897a91a9
commit 7b7408dab7
5 changed files with 97 additions and 5 deletions

View File

@ -2,7 +2,6 @@
------------------- -------------------
* Update cartodb-redis dependency to "~0.2.0" * Update cartodb-redis dependency to "~0.2.0"
* Drop /map_metadata API entry point (#101)
1.5.2 -- 2013-12-05 1.5.2 -- 2013-12-05
------------------- -------------------

View File

@ -3,15 +3,16 @@ Windshaft-CartoDB
[![Build Status](https://travis-ci.org/CartoDB/Windshaft-cartodb.png)](http://travis-ci.org/CartoDB/Windshaft-cartodb) [![Build Status](https://travis-ci.org/CartoDB/Windshaft-cartodb.png)](http://travis-ci.org/CartoDB/Windshaft-cartodb)
This is the CartoDB 2.0+ map tiler. It extends Windshaft with some extra This is the CartoDB map tiler. It extends Windshaft with some extra
functionality and custom filters for authentication functionality and custom filters for authentication
* reads dbname from hostname and cartodb redis for pretty tile urls * reads dbname from subdomain and cartodb redis for pretty tile urls
* configures windshaft to publish ``cartodb_id`` as the interactivity layer * configures windshaft to publish ``cartodb_id`` as the interactivity layer
* gets the default geometry type from the cartodb redis store * gets the default geometry type from the cartodb redis store
* allows tiles to be styled individually
* provides a link to varnish high speed cache * provides a link to varnish high speed cache
* provides a infowindow endpoint for windshaft * provides a infowindow endpoint for windshaft
* provides support for template signed maps * provides a ``map_metadata`` endpoint for windshaft
Requirements Requirements
------------ ------------
@ -25,7 +26,7 @@ Requirements
[for cache control] [for cache control]
- CartoDB-SQL-API 1.0.0+ - CartoDB-SQL-API 1.0.0+
- CartoDB 2.0.0+ - CartoDB 0.9.5+ (for ``CDB_QueryTables``)
- Varnish (https://www.varnish-cache.org) - Varnish (https://www.varnish-cache.org)
Configure Configure

View File

@ -55,6 +55,26 @@ var CartodbWindshaft = function(serverOptions) {
}); });
/**
* Helper to allow access to metadata to be used in embedded maps.
*/
ws.get(serverOptions.base_url + '/map_metadata', function(req, res){
ws.doCORS(res);
Step(
function(){
serverOptions.getMapMetadata(req, this);
},
function(err, data){
if (err){
ws.sendError(res, {error: err.message}, 500, 'GET MAP_METADATA');
//res.send(err.message, 500);
} else {
res.send({map_metadata: data}, 200);
}
}
);
});
/** /**
* Helper API to allow per table tile cache (and sql cache) to be invalidated remotely. * Helper API to allow per table tile cache (and sql cache) to be invalidated remotely.
* TODO: Move? * TODO: Move?

View File

@ -550,6 +550,25 @@ module.exports = function(){
); );
}; };
/**
* Little helper method to get map metadata and return to client
* @param req
* @param callback
*/
me.getMapMetadata = function(req, callback){
var that = this;
Step(
function(){
that.req2params(req, this);
},
function(err, data){
if (err) callback(err, null);
else cartoData.getMapMetadata(data, callback);
}
);
};
/** /**
* Helper to clear out tile cache on request * Helper to clear out tile cache on request
* @param req * @param req

View File

@ -1196,6 +1196,59 @@ suite('server', function() {
}); });
}); });
/////////////////////////////////////////////////////////////////////////////////
//
// GET METADATA
//
/////////////////////////////////////////////////////////////////////////////////
test("does not provide metadata of private table to unauthenticated requests", function(done){
assert.response(server, {
headers: {host: 'localhost'},
url: '/tiles/test_table_private_1/map_metadata',
method: 'GET'
},{}, function(res) {
// FIXME: should be 401 instead
assert.equal(res.statusCode, 500, res.statusCode + ': ' + res.body);
done();
});
});
test("does provide metadata of private table to authenticated requests", function(done){
assert.response(server, {
headers: {host: 'localhost'},
url: '/tiles/test_table_private_1/map_metadata?map_key=1234',
method: 'GET'
},{}, function(res) {
assert.equal(res.statusCode, 200, res.statusCode + ': ' + res.body);
done();
});
});
test("does provide metadata of public table to unauthenticated requests", function(done){
assert.response(server, {
headers: {host: 'localhost'},
url: '/tiles/gadm4/map_metadata',
method: 'GET'
},{}, function(res) {
assert.equal(res.statusCode, 200, res.statusCode + ': ' + res.body);
// TODO: show metadata ?
done();
});
});
test("does provide metadata of public table to authenticated requests", function(done){
assert.response(server, {
headers: {host: 'localhost'},
url: '/tiles/gadm4/map_metadata?map_key=1234',
method: 'GET'
},{}, function(res) {
assert.equal(res.statusCode, 200, res.statusCode + ': ' + res.body);
// TODO: show metadata ?
done();
});
});
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
// //
// DELETE CACHE // DELETE CACHE