From 11099c88dc759d75da15a66d9c7858b4d4fa50ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 4 Apr 2018 20:00:59 +0200 Subject: [PATCH] Improve routing via regular expressions --- lib/cartodb/controllers/layergroup/tile.js | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/lib/cartodb/controllers/layergroup/tile.js b/lib/cartodb/controllers/layergroup/tile.js index 17c35377..4008afa4 100644 --- a/lib/cartodb/controllers/layergroup/tile.js +++ b/lib/cartodb/controllers/layergroup/tile.js @@ -41,10 +41,11 @@ module.exports = class TileLayergroupController { } register (mapRouter) { - const number = (param) => `${param}(-?\\d+)`; + const number = () => `(-?\\d+)`; + const not = (val) => `(?!${val})([^\/]+?)`; mapRouter.get( - `/:token/:${number('z')}/:${number('x')}/:${number('y')}@:${number('scale_factor')}?x.:format`, + `/:token/:z${number()}/:x${number()}/:y${number()}@:scale_factor${number()}?x.:format`, layergroupToken(), credentials(), authorize(this.authApi), @@ -69,7 +70,7 @@ module.exports = class TileLayergroupController { ); mapRouter.get( - `/:token/:${number('z')}/:${number('x')}/:${number('y')}.:format`, + `/:token/:z${number()}/:x${number()}/:y${number()}.:format`, layergroupToken(), credentials(), authorize(this.authApi), @@ -94,8 +95,7 @@ module.exports = class TileLayergroupController { ); mapRouter.get( - `/:token/:layer/:${number('z')}/:${number('x')}/:${number('y')}.(:format)`, - distinguishLayergroupFromStaticRoute(), + `/:token${not('static')}/:layer/:z${number()}/:x${number()}/:y${number()}.(:format)`, layergroupToken(), credentials(), authorize(this.authApi), @@ -121,16 +121,6 @@ module.exports = class TileLayergroupController { } }; -function distinguishLayergroupFromStaticRoute () { - return function distinguishLayergroupFromStaticRouteMiddleware(req, res, next) { - if (req.params.token === 'static') { - return next('route'); - } - - next(); - }; -} - function parseFormat (format = '') { const prettyFormat = format.replace('.', '_'); return SUPPORTED_FORMATS[prettyFormat] ? prettyFormat : 'invalid';