Improved error handling

This commit is contained in:
Petr Sloup 2016-03-02 17:12:32 +01:00
parent 40a7ee5e62
commit 75e5fd1018

View file

@ -71,7 +71,7 @@ module.exports = function(maps, options, prefix) {
y = parts[5].split('.')[0] | 0; y = parts[5].split('.')[0] | 0;
source.getTile(z, x, y, function(err, data, headers) { source.getTile(z, x, y, function(err, data, headers) {
if (err) { if (err) {
//console.log('MBTiles error, serving empty'); //console.log('MBTiles error, serving empty', err);
callback(null, { data: new Buffer(0) }); callback(null, { data: new Buffer(0) });
} else { } else {
var response = {}; var response = {};
@ -95,25 +95,27 @@ module.exports = function(maps, options, prefix) {
gzip: true gzip: true
}, function(err, res, body) { }, function(err, res, body) {
if (err) { if (err) {
callback(err); //console.log('HTTP tile error', err);
callback(null, { data: new Buffer(0) });
} else if (res.statusCode == 200) { } else if (res.statusCode == 200) {
var response = {}; var response = {};
if (res.headers.modified) { if (res.headers.modified) {
response.modified = new Date(res.headers.modified); response.modified = new Date(res.headers.modified);
} }
if (res.headers.expires) { if (res.headers.expires) {
response.expires = new Date(res.headers.expires); response.expires = new Date(res.headers.expires);
} }
if (res.headers.etag) { if (res.headers.etag) {
response.etag = res.headers.etag; response.etag = res.headers.etag;
} }
response.data = body; response.data = body;
callback(null, response); callback(null, response);
} else { } else {
callback(new Error(JSON.parse(body).message)); //console.log('HTTP error', JSON.parse(body).message);
callback(null, { data: new Buffer(0) });
} }
}); });
} }
@ -303,6 +305,7 @@ module.exports = function(maps, options, prefix) {
bbox: areaParams.bbox, bbox: areaParams.bbox,
center: areaParams.center, center: areaParams.center,
format: format, format: format,
limit: 4097,
getTile: function(z, x, y, callback) { getTile: function(z, x, y, callback) {
return getTile(z, x, y, scale, format, function(err, data, headers) { return getTile(z, x, y, scale, format, function(err, data, headers) {
if (!err && data == null) { if (!err && data == null) {
@ -313,14 +316,22 @@ module.exports = function(maps, options, prefix) {
}); });
} }
}; };
return abaculus(params, function(err, data, headers) { try {
if (err && !err.status) { return abaculus(params, function(err, data, headers) {
return next(err); if (err && !err.status) {
} return next(err);
res.set(headers); }
res.status((err && err.status) || 200); if (headers) {
return res.send((err && err.message) || data); headers['Content-Type'] = 'image/' + format;
}); res.set(headers);
}
res.status((err && err.status) || 200);
return res.send((err && err.message) || data);
});
} catch (e) {
res.status(400);
return res.send(e.message);
}
}; };
var staticPattern = var staticPattern =