Add profiler calls in template instanciation endpoint

This commit is contained in:
Sandro Santilli
2014-02-15 08:06:57 +01:00
parent cd3f8dcf89
commit 8f3c6c3c87
+24 -3
View File
@@ -165,6 +165,10 @@ var CartodbWindshaft = function(serverOptions) {
return { template_id: cdbuser + '@' + tpl_id };
},
function finish(err, response){
if ( req.profiler ) {
var report = req.profiler.toString();
res.header('X-Tiler-Profiler', report);
}
if (err){
response = { error: ''+err };
var statusCode = 400;
@@ -218,6 +222,10 @@ var CartodbWindshaft = function(serverOptions) {
return { template_id: cdbuser + '@' + tpl_id };
},
function finish(err, response){
if ( req.profiler ) {
var report = req.profiler.toString();
res.header('X-Tiler-Profiler', report);
}
if (err){
var statusCode = 400;
response = { error: ''+err };
@@ -403,6 +411,7 @@ var CartodbWindshaft = function(serverOptions) {
// Instantiate a template
function instanciateTemplate(req, res, template_params, callback) {
ws.doCORS(res);
if ( req.profiler ) req.profiler.done('cors');
var that = this;
var response = {};
var template;
@@ -423,6 +432,7 @@ var CartodbWindshaft = function(serverOptions) {
templateMaps.getTemplate(cdbuser, tpl_id, this);
},
function checkAuthorized(err, data) {
if ( req.profiler ) req.profiler.done('getTemplate');
if ( err ) throw err;
if ( ! data ) {
err = new Error("Template '" + tpl_id + "' of user '" + cdbuser + "' not found");
@@ -449,24 +459,29 @@ var CartodbWindshaft = function(serverOptions) {
throw new Error('template POST data must be of type application/json, it is instead ');
}*/
//var template_params = req.body;
if ( req.profiler ) req.profiler.done('authorizedByCert');
return templateMaps.instance(template, template_params);
},
function prepareParams(err, instance){
if ( req.profiler ) req.profiler.done('TemplateMaps_instance');
if ( err ) throw err;
layergroup = instance;
fakereq = { query: {}, params: {}, headers: _.clone(req.headers) };
ws.setDBParams(cdbuser, fakereq.params, this);
},
function setApiKey(err){
if ( req.profiler ) req.profiler.done('setDBParams');
if ( err ) throw err;
cartoData.getUserMapKey(cdbuser, this);
},
function createLayergroup(err, val) {
if ( req.profiler ) req.profiler.done('getUserMapKey');
if ( err ) throw err;
fakereq.params.api_key = val;
ws.createLayergroup(layergroup, fakereq, this);
},
function signLayergroup(err, resp) {
if ( req.profiler ) req.profiler.done('createLayergroup');
if ( err ) throw err;
response = resp;
var signer = cdbuser;
@@ -484,10 +499,12 @@ var CartodbWindshaft = function(serverOptions) {
signedMaps.signMap(signer, map_id, crt_id, this);
},
function prepareResponse(err) {
if ( req.profiler ) req.profiler.done('signMap');
if ( err ) throw err;
//console.log("Response from createLayergroup: "); console.dir(response);
// Add the signature part to the token!
var tplhash = templateMaps.fingerPrint(template).substring(0,8);
if ( req.profiler ) req.profiler.done('fingerPrint');
response.layergroupid = cdbuser + '@' + tplhash + '@' + response.layergroupid;
return response;
},
@@ -495,7 +512,11 @@ var CartodbWindshaft = function(serverOptions) {
);
}
function finish_instanciation(err, response, res) {
function finish_instanciation(err, response, res, req) {
if ( req.profiler ) {
var report = req.profiler.toString();
res.header('X-Tiler-Profiler', report);
}
if (err) {
var statusCode = 400;
response = { error: ''+err };
@@ -519,7 +540,7 @@ var CartodbWindshaft = function(serverOptions) {
}
instanciateTemplate(req, res, req.body, this);
}, function(err, response) {
finish_instanciation(err, response, res);
finish_instanciation(err, response, res, req);
}
);
});
@@ -544,7 +565,7 @@ var CartodbWindshaft = function(serverOptions) {
}
instanciateTemplate(req, res, config, this);
}, function(err, response) {
finish_instanciation(err, response, res);
finish_instanciation(err, response, res, req);
}
);
});