From 3cf8ce9903f2a50cc602511b1eec1f7f948669cc Mon Sep 17 00:00:00 2001 From: Petr Sloup Date: Sat, 20 Aug 2016 10:28:45 +0200 Subject: [PATCH] Add mbtiles_data: "metaprotocol" --- src/serve_data.js | 2 +- src/serve_rendered.js | 16 ++++++++++++---- src/serve_style.js | 8 +++++--- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/serve_data.js b/src/serve_data.js index e7f502a..5a2d236 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -12,7 +12,7 @@ var utils = require('./utils'); module.exports = function(options, repo, params, id) { var app = express().disable('x-powered-by'); - var mbtilesFile = path.join(options.paths.mbtiles, params.mbtiles); + var mbtilesFile = path.resolve(options.paths.mbtiles, params.mbtiles); var tileJSON = { 'tiles': params.domains || options.domains }; diff --git a/src/serve_rendered.js b/src/serve_rendered.js index ef70b97..410d324 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -35,7 +35,7 @@ mbgl.on('message', function(e) { } }); -module.exports = function(options, repo, params, id) { +module.exports = function(options, repo, params, id, dataResolver) { var app = express().disable('x-powered-by'); var lastModified = new Date().toUTCString(); @@ -167,13 +167,21 @@ module.exports = function(options, repo, params, id) { Object.keys(styleJSON.sources).forEach(function(name) { var source = styleJSON.sources[name]; var url = source.url; - if (url.lastIndexOf('mbtiles:', 0) === 0) { + + if (url.lastIndexOf('mbtiles', 0) === 0) { // found mbtiles source, replace with info from local file delete source.url; + var fromData = url.lastIndexOf('mbtiles_data:', 0) === 0; + var mbtilesFile = url.substring( + (fromData ? 'mbtiles_data://' : 'mbtiles://').length); + if (fromData) { + mbtilesFile = dataResolver(mbtilesFile); + } + console.log(mbtilesFile); + queue.push(function(callback) { - var mbtilesFile = url.substring('mbtiles://'.length); - mbtilesFile = path.join(options.paths.mbtiles, mbtilesFile); + mbtilesFile = path.resolve(options.paths.mbtiles, mbtilesFile); var mbtilesFileStats = fs.statSync(mbtilesFile); if (!mbtilesFileStats.isFile() || mbtilesFileStats.size == 0) { throw Error('Not valid MBTiles file: ' + mbtilesFile); diff --git a/src/serve_style.js b/src/serve_style.js index 69ab6a3..c4d265a 100644 --- a/src/serve_style.js +++ b/src/serve_style.js @@ -16,9 +16,11 @@ module.exports = function(options, repo, params, id, reportTiles, reportFont) { Object.keys(styleJSON.sources).forEach(function(name) { var source = styleJSON.sources[name]; var url = source.url; - if (url.lastIndexOf('mbtiles:', 0) === 0) { - var mbtiles = url.substring('mbtiles://'.length); - var identifier = reportTiles(mbtiles); + if (url.lastIndexOf('mbtiles', 0) === 0) { + var fromData = url.lastIndexOf('mbtiles_data:', 0) === 0; + var mbtiles = url.substring( + (fromData ? 'mbtiles_data://' : 'mbtiles://').length); + var identifier = reportTiles(mbtiles, fromData); source.url = 'local://data/' + identifier + '.json'; } });