From 3bfc7d3d23f5da8d2c9646acd794c04f6f7a7b2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Fri, 6 Apr 2018 13:53:50 +0200 Subject: [PATCH 01/19] Rename controllers folder by routers --- lib/cartodb/{controllers => routers}/analyses.js | 0 lib/cartodb/{controllers => routers}/api-router.js | 0 lib/cartodb/{controllers => routers}/layergroup/analysis.js | 0 lib/cartodb/{controllers => routers}/layergroup/attributes.js | 0 lib/cartodb/{controllers => routers}/layergroup/dataview.js | 0 .../layergroup/middlewares/map-store-map-config-provider.js | 0 lib/cartodb/{controllers => routers}/layergroup/preview.js | 0 lib/cartodb/{controllers => routers}/layergroup/tile.js | 0 lib/cartodb/{controllers => routers}/map-router.js | 0 lib/cartodb/{controllers => routers}/map/anonymous.js | 0 .../map/middlewares/augment-layergroup-data.js | 0 .../map/middlewares/check-json-content-type.js | 0 .../map/middlewares/increment-map-view-count.js | 0 .../{controllers => routers}/map/middlewares/init-profiler.js | 0 .../map/middlewares/last-updated-time-layergroup.js | 0 .../{controllers => routers}/map/middlewares/layer-stats.js | 0 .../map/middlewares/layergroup-id-header.js | 0 .../map/middlewares/layergroup-metadata.js | 0 .../{controllers => routers}/map/middlewares/map-error.js | 0 lib/cartodb/{controllers => routers}/map/named.js | 0 lib/cartodb/{controllers => routers}/server-info.js | 0 lib/cartodb/{controllers => routers}/template-router.js | 0 lib/cartodb/{controllers => routers}/template/admin.js | 0 .../template/middlewares/named-map-provider.js | 0 lib/cartodb/{controllers => routers}/template/preview.js | 0 lib/cartodb/{controllers => routers}/template/tile.js | 0 lib/cartodb/server.js | 4 ++-- 27 files changed, 2 insertions(+), 2 deletions(-) rename lib/cartodb/{controllers => routers}/analyses.js (100%) rename lib/cartodb/{controllers => routers}/api-router.js (100%) rename lib/cartodb/{controllers => routers}/layergroup/analysis.js (100%) rename lib/cartodb/{controllers => routers}/layergroup/attributes.js (100%) rename lib/cartodb/{controllers => routers}/layergroup/dataview.js (100%) rename lib/cartodb/{controllers => routers}/layergroup/middlewares/map-store-map-config-provider.js (100%) rename lib/cartodb/{controllers => routers}/layergroup/preview.js (100%) rename lib/cartodb/{controllers => routers}/layergroup/tile.js (100%) rename lib/cartodb/{controllers => routers}/map-router.js (100%) rename lib/cartodb/{controllers => routers}/map/anonymous.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/augment-layergroup-data.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/check-json-content-type.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/increment-map-view-count.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/init-profiler.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/last-updated-time-layergroup.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/layer-stats.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/layergroup-id-header.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/layergroup-metadata.js (100%) rename lib/cartodb/{controllers => routers}/map/middlewares/map-error.js (100%) rename lib/cartodb/{controllers => routers}/map/named.js (100%) rename lib/cartodb/{controllers => routers}/server-info.js (100%) rename lib/cartodb/{controllers => routers}/template-router.js (100%) rename lib/cartodb/{controllers => routers}/template/admin.js (100%) rename lib/cartodb/{controllers => routers}/template/middlewares/named-map-provider.js (100%) rename lib/cartodb/{controllers => routers}/template/preview.js (100%) rename lib/cartodb/{controllers => routers}/template/tile.js (100%) diff --git a/lib/cartodb/controllers/analyses.js b/lib/cartodb/routers/analyses.js similarity index 100% rename from lib/cartodb/controllers/analyses.js rename to lib/cartodb/routers/analyses.js diff --git a/lib/cartodb/controllers/api-router.js b/lib/cartodb/routers/api-router.js similarity index 100% rename from lib/cartodb/controllers/api-router.js rename to lib/cartodb/routers/api-router.js diff --git a/lib/cartodb/controllers/layergroup/analysis.js b/lib/cartodb/routers/layergroup/analysis.js similarity index 100% rename from lib/cartodb/controllers/layergroup/analysis.js rename to lib/cartodb/routers/layergroup/analysis.js diff --git a/lib/cartodb/controllers/layergroup/attributes.js b/lib/cartodb/routers/layergroup/attributes.js similarity index 100% rename from lib/cartodb/controllers/layergroup/attributes.js rename to lib/cartodb/routers/layergroup/attributes.js diff --git a/lib/cartodb/controllers/layergroup/dataview.js b/lib/cartodb/routers/layergroup/dataview.js similarity index 100% rename from lib/cartodb/controllers/layergroup/dataview.js rename to lib/cartodb/routers/layergroup/dataview.js diff --git a/lib/cartodb/controllers/layergroup/middlewares/map-store-map-config-provider.js b/lib/cartodb/routers/layergroup/middlewares/map-store-map-config-provider.js similarity index 100% rename from lib/cartodb/controllers/layergroup/middlewares/map-store-map-config-provider.js rename to lib/cartodb/routers/layergroup/middlewares/map-store-map-config-provider.js diff --git a/lib/cartodb/controllers/layergroup/preview.js b/lib/cartodb/routers/layergroup/preview.js similarity index 100% rename from lib/cartodb/controllers/layergroup/preview.js rename to lib/cartodb/routers/layergroup/preview.js diff --git a/lib/cartodb/controllers/layergroup/tile.js b/lib/cartodb/routers/layergroup/tile.js similarity index 100% rename from lib/cartodb/controllers/layergroup/tile.js rename to lib/cartodb/routers/layergroup/tile.js diff --git a/lib/cartodb/controllers/map-router.js b/lib/cartodb/routers/map-router.js similarity index 100% rename from lib/cartodb/controllers/map-router.js rename to lib/cartodb/routers/map-router.js diff --git a/lib/cartodb/controllers/map/anonymous.js b/lib/cartodb/routers/map/anonymous.js similarity index 100% rename from lib/cartodb/controllers/map/anonymous.js rename to lib/cartodb/routers/map/anonymous.js diff --git a/lib/cartodb/controllers/map/middlewares/augment-layergroup-data.js b/lib/cartodb/routers/map/middlewares/augment-layergroup-data.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/augment-layergroup-data.js rename to lib/cartodb/routers/map/middlewares/augment-layergroup-data.js diff --git a/lib/cartodb/controllers/map/middlewares/check-json-content-type.js b/lib/cartodb/routers/map/middlewares/check-json-content-type.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/check-json-content-type.js rename to lib/cartodb/routers/map/middlewares/check-json-content-type.js diff --git a/lib/cartodb/controllers/map/middlewares/increment-map-view-count.js b/lib/cartodb/routers/map/middlewares/increment-map-view-count.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/increment-map-view-count.js rename to lib/cartodb/routers/map/middlewares/increment-map-view-count.js diff --git a/lib/cartodb/controllers/map/middlewares/init-profiler.js b/lib/cartodb/routers/map/middlewares/init-profiler.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/init-profiler.js rename to lib/cartodb/routers/map/middlewares/init-profiler.js diff --git a/lib/cartodb/controllers/map/middlewares/last-updated-time-layergroup.js b/lib/cartodb/routers/map/middlewares/last-updated-time-layergroup.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/last-updated-time-layergroup.js rename to lib/cartodb/routers/map/middlewares/last-updated-time-layergroup.js diff --git a/lib/cartodb/controllers/map/middlewares/layer-stats.js b/lib/cartodb/routers/map/middlewares/layer-stats.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/layer-stats.js rename to lib/cartodb/routers/map/middlewares/layer-stats.js diff --git a/lib/cartodb/controllers/map/middlewares/layergroup-id-header.js b/lib/cartodb/routers/map/middlewares/layergroup-id-header.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/layergroup-id-header.js rename to lib/cartodb/routers/map/middlewares/layergroup-id-header.js diff --git a/lib/cartodb/controllers/map/middlewares/layergroup-metadata.js b/lib/cartodb/routers/map/middlewares/layergroup-metadata.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/layergroup-metadata.js rename to lib/cartodb/routers/map/middlewares/layergroup-metadata.js diff --git a/lib/cartodb/controllers/map/middlewares/map-error.js b/lib/cartodb/routers/map/middlewares/map-error.js similarity index 100% rename from lib/cartodb/controllers/map/middlewares/map-error.js rename to lib/cartodb/routers/map/middlewares/map-error.js diff --git a/lib/cartodb/controllers/map/named.js b/lib/cartodb/routers/map/named.js similarity index 100% rename from lib/cartodb/controllers/map/named.js rename to lib/cartodb/routers/map/named.js diff --git a/lib/cartodb/controllers/server-info.js b/lib/cartodb/routers/server-info.js similarity index 100% rename from lib/cartodb/controllers/server-info.js rename to lib/cartodb/routers/server-info.js diff --git a/lib/cartodb/controllers/template-router.js b/lib/cartodb/routers/template-router.js similarity index 100% rename from lib/cartodb/controllers/template-router.js rename to lib/cartodb/routers/template-router.js diff --git a/lib/cartodb/controllers/template/admin.js b/lib/cartodb/routers/template/admin.js similarity index 100% rename from lib/cartodb/controllers/template/admin.js rename to lib/cartodb/routers/template/admin.js diff --git a/lib/cartodb/controllers/template/middlewares/named-map-provider.js b/lib/cartodb/routers/template/middlewares/named-map-provider.js similarity index 100% rename from lib/cartodb/controllers/template/middlewares/named-map-provider.js rename to lib/cartodb/routers/template/middlewares/named-map-provider.js diff --git a/lib/cartodb/controllers/template/preview.js b/lib/cartodb/routers/template/preview.js similarity index 100% rename from lib/cartodb/controllers/template/preview.js rename to lib/cartodb/routers/template/preview.js diff --git a/lib/cartodb/controllers/template/tile.js b/lib/cartodb/routers/template/tile.js similarity index 100% rename from lib/cartodb/controllers/template/tile.js rename to lib/cartodb/routers/template/tile.js diff --git a/lib/cartodb/server.js b/lib/cartodb/server.js index ab6fcc62..40f1195c 100644 --- a/lib/cartodb/server.js +++ b/lib/cartodb/server.js @@ -5,8 +5,8 @@ const { mapnik } = windshaft; const jsonReplacer = require('./utils/json-replacer'); -const ApiRouter = require('./controllers/api-router'); -const ServerInfoController = require('./controllers/server-info'); +const ApiRouter = require('./routers/api-router'); +const ServerInfoController = require('./routers/server-info'); const StatsClient = require('./stats/client'); From 7e68f5270d821f151526c0e82c336483264f1e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Fri, 6 Apr 2018 18:20:33 +0200 Subject: [PATCH 02/19] Move application middlewares to routers folder --- lib/cartodb/routers/analyses.js | 12 ++--- lib/cartodb/routers/api-router.js | 18 ++++---- lib/cartodb/routers/layergroup/analysis.js | 12 ++--- lib/cartodb/routers/layergroup/attributes.js | 20 ++++----- lib/cartodb/routers/layergroup/dataview.js | 20 ++++----- lib/cartodb/routers/layergroup/preview.js | 20 ++++----- lib/cartodb/routers/layergroup/tile.js | 22 +++++----- lib/cartodb/routers/map/anonymous.js | 18 ++++---- lib/cartodb/routers/map/named.js | 18 ++++---- .../middlewares}/authorize.js | 0 .../middlewares}/cache-channel-header.js | 0 .../middlewares}/cache-control-header.js | 0 .../middlewares}/clean-up-query-params.js | 0 .../middlewares}/cors.js | 0 .../middlewares}/credentials.js | 0 .../middlewares}/db-conn-setup.js | 0 .../middlewares}/error-middleware.js | 0 .../middlewares}/last-modified-header.js | 0 .../middlewares}/layergroup-token.js | 2 +- .../middlewares}/logger.js | 0 .../middlewares}/lzma.js | 0 .../middlewares}/rate-limit.js | 0 .../middlewares}/send-response.js | 0 .../middlewares}/served-by-host-header.js | 0 .../middlewares}/stats.js | 2 +- .../middlewares}/surrogate-key-header.js | 4 +- .../middlewares}/syntax-error.js | 0 .../middlewares}/user.js | 2 +- .../middlewares}/vector-error.js | 2 +- lib/cartodb/routers/template/admin.js | 4 +- lib/cartodb/routers/template/preview.js | 18 ++++---- lib/cartodb/routers/template/tile.js | 20 ++++----- test/acceptance/rate-limit.test.js | 44 +++++++++---------- test/unit/cartodb/error-middleware.test.js | 10 ++--- test/unit/cartodb/error_messages.test.js | 2 +- test/unit/cartodb/lzmaMiddleware.test.js | 2 +- test/unit/cartodb/prepare-context.test.js | 8 ++-- 37 files changed, 140 insertions(+), 140 deletions(-) rename lib/cartodb/{middleware => routers/middlewares}/authorize.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/cache-channel-header.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/cache-control-header.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/clean-up-query-params.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/cors.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/credentials.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/db-conn-setup.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/error-middleware.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/last-modified-header.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/layergroup-token.js (93%) rename lib/cartodb/{middleware => routers/middlewares}/logger.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/lzma.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/rate-limit.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/send-response.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/served-by-host-header.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/stats.js (93%) rename lib/cartodb/{middleware => routers/middlewares}/surrogate-key-header.js (84%) rename lib/cartodb/{middleware => routers/middlewares}/syntax-error.js (100%) rename lib/cartodb/{middleware => routers/middlewares}/user.js (79%) rename lib/cartodb/{middleware => routers/middlewares}/vector-error.js (95%) diff --git a/lib/cartodb/routers/analyses.js b/lib/cartodb/routers/analyses.js index cc6dd3a6..145d6a0d 100644 --- a/lib/cartodb/routers/analyses.js +++ b/lib/cartodb/routers/analyses.js @@ -1,11 +1,11 @@ const PSQL = require('cartodb-psql'); -const cleanUpQueryParams = require('../middleware/clean-up-query-params'); -const credentials = require('../middleware/credentials'); -const authorize = require('../middleware/authorize'); -const dbConnSetup = require('../middleware/db-conn-setup'); -const rateLimit = require('../middleware/rate-limit'); +const cleanUpQueryParams = require('./middlewares/clean-up-query-params'); +const credentials = require('./middlewares/credentials'); +const authorize = require('./middlewares/authorize'); +const dbConnSetup = require('./middlewares/db-conn-setup'); +const rateLimit = require('./middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; -const cacheControlHeader = require('../middleware/cache-control-header'); +const cacheControlHeader = require('./middlewares/cache-control-header'); const dbParamsFromResLocals = require('../utils/database-params'); function AnalysesController(pgConnection, authApi, userLimitsApi) { diff --git a/lib/cartodb/routers/api-router.js b/lib/cartodb/routers/api-router.js index 537be27b..ca46d6ae 100644 --- a/lib/cartodb/routers/api-router.js +++ b/lib/cartodb/routers/api-router.js @@ -40,16 +40,16 @@ const ResourceLocator = require('../models/resource-locator'); const LayergroupMetadata = require('../utils/layergroup-metadata'); const RendererStatsReporter = require('../stats/reporter/renderer'); -const logger = require('../middleware/logger'); +const logger = require('./middlewares/logger'); const bodyParser = require('body-parser'); -const servedByHostHeader = require('../middleware/served-by-host-header'); -const stats = require('../middleware/stats'); -const lzmaMiddleware = require('../middleware/lzma'); -const cors = require('../middleware/cors'); -const user = require('../middleware/user'); -const sendResponse = require('../middleware/send-response'); -const syntaxError = require('../middleware/syntax-error'); -const errorMiddleware = require('../middleware/error-middleware'); +const servedByHostHeader = require('./middlewares/served-by-host-header'); +const stats = require('./middlewares/stats'); +const lzmaMiddleware = require('./middlewares/lzma'); +const cors = require('./middlewares/cors'); +const user = require('./middlewares/user'); +const sendResponse = require('./middlewares/send-response'); +const syntaxError = require('./middlewares/syntax-error'); +const errorMiddleware = require('./middlewares/error-middleware'); const MapRouter = require('./map-router'); const TemplateRouter = require('./template-router'); diff --git a/lib/cartodb/routers/layergroup/analysis.js b/lib/cartodb/routers/layergroup/analysis.js index 36f20991..b2164140 100644 --- a/lib/cartodb/routers/layergroup/analysis.js +++ b/lib/cartodb/routers/layergroup/analysis.js @@ -1,9 +1,9 @@ -const layergroupToken = require('../../middleware/layergroup-token'); -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); -const rateLimit = require('../../middleware/rate-limit'); +const layergroupToken = require('../middlewares/layergroup-token'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const dbParamsFromResLocals = require('../../utils/database-params'); diff --git a/lib/cartodb/routers/layergroup/attributes.js b/lib/cartodb/routers/layergroup/attributes.js index c4c5af38..3666483a 100644 --- a/lib/cartodb/routers/layergroup/attributes.js +++ b/lib/cartodb/routers/layergroup/attributes.js @@ -1,15 +1,15 @@ -const layergroupToken = require('../../middleware/layergroup-token'); -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); -const rateLimit = require('../../middleware/rate-limit'); +const layergroupToken = require('../middlewares/layergroup-token'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); module.exports = class AttributesLayergroupController { constructor ( diff --git a/lib/cartodb/routers/layergroup/dataview.js b/lib/cartodb/routers/layergroup/dataview.js index c13e0eaa..559a51d2 100644 --- a/lib/cartodb/routers/layergroup/dataview.js +++ b/lib/cartodb/routers/layergroup/dataview.js @@ -1,15 +1,15 @@ -const layergroupToken = require('../../middleware/layergroup-token'); -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); -const rateLimit = require('../../middleware/rate-limit'); +const layergroupToken = require('../middlewares/layergroup-token'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); const ALLOWED_DATAVIEW_QUERY_PARAMS = [ 'filters', // json diff --git a/lib/cartodb/routers/layergroup/preview.js b/lib/cartodb/routers/layergroup/preview.js index 8885e45c..d22efffd 100644 --- a/lib/cartodb/routers/layergroup/preview.js +++ b/lib/cartodb/routers/layergroup/preview.js @@ -1,15 +1,15 @@ -const layergroupToken = require('../../middleware/layergroup-token'); -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); -const rateLimit = require('../../middleware/rate-limit'); +const layergroupToken = require('../middlewares/layergroup-token'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); module.exports = class PreviewLayergroupController { constructor ( diff --git a/lib/cartodb/routers/layergroup/tile.js b/lib/cartodb/routers/layergroup/tile.js index 7837d116..0443ca4e 100644 --- a/lib/cartodb/routers/layergroup/tile.js +++ b/lib/cartodb/routers/layergroup/tile.js @@ -1,16 +1,16 @@ -const layergroupToken = require('../../middleware/layergroup-token'); -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); -const rateLimit = require('../../middleware/rate-limit'); +const layergroupToken = require('../middlewares/layergroup-token'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); -const vectorError = require('../../middleware/vector-error'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); +const vectorError = require('../middlewares/vector-error'); const SUPPORTED_FORMATS = { grid_json: true, diff --git a/lib/cartodb/routers/map/anonymous.js b/lib/cartodb/routers/map/anonymous.js index 433da3e4..3e2a3582 100644 --- a/lib/cartodb/routers/map/anonymous.js +++ b/lib/cartodb/routers/map/anonymous.js @@ -1,25 +1,25 @@ const windshaft = require('windshaft'); const MapConfig = windshaft.model.MapConfig; const Datasource = windshaft.model.Datasource; -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); const initProfiler = require('./middlewares/init-profiler'); const checkJsonContentType = require('./middlewares/check-json-content-type'); const incrementMapViewCount = require('./middlewares/increment-map-view-count'); const augmentLayergroupData = require('./middlewares/augment-layergroup-data'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); const lastUpdatedTimeLayergroup = require('./middlewares/last-updated-time-layergroup'); const layerStats = require('./middlewares/layer-stats'); const layergroupIdHeader = require('./middlewares/layergroup-id-header'); const layergroupMetadata = require('./middlewares/layergroup-metadata'); const mapError = require('./middlewares/map-error'); const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider'); -const rateLimit = require('../../middleware/rate-limit'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; /** diff --git a/lib/cartodb/routers/map/named.js b/lib/cartodb/routers/map/named.js index 2258b62f..47699e83 100644 --- a/lib/cartodb/routers/map/named.js +++ b/lib/cartodb/routers/map/named.js @@ -1,15 +1,15 @@ -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); const initProfiler = require('./middlewares/init-profiler'); const checkJsonContentType = require('./middlewares/check-json-content-type'); const incrementMapViewCount = require('./middlewares/increment-map-view-count'); const augmentLayergroupData = require('./middlewares/augment-layergroup-data'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); const lastUpdatedTimeLayergroup = require('./middlewares/last-updated-time-layergroup'); const layerStats = require('./middlewares/layer-stats'); const layergroupIdHeader = require('./middlewares/layergroup-id-header'); @@ -17,7 +17,7 @@ const layergroupMetadata = require('./middlewares/layergroup-metadata'); const mapError = require('./middlewares/map-error'); const NamedMapMapConfigProvider = require('../../models/mapconfig/provider/named-map-provider'); const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider'); -const rateLimit = require('../../middleware/rate-limit'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; /** diff --git a/lib/cartodb/middleware/authorize.js b/lib/cartodb/routers/middlewares/authorize.js similarity index 100% rename from lib/cartodb/middleware/authorize.js rename to lib/cartodb/routers/middlewares/authorize.js diff --git a/lib/cartodb/middleware/cache-channel-header.js b/lib/cartodb/routers/middlewares/cache-channel-header.js similarity index 100% rename from lib/cartodb/middleware/cache-channel-header.js rename to lib/cartodb/routers/middlewares/cache-channel-header.js diff --git a/lib/cartodb/middleware/cache-control-header.js b/lib/cartodb/routers/middlewares/cache-control-header.js similarity index 100% rename from lib/cartodb/middleware/cache-control-header.js rename to lib/cartodb/routers/middlewares/cache-control-header.js diff --git a/lib/cartodb/middleware/clean-up-query-params.js b/lib/cartodb/routers/middlewares/clean-up-query-params.js similarity index 100% rename from lib/cartodb/middleware/clean-up-query-params.js rename to lib/cartodb/routers/middlewares/clean-up-query-params.js diff --git a/lib/cartodb/middleware/cors.js b/lib/cartodb/routers/middlewares/cors.js similarity index 100% rename from lib/cartodb/middleware/cors.js rename to lib/cartodb/routers/middlewares/cors.js diff --git a/lib/cartodb/middleware/credentials.js b/lib/cartodb/routers/middlewares/credentials.js similarity index 100% rename from lib/cartodb/middleware/credentials.js rename to lib/cartodb/routers/middlewares/credentials.js diff --git a/lib/cartodb/middleware/db-conn-setup.js b/lib/cartodb/routers/middlewares/db-conn-setup.js similarity index 100% rename from lib/cartodb/middleware/db-conn-setup.js rename to lib/cartodb/routers/middlewares/db-conn-setup.js diff --git a/lib/cartodb/middleware/error-middleware.js b/lib/cartodb/routers/middlewares/error-middleware.js similarity index 100% rename from lib/cartodb/middleware/error-middleware.js rename to lib/cartodb/routers/middlewares/error-middleware.js diff --git a/lib/cartodb/middleware/last-modified-header.js b/lib/cartodb/routers/middlewares/last-modified-header.js similarity index 100% rename from lib/cartodb/middleware/last-modified-header.js rename to lib/cartodb/routers/middlewares/last-modified-header.js diff --git a/lib/cartodb/middleware/layergroup-token.js b/lib/cartodb/routers/middlewares/layergroup-token.js similarity index 93% rename from lib/cartodb/middleware/layergroup-token.js rename to lib/cartodb/routers/middlewares/layergroup-token.js index 1a32e413..0e6553d2 100644 --- a/lib/cartodb/middleware/layergroup-token.js +++ b/lib/cartodb/routers/middlewares/layergroup-token.js @@ -1,4 +1,4 @@ -const LayergroupToken = require('../models/layergroup-token'); +const LayergroupToken = require('../../models/layergroup-token'); const authErrorMessageTemplate = function (signer, user) { return `Cannot use map signature of user "${signer}" on db of user "${user}"`; }; diff --git a/lib/cartodb/middleware/logger.js b/lib/cartodb/routers/middlewares/logger.js similarity index 100% rename from lib/cartodb/middleware/logger.js rename to lib/cartodb/routers/middlewares/logger.js diff --git a/lib/cartodb/middleware/lzma.js b/lib/cartodb/routers/middlewares/lzma.js similarity index 100% rename from lib/cartodb/middleware/lzma.js rename to lib/cartodb/routers/middlewares/lzma.js diff --git a/lib/cartodb/middleware/rate-limit.js b/lib/cartodb/routers/middlewares/rate-limit.js similarity index 100% rename from lib/cartodb/middleware/rate-limit.js rename to lib/cartodb/routers/middlewares/rate-limit.js diff --git a/lib/cartodb/middleware/send-response.js b/lib/cartodb/routers/middlewares/send-response.js similarity index 100% rename from lib/cartodb/middleware/send-response.js rename to lib/cartodb/routers/middlewares/send-response.js diff --git a/lib/cartodb/middleware/served-by-host-header.js b/lib/cartodb/routers/middlewares/served-by-host-header.js similarity index 100% rename from lib/cartodb/middleware/served-by-host-header.js rename to lib/cartodb/routers/middlewares/served-by-host-header.js diff --git a/lib/cartodb/middleware/stats.js b/lib/cartodb/routers/middlewares/stats.js similarity index 93% rename from lib/cartodb/middleware/stats.js rename to lib/cartodb/routers/middlewares/stats.js index 83ff3054..53d2cf9a 100644 --- a/lib/cartodb/middleware/stats.js +++ b/lib/cartodb/routers/middlewares/stats.js @@ -1,4 +1,4 @@ -const Profiler = require('../stats/profiler_proxy'); +const Profiler = require('../../stats/profiler_proxy'); const debug = require('debug')('windshaft:cartodb:stats'); const onHeaders = require('on-headers'); diff --git a/lib/cartodb/middleware/surrogate-key-header.js b/lib/cartodb/routers/middlewares/surrogate-key-header.js similarity index 84% rename from lib/cartodb/middleware/surrogate-key-header.js rename to lib/cartodb/routers/middlewares/surrogate-key-header.js index 51cec1c1..d2a3243c 100644 --- a/lib/cartodb/middleware/surrogate-key-header.js +++ b/lib/cartodb/routers/middlewares/surrogate-key-header.js @@ -1,5 +1,5 @@ -const NamedMapsCacheEntry = require('../cache/model/named_maps_entry'); -const NamedMapMapConfigProvider = require('../models/mapconfig/provider/named-map-provider'); +const NamedMapsCacheEntry = require('../../cache/model/named_maps_entry'); +const NamedMapMapConfigProvider = require('../../models/mapconfig/provider/named-map-provider'); module.exports = function setSurrogateKeyHeader ({ surrogateKeysCache }) { return function setSurrogateKeyHeaderMiddleware(req, res, next) { diff --git a/lib/cartodb/middleware/syntax-error.js b/lib/cartodb/routers/middlewares/syntax-error.js similarity index 100% rename from lib/cartodb/middleware/syntax-error.js rename to lib/cartodb/routers/middlewares/syntax-error.js diff --git a/lib/cartodb/middleware/user.js b/lib/cartodb/routers/middlewares/user.js similarity index 79% rename from lib/cartodb/middleware/user.js rename to lib/cartodb/routers/middlewares/user.js index 9c7968bc..551fa001 100644 --- a/lib/cartodb/middleware/user.js +++ b/lib/cartodb/routers/middlewares/user.js @@ -1,4 +1,4 @@ -const CdbRequest = require('../models/cdb_request'); +const CdbRequest = require('../../models/cdb_request'); module.exports = function user () { const cdbRequest = new CdbRequest(); diff --git a/lib/cartodb/middleware/vector-error.js b/lib/cartodb/routers/middlewares/vector-error.js similarity index 95% rename from lib/cartodb/middleware/vector-error.js rename to lib/cartodb/routers/middlewares/vector-error.js index 8268ec1f..7e2ec75f 100644 --- a/lib/cartodb/middleware/vector-error.js +++ b/lib/cartodb/routers/middlewares/vector-error.js @@ -1,5 +1,5 @@ const fs = require('fs'); -const timeoutErrorVectorTile = fs.readFileSync(__dirname + '/../../../assets/render-timeout-fallback.mvt'); +const timeoutErrorVectorTile = fs.readFileSync(__dirname + '/../../../../assets/render-timeout-fallback.mvt'); module.exports = function vectorError() { return function vectorErrorMiddleware(err, req, res, next) { diff --git a/lib/cartodb/routers/template/admin.js b/lib/cartodb/routers/template/admin.js index 169f6b20..b5d1b964 100644 --- a/lib/cartodb/routers/template/admin.js +++ b/lib/cartodb/routers/template/admin.js @@ -1,6 +1,6 @@ const { templateName } = require('../../backends/template_maps'); -const credentials = require('../../middleware/credentials'); -const rateLimit = require('../../middleware/rate-limit'); +const credentials = require('../middlewares/credentials'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; /** diff --git a/lib/cartodb/routers/template/preview.js b/lib/cartodb/routers/template/preview.js index 53f583de..224579ad 100644 --- a/lib/cartodb/routers/template/preview.js +++ b/lib/cartodb/routers/template/preview.js @@ -1,13 +1,13 @@ -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); const namedMapProvider = require('./middlewares/named-map-provider'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); -const rateLimit = require('../../middleware/rate-limit'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const DEFAULT_ZOOM_CENTER = { diff --git a/lib/cartodb/routers/template/tile.js b/lib/cartodb/routers/template/tile.js index 86404100..730f7e9d 100644 --- a/lib/cartodb/routers/template/tile.js +++ b/lib/cartodb/routers/template/tile.js @@ -1,14 +1,14 @@ -const cleanUpQueryParams = require('../../middleware/clean-up-query-params'); -const credentials = require('../../middleware/credentials'); -const dbConnSetup = require('../../middleware/db-conn-setup'); -const authorize = require('../../middleware/authorize'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const authorize = require('../middlewares/authorize'); const namedMapProvider = require('./middlewares/named-map-provider'); -const cacheControlHeader = require('../../middleware/cache-control-header'); -const cacheChannelHeader = require('../../middleware/cache-channel-header'); -const surrogateKeyHeader = require('../../middleware/surrogate-key-header'); -const lastModifiedHeader = require('../../middleware/last-modified-header'); -const vectorError = require('../../middleware/vector-error'); -const rateLimit = require('../../middleware/rate-limit'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const cacheChannelHeader = require('../middlewares/cache-channel-header'); +const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); +const lastModifiedHeader = require('../middlewares/last-modified-header'); +const vectorError = require('../middlewares/vector-error'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; function TileTemplateController ( diff --git a/test/acceptance/rate-limit.test.js b/test/acceptance/rate-limit.test.js index eb9f8954..568db07b 100644 --- a/test/acceptance/rate-limit.test.js +++ b/test/acceptance/rate-limit.test.js @@ -6,10 +6,10 @@ const RedisPool = require('redis-mpool'); const cartodbRedis = require('cartodb-redis'); const TestClient = require('../support/test-client'); const UserLimitsApi = require('../../lib/cartodb/api/user_limits_api'); -const rateLimitMiddleware = require('../../lib/cartodb/middleware/rate-limit'); +const rateLimitMiddleware = require('../../lib/cartodb/routers/middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimitMiddleware; -let userLimitsApi; +let userLimitsApi; let rateLimit; let redisClient; let testClient; @@ -112,11 +112,11 @@ function assertGetLayergroupRequest (status, limit, remaining, reset, retry, don 'Carto-Rate-Limit-Reset': reset } }; - + if(retry) { response.headers['Retry-After'] = retry; } - + testClient.getLayergroup({ response }, err => { assert.ifError(err); if (done) { @@ -133,11 +133,11 @@ function assertRateLimitRequest (status, limit, remaining, reset, retry, done) { "Carto-Rate-Limit-Remaining": remaining, "Carto-Rate-Limit-Reset": reset }; - + if(retry) { expectedHeaders['Retry-After'] = retry; } - + assert.deepEqual(res.headers, expectedHeaders); if(status === 200) { @@ -160,7 +160,7 @@ describe('rate limit', function() { before(function() { global.environment.enabledFeatures.rateLimitsEnabled = true; global.environment.enabledFeatures.rateLimitsByEndpoint.anonymous = true; - + redisClient = redis.createClient(global.environment.redis.port); testClient = new TestClient(createMapConfig(), 1234); }); @@ -183,7 +183,7 @@ describe('rate limit', function() { done(); }); }); - }); + }); it('should not be rate limited', function (done) { const count = 1; @@ -257,9 +257,9 @@ describe('rate limit middleware', function () { it("1 req/sec: 2 req/seg should be limited, removing SHA script from Redis", function (done) { userLimitsApi.metadataBackend.redisCmd( - 8, - 'SCRIPT', - ['FLUSH'], + 8, + 'SCRIPT', + ['FLUSH'], function () { assertRateLimitRequest(200, 1, 0, 1); setTimeout( () => assertRateLimitRequest(429, 1, 0, 0, 1), 500); @@ -277,7 +277,7 @@ describe('rate limit and vector tiles', function () { before(function(done) { global.environment.enabledFeatures.rateLimitsEnabled = true; global.environment.enabledFeatures.rateLimitsByEndpoint.tile = true; - + redisClient = redis.createClient(global.environment.redis.port); const count = 1; const period = 1; @@ -287,9 +287,9 @@ describe('rate limit and vector tiles', function () { testClient = new TestClient(createMapConfig(), 1234); testClient.getLayergroup({status: 200}, (err, res) => { assert.ifError(err); - + layergroupid = res.layergroupid; - + done(); }); }); @@ -336,12 +336,12 @@ describe('rate limit and vector tiles', function () { testClient.getTile(0, 0, 0, tileParams(204, '1', '0', '1'), (err) => { assert.ifError(err); - + testClient.getTile( - 0, - 0, - 0, - tileParams(429, '1', '0', '0', '1', 'application/x-protobuf'), + 0, + 0, + 0, + tileParams(429, '1', '0', '0', '1', 'application/x-protobuf'), (err, res, tile) => { assert.ifError(err); @@ -350,11 +350,11 @@ describe('rate limit and vector tiles', function () { assert.equal(tileJSON.length, 2); assert.equal(tileJSON[0].name, 'errorTileSquareLayer'); assert.equal(tileJSON[1].name, 'errorTileStripesLayer'); - + done(); } - ); + ); }); - + }); }); diff --git a/test/unit/cartodb/error-middleware.test.js b/test/unit/cartodb/error-middleware.test.js index 861bec54..74cb8fa5 100644 --- a/test/unit/cartodb/error-middleware.test.js +++ b/test/unit/cartodb/error-middleware.test.js @@ -1,7 +1,7 @@ require('../../support/test_helper.js'); var assert = require('assert'); -var errorMiddleware = require('../../../lib/cartodb/middleware/error-middleware'); +var errorMiddleware = require('../../../lib/cartodb/routers/middlewares/error-middleware'); describe('error-middleware', function() { @@ -28,7 +28,7 @@ describe('error-middleware', function() { error.subtype = 'test subtype'; const errors = [error, error]; - + const req = {}; const res = { headers: {}, @@ -43,7 +43,7 @@ describe('error-middleware', function() { send () {} }; - const errorHeader = { + const errorHeader = { mainError: { statusCode: 400, message: error.message, @@ -133,7 +133,7 @@ describe('error-middleware', function() { error.subtype = badString; const errors = [error, error]; - + const req = {}; const res = { headers: {}, @@ -148,7 +148,7 @@ describe('error-middleware', function() { send () {} }; - const errorHeader = { + const errorHeader = { mainError: { statusCode: 400, message: escapedString, diff --git a/test/unit/cartodb/error_messages.test.js b/test/unit/cartodb/error_messages.test.js index bfe0b03a..dfc489de 100644 --- a/test/unit/cartodb/error_messages.test.js +++ b/test/unit/cartodb/error_messages.test.js @@ -2,7 +2,7 @@ require('../../support/test_helper'); var assert = require('assert'); -var errorMiddleware = require('../../../lib/cartodb/middleware/error-middleware'); +var errorMiddleware = require('../../../lib/cartodb/routers/middlewares/error-middleware'); describe('error messages clean up', function() { diff --git a/test/unit/cartodb/lzmaMiddleware.test.js b/test/unit/cartodb/lzmaMiddleware.test.js index 3ad81962..06219a4d 100644 --- a/test/unit/cartodb/lzmaMiddleware.test.js +++ b/test/unit/cartodb/lzmaMiddleware.test.js @@ -1,7 +1,7 @@ var assert = require('assert'); var testHelper = require('../../support/test_helper'); -var lzmaMiddleware = require('../../../lib/cartodb/middleware/lzma'); +var lzmaMiddleware = require('../../../lib/cartodb/routers/middlewares/lzma'); describe('lzma-middleware', function() { diff --git a/test/unit/cartodb/prepare-context.test.js b/test/unit/cartodb/prepare-context.test.js index ff311cc6..37265f23 100644 --- a/test/unit/cartodb/prepare-context.test.js +++ b/test/unit/cartodb/prepare-context.test.js @@ -7,10 +7,10 @@ var PgConnection = require('../../../lib/cartodb/backends/pg_connection'); var AuthApi = require('../../../lib/cartodb/api/auth_api'); var TemplateMaps = require('../../../lib/cartodb/backends/template_maps'); -const cleanUpQueryParamsMiddleware = require('../../../lib/cartodb/middleware/clean-up-query-params'); -const authorizeMiddleware = require('../../../lib/cartodb/middleware/authorize'); -const dbConnSetupMiddleware = require('../../../lib/cartodb/middleware/db-conn-setup'); -const credentialsMiddleware = require('../../../lib/cartodb/middleware/credentials'); +const cleanUpQueryParamsMiddleware = require('../../../lib/cartodb/routers/middlewares/clean-up-query-params'); +const authorizeMiddleware = require('../../../lib/cartodb/routers/middlewares/authorize'); +const dbConnSetupMiddleware = require('../../../lib/cartodb/routers/middlewares/db-conn-setup'); +const credentialsMiddleware = require('../../../lib/cartodb/routers/middlewares/credentials'); var windshaft = require('windshaft'); From 6167562758bcbb171f1a5020e46635285c4dbc97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Mon, 9 Apr 2018 16:18:30 +0200 Subject: [PATCH 03/19] Meet application logic and folder struture --- lib/cartodb/{routers => api}/api-router.js | 14 +++++++------- .../map/analyses-catalog-controller.js} | 14 +++++++------- .../map/analysis-layergroup-controller.js} | 0 .../map/anonymous-map-controller.js} | 18 +++++++++--------- .../map/attributes-layergroup-controller.js} | 2 +- .../map/dataview-layergroup-controller.js} | 2 +- lib/cartodb/{routers => api/map}/map-router.js | 18 +++++++++--------- .../map/preview-layergroup-controller.js} | 2 +- .../map/preview-template-controller.js} | 2 +- .../map/tile-layergroup-controller.js} | 2 +- .../middlewares/augment-layergroup-data.js | 0 .../{routers => api}/middlewares/authorize.js | 0 .../middlewares/cache-channel-header.js | 0 .../middlewares/cache-control-header.js | 0 .../middlewares/check-json-content-type.js | 0 .../middlewares/clean-up-query-params.js | 0 .../{routers => api}/middlewares/cors.js | 0 .../middlewares/credentials.js | 0 .../middlewares/db-conn-setup.js | 0 .../middlewares/error-middleware.js | 0 .../middlewares/increment-map-view-count.js | 0 .../map => api}/middlewares/init-profiler.js | 0 .../middlewares/last-modified-header.js | 0 .../last-updated-time-layergroup.js | 0 .../map => api}/middlewares/layer-stats.js | 0 .../middlewares/layergroup-id-header.js | 0 .../middlewares/layergroup-metadata.js | 0 .../middlewares/layergroup-token.js | 0 .../{routers => api}/middlewares/logger.js | 0 .../{routers => api}/middlewares/lzma.js | 0 .../map => api}/middlewares/map-error.js | 0 .../map-store-map-config-provider.js | 2 +- .../middlewares/named-map-provider.js | 0 .../{routers => api}/middlewares/rate-limit.js | 0 .../middlewares/send-response.js | 0 .../middlewares/served-by-host-header.js | 0 .../{routers => api}/middlewares/stats.js | 0 .../middlewares/surrogate-key-header.js | 0 .../middlewares/syntax-error.js | 0 .../{routers => api}/middlewares/user.js | 0 .../middlewares/vector-error.js | 0 .../template/admin-template-controller.js} | 0 .../template/named-template-controller.js} | 18 +++++++++--------- .../template}/template-router.js | 6 +++--- .../template/tile-template-controller.js} | 2 +- lib/cartodb/{ => backends}/api/auth_api.js | 0 .../{ => backends}/api/filter_stats_api.js | 2 +- .../api/overviews_metadata_api.js | 2 +- .../{ => backends}/api/tables_extent_api.js | 0 .../{ => backends}/api/user_limits_api.js | 0 ...erver-info.js => server-info-controller.js} | 2 +- lib/cartodb/server.js | 4 ++-- test/acceptance/rate-limit.test.js | 4 ++-- .../integration/mapconfig_overviews_adapter.js | 4 ++-- test/integration/overviews-metadata-api.js | 2 +- test/unit/cartodb/error-middleware.test.js | 2 +- test/unit/cartodb/error_messages.test.js | 2 +- test/unit/cartodb/lzmaMiddleware.test.js | 2 +- test/unit/cartodb/prepare-context.test.js | 10 +++++----- 59 files changed, 69 insertions(+), 69 deletions(-) rename lib/cartodb/{routers => api}/api-router.js (96%) rename lib/cartodb/{routers/analyses.js => api/map/analyses-catalog-controller.js} (89%) rename lib/cartodb/{routers/layergroup/analysis.js => api/map/analysis-layergroup-controller.js} (100%) rename lib/cartodb/{routers/map/anonymous.js => api/map/anonymous-map-controller.js} (91%) rename lib/cartodb/{routers/layergroup/attributes.js => api/map/attributes-layergroup-controller.js} (96%) rename lib/cartodb/{routers/layergroup/dataview.js => api/map/dataview-layergroup-controller.js} (98%) rename lib/cartodb/{routers => api/map}/map-router.js (84%) rename lib/cartodb/{routers/layergroup/preview.js => api/map/preview-layergroup-controller.js} (98%) rename lib/cartodb/{routers/template/preview.js => api/map/preview-template-controller.js} (99%) rename lib/cartodb/{routers/layergroup/tile.js => api/map/tile-layergroup-controller.js} (98%) rename lib/cartodb/{routers/map => api}/middlewares/augment-layergroup-data.js (100%) rename lib/cartodb/{routers => api}/middlewares/authorize.js (100%) rename lib/cartodb/{routers => api}/middlewares/cache-channel-header.js (100%) rename lib/cartodb/{routers => api}/middlewares/cache-control-header.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/check-json-content-type.js (100%) rename lib/cartodb/{routers => api}/middlewares/clean-up-query-params.js (100%) rename lib/cartodb/{routers => api}/middlewares/cors.js (100%) rename lib/cartodb/{routers => api}/middlewares/credentials.js (100%) rename lib/cartodb/{routers => api}/middlewares/db-conn-setup.js (100%) rename lib/cartodb/{routers => api}/middlewares/error-middleware.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/increment-map-view-count.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/init-profiler.js (100%) rename lib/cartodb/{routers => api}/middlewares/last-modified-header.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/last-updated-time-layergroup.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/layer-stats.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/layergroup-id-header.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/layergroup-metadata.js (100%) rename lib/cartodb/{routers => api}/middlewares/layergroup-token.js (100%) rename lib/cartodb/{routers => api}/middlewares/logger.js (100%) rename lib/cartodb/{routers => api}/middlewares/lzma.js (100%) rename lib/cartodb/{routers/map => api}/middlewares/map-error.js (100%) rename lib/cartodb/{routers/layergroup => api}/middlewares/map-store-map-config-provider.js (91%) rename lib/cartodb/{routers/template => api}/middlewares/named-map-provider.js (100%) rename lib/cartodb/{routers => api}/middlewares/rate-limit.js (100%) rename lib/cartodb/{routers => api}/middlewares/send-response.js (100%) rename lib/cartodb/{routers => api}/middlewares/served-by-host-header.js (100%) rename lib/cartodb/{routers => api}/middlewares/stats.js (100%) rename lib/cartodb/{routers => api}/middlewares/surrogate-key-header.js (100%) rename lib/cartodb/{routers => api}/middlewares/syntax-error.js (100%) rename lib/cartodb/{routers => api}/middlewares/user.js (100%) rename lib/cartodb/{routers => api}/middlewares/vector-error.js (100%) rename lib/cartodb/{routers/template/admin.js => api/template/admin-template-controller.js} (100%) rename lib/cartodb/{routers/map/named.js => api/template/named-template-controller.js} (91%) rename lib/cartodb/{routers => api/template}/template-router.js (89%) rename lib/cartodb/{routers/template/tile.js => api/template/tile-template-controller.js} (97%) rename lib/cartodb/{ => backends}/api/auth_api.js (100%) rename lib/cartodb/{ => backends}/api/filter_stats_api.js (96%) rename lib/cartodb/{ => backends}/api/overviews_metadata_api.js (95%) rename lib/cartodb/{ => backends}/api/tables_extent_api.js (100%) rename lib/cartodb/{ => backends}/api/user_limits_api.js (100%) rename lib/cartodb/{routers/server-info.js => server-info-controller.js} (96%) diff --git a/lib/cartodb/routers/api-router.js b/lib/cartodb/api/api-router.js similarity index 96% rename from lib/cartodb/routers/api-router.js rename to lib/cartodb/api/api-router.js index ca46d6ae..4608d477 100644 --- a/lib/cartodb/routers/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -13,11 +13,11 @@ const TemplateMaps = require('../backends/template_maps.js'); const PgQueryRunner = require('../backends/pg_query_runner'); const StatsBackend = require('../backends/stats'); -const AuthApi = require('../api/auth_api'); -const UserLimitsApi = require('../api/user_limits_api'); -const OverviewsMetadataApi = require('../api/overviews_metadata_api'); -const FilterStatsApi = require('../api/filter_stats_api'); -const TablesExtentApi = require('../api/tables_extent_api'); +const AuthApi = require('../backends/api/auth_api'); +const UserLimitsApi = require('../backends/api/user_limits_api'); +const OverviewsMetadataApi = require('../backends/api/overviews_metadata_api'); +const FilterStatsApi = require('../backends/api/filter_stats_api'); +const TablesExtentApi = require('../backends/api/tables_extent_api'); const LayergroupAffectedTablesCache = require('../cache/layergroup_affected_tables'); const SurrogateKeysCache = require('../cache/surrogate_keys_cache'); @@ -51,8 +51,8 @@ const sendResponse = require('./middlewares/send-response'); const syntaxError = require('./middlewares/syntax-error'); const errorMiddleware = require('./middlewares/error-middleware'); -const MapRouter = require('./map-router'); -const TemplateRouter = require('./template-router'); +const MapRouter = require('./map/map-router'); +const TemplateRouter = require('./template/template-router'); module.exports = class ApiRouter { constructor ({ serverOptions, environmentOptions }) { diff --git a/lib/cartodb/routers/analyses.js b/lib/cartodb/api/map/analyses-catalog-controller.js similarity index 89% rename from lib/cartodb/routers/analyses.js rename to lib/cartodb/api/map/analyses-catalog-controller.js index 145d6a0d..300345c2 100644 --- a/lib/cartodb/routers/analyses.js +++ b/lib/cartodb/api/map/analyses-catalog-controller.js @@ -1,12 +1,12 @@ const PSQL = require('cartodb-psql'); -const cleanUpQueryParams = require('./middlewares/clean-up-query-params'); -const credentials = require('./middlewares/credentials'); -const authorize = require('./middlewares/authorize'); -const dbConnSetup = require('./middlewares/db-conn-setup'); -const rateLimit = require('./middlewares/rate-limit'); +const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); +const credentials = require('../middlewares/credentials'); +const authorize = require('../middlewares/authorize'); +const dbConnSetup = require('../middlewares/db-conn-setup'); +const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; -const cacheControlHeader = require('./middlewares/cache-control-header'); -const dbParamsFromResLocals = require('../utils/database-params'); +const cacheControlHeader = require('../middlewares/cache-control-header'); +const dbParamsFromResLocals = require('../../utils/database-params'); function AnalysesController(pgConnection, authApi, userLimitsApi) { this.pgConnection = pgConnection; diff --git a/lib/cartodb/routers/layergroup/analysis.js b/lib/cartodb/api/map/analysis-layergroup-controller.js similarity index 100% rename from lib/cartodb/routers/layergroup/analysis.js rename to lib/cartodb/api/map/analysis-layergroup-controller.js diff --git a/lib/cartodb/routers/map/anonymous.js b/lib/cartodb/api/map/anonymous-map-controller.js similarity index 91% rename from lib/cartodb/routers/map/anonymous.js rename to lib/cartodb/api/map/anonymous-map-controller.js index 3e2a3582..4c65988b 100644 --- a/lib/cartodb/routers/map/anonymous.js +++ b/lib/cartodb/api/map/anonymous-map-controller.js @@ -5,19 +5,19 @@ const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); const credentials = require('../middlewares/credentials'); const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); -const initProfiler = require('./middlewares/init-profiler'); -const checkJsonContentType = require('./middlewares/check-json-content-type'); -const incrementMapViewCount = require('./middlewares/increment-map-view-count'); -const augmentLayergroupData = require('./middlewares/augment-layergroup-data'); +const initProfiler = require('../middlewares/init-profiler'); +const checkJsonContentType = require('../middlewares/check-json-content-type'); +const incrementMapViewCount = require('../middlewares/increment-map-view-count'); +const augmentLayergroupData = require('../middlewares/augment-layergroup-data'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); const lastModifiedHeader = require('../middlewares/last-modified-header'); -const lastUpdatedTimeLayergroup = require('./middlewares/last-updated-time-layergroup'); -const layerStats = require('./middlewares/layer-stats'); -const layergroupIdHeader = require('./middlewares/layergroup-id-header'); -const layergroupMetadata = require('./middlewares/layergroup-metadata'); -const mapError = require('./middlewares/map-error'); +const lastUpdatedTimeLayergroup = require('../middlewares/last-updated-time-layergroup'); +const layerStats = require('../middlewares/layer-stats'); +const layergroupIdHeader = require('../middlewares/layergroup-id-header'); +const layergroupMetadata = require('../middlewares/layergroup-metadata'); +const mapError = require('../middlewares/map-error'); const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider'); const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; diff --git a/lib/cartodb/routers/layergroup/attributes.js b/lib/cartodb/api/map/attributes-layergroup-controller.js similarity index 96% rename from lib/cartodb/routers/layergroup/attributes.js rename to lib/cartodb/api/map/attributes-layergroup-controller.js index 3666483a..52ba5f30 100644 --- a/lib/cartodb/routers/layergroup/attributes.js +++ b/lib/cartodb/api/map/attributes-layergroup-controller.js @@ -5,7 +5,7 @@ const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; -const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); +const createMapStoreMapConfigProvider = require('../middlewares/map-store-map-config-provider'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); diff --git a/lib/cartodb/routers/layergroup/dataview.js b/lib/cartodb/api/map/dataview-layergroup-controller.js similarity index 98% rename from lib/cartodb/routers/layergroup/dataview.js rename to lib/cartodb/api/map/dataview-layergroup-controller.js index 559a51d2..219723bc 100644 --- a/lib/cartodb/routers/layergroup/dataview.js +++ b/lib/cartodb/api/map/dataview-layergroup-controller.js @@ -5,7 +5,7 @@ const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; -const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); +const createMapStoreMapConfigProvider = require('../middlewares/map-store-map-config-provider'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); diff --git a/lib/cartodb/routers/map-router.js b/lib/cartodb/api/map/map-router.js similarity index 84% rename from lib/cartodb/routers/map-router.js rename to lib/cartodb/api/map/map-router.js index d02cd563..8303040f 100644 --- a/lib/cartodb/routers/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -1,13 +1,13 @@ const { Router: router } = require('express'); -const AnalysisLayergroupController = require('./layergroup/analysis'); -const AttributesLayergroupController = require('./layergroup/attributes'); -const DataviewLayergroupController = require('./layergroup/dataview'); -const PreviewLayergroupController = require('./layergroup/preview'); -const TileLayergroupController = require('./layergroup/tile'); -const AnonymousMapController = require('./map/anonymous'); -const PreviewTemplateController = require('./template/preview'); -const AnalysesController = require('./analyses'); +const AnalysisLayergroupController = require('./analysis-layergroup-controller'); +const AttributesLayergroupController = require('./attributes-layergroup-controller'); +const DataviewLayergroupController = require('./dataview-layergroup-controller'); +const PreviewLayergroupController = require('./preview-layergroup-controller'); +const TileLayergroupController = require('./tile-layergroup-controller'); +const AnonymousMapController = require('./anonymous-map-controller'); +const PreviewTemplateController = require('./preview-template-controller'); +const AnalysesCatalogController = require('./analyses-catalog-controller'); module.exports = class MapRouter { constructor ({ collaborators }) { @@ -108,7 +108,7 @@ module.exports = class MapRouter { userLimitsApi ); - this.analysesController = new AnalysesController( + this.analysesController = new AnalysesCatalogController( pgConnection, authApi, userLimitsApi diff --git a/lib/cartodb/routers/layergroup/preview.js b/lib/cartodb/api/map/preview-layergroup-controller.js similarity index 98% rename from lib/cartodb/routers/layergroup/preview.js rename to lib/cartodb/api/map/preview-layergroup-controller.js index d22efffd..1fbf7754 100644 --- a/lib/cartodb/routers/layergroup/preview.js +++ b/lib/cartodb/api/map/preview-layergroup-controller.js @@ -5,7 +5,7 @@ const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; -const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); +const createMapStoreMapConfigProvider = require('../middlewares/map-store-map-config-provider'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); diff --git a/lib/cartodb/routers/template/preview.js b/lib/cartodb/api/map/preview-template-controller.js similarity index 99% rename from lib/cartodb/routers/template/preview.js rename to lib/cartodb/api/map/preview-template-controller.js index 224579ad..ecce4b7f 100644 --- a/lib/cartodb/routers/template/preview.js +++ b/lib/cartodb/api/map/preview-template-controller.js @@ -2,7 +2,7 @@ const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); const credentials = require('../middlewares/credentials'); const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); -const namedMapProvider = require('./middlewares/named-map-provider'); +const namedMapProvider = require('../middlewares/named-map-provider'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); diff --git a/lib/cartodb/routers/layergroup/tile.js b/lib/cartodb/api/map/tile-layergroup-controller.js similarity index 98% rename from lib/cartodb/routers/layergroup/tile.js rename to lib/cartodb/api/map/tile-layergroup-controller.js index 0443ca4e..34abcbda 100644 --- a/lib/cartodb/routers/layergroup/tile.js +++ b/lib/cartodb/api/map/tile-layergroup-controller.js @@ -5,7 +5,7 @@ const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; -const createMapStoreMapConfigProvider = require('./middlewares/map-store-map-config-provider'); +const createMapStoreMapConfigProvider = require('../middlewares/map-store-map-config-provider'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); diff --git a/lib/cartodb/routers/map/middlewares/augment-layergroup-data.js b/lib/cartodb/api/middlewares/augment-layergroup-data.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/augment-layergroup-data.js rename to lib/cartodb/api/middlewares/augment-layergroup-data.js diff --git a/lib/cartodb/routers/middlewares/authorize.js b/lib/cartodb/api/middlewares/authorize.js similarity index 100% rename from lib/cartodb/routers/middlewares/authorize.js rename to lib/cartodb/api/middlewares/authorize.js diff --git a/lib/cartodb/routers/middlewares/cache-channel-header.js b/lib/cartodb/api/middlewares/cache-channel-header.js similarity index 100% rename from lib/cartodb/routers/middlewares/cache-channel-header.js rename to lib/cartodb/api/middlewares/cache-channel-header.js diff --git a/lib/cartodb/routers/middlewares/cache-control-header.js b/lib/cartodb/api/middlewares/cache-control-header.js similarity index 100% rename from lib/cartodb/routers/middlewares/cache-control-header.js rename to lib/cartodb/api/middlewares/cache-control-header.js diff --git a/lib/cartodb/routers/map/middlewares/check-json-content-type.js b/lib/cartodb/api/middlewares/check-json-content-type.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/check-json-content-type.js rename to lib/cartodb/api/middlewares/check-json-content-type.js diff --git a/lib/cartodb/routers/middlewares/clean-up-query-params.js b/lib/cartodb/api/middlewares/clean-up-query-params.js similarity index 100% rename from lib/cartodb/routers/middlewares/clean-up-query-params.js rename to lib/cartodb/api/middlewares/clean-up-query-params.js diff --git a/lib/cartodb/routers/middlewares/cors.js b/lib/cartodb/api/middlewares/cors.js similarity index 100% rename from lib/cartodb/routers/middlewares/cors.js rename to lib/cartodb/api/middlewares/cors.js diff --git a/lib/cartodb/routers/middlewares/credentials.js b/lib/cartodb/api/middlewares/credentials.js similarity index 100% rename from lib/cartodb/routers/middlewares/credentials.js rename to lib/cartodb/api/middlewares/credentials.js diff --git a/lib/cartodb/routers/middlewares/db-conn-setup.js b/lib/cartodb/api/middlewares/db-conn-setup.js similarity index 100% rename from lib/cartodb/routers/middlewares/db-conn-setup.js rename to lib/cartodb/api/middlewares/db-conn-setup.js diff --git a/lib/cartodb/routers/middlewares/error-middleware.js b/lib/cartodb/api/middlewares/error-middleware.js similarity index 100% rename from lib/cartodb/routers/middlewares/error-middleware.js rename to lib/cartodb/api/middlewares/error-middleware.js diff --git a/lib/cartodb/routers/map/middlewares/increment-map-view-count.js b/lib/cartodb/api/middlewares/increment-map-view-count.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/increment-map-view-count.js rename to lib/cartodb/api/middlewares/increment-map-view-count.js diff --git a/lib/cartodb/routers/map/middlewares/init-profiler.js b/lib/cartodb/api/middlewares/init-profiler.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/init-profiler.js rename to lib/cartodb/api/middlewares/init-profiler.js diff --git a/lib/cartodb/routers/middlewares/last-modified-header.js b/lib/cartodb/api/middlewares/last-modified-header.js similarity index 100% rename from lib/cartodb/routers/middlewares/last-modified-header.js rename to lib/cartodb/api/middlewares/last-modified-header.js diff --git a/lib/cartodb/routers/map/middlewares/last-updated-time-layergroup.js b/lib/cartodb/api/middlewares/last-updated-time-layergroup.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/last-updated-time-layergroup.js rename to lib/cartodb/api/middlewares/last-updated-time-layergroup.js diff --git a/lib/cartodb/routers/map/middlewares/layer-stats.js b/lib/cartodb/api/middlewares/layer-stats.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/layer-stats.js rename to lib/cartodb/api/middlewares/layer-stats.js diff --git a/lib/cartodb/routers/map/middlewares/layergroup-id-header.js b/lib/cartodb/api/middlewares/layergroup-id-header.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/layergroup-id-header.js rename to lib/cartodb/api/middlewares/layergroup-id-header.js diff --git a/lib/cartodb/routers/map/middlewares/layergroup-metadata.js b/lib/cartodb/api/middlewares/layergroup-metadata.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/layergroup-metadata.js rename to lib/cartodb/api/middlewares/layergroup-metadata.js diff --git a/lib/cartodb/routers/middlewares/layergroup-token.js b/lib/cartodb/api/middlewares/layergroup-token.js similarity index 100% rename from lib/cartodb/routers/middlewares/layergroup-token.js rename to lib/cartodb/api/middlewares/layergroup-token.js diff --git a/lib/cartodb/routers/middlewares/logger.js b/lib/cartodb/api/middlewares/logger.js similarity index 100% rename from lib/cartodb/routers/middlewares/logger.js rename to lib/cartodb/api/middlewares/logger.js diff --git a/lib/cartodb/routers/middlewares/lzma.js b/lib/cartodb/api/middlewares/lzma.js similarity index 100% rename from lib/cartodb/routers/middlewares/lzma.js rename to lib/cartodb/api/middlewares/lzma.js diff --git a/lib/cartodb/routers/map/middlewares/map-error.js b/lib/cartodb/api/middlewares/map-error.js similarity index 100% rename from lib/cartodb/routers/map/middlewares/map-error.js rename to lib/cartodb/api/middlewares/map-error.js diff --git a/lib/cartodb/routers/layergroup/middlewares/map-store-map-config-provider.js b/lib/cartodb/api/middlewares/map-store-map-config-provider.js similarity index 91% rename from lib/cartodb/routers/layergroup/middlewares/map-store-map-config-provider.js rename to lib/cartodb/api/middlewares/map-store-map-config-provider.js index 7d64cb01..f84dd3fc 100644 --- a/lib/cartodb/routers/layergroup/middlewares/map-store-map-config-provider.js +++ b/lib/cartodb/api/middlewares/map-store-map-config-provider.js @@ -1,4 +1,4 @@ -const MapStoreMapConfigProvider = require('../../../models/mapconfig/provider/map-store-provider'); +const MapStoreMapConfigProvider = require('../../models/mapconfig/provider/map-store-provider'); module.exports = function createMapStoreMapConfigProvider ( mapStore, diff --git a/lib/cartodb/routers/template/middlewares/named-map-provider.js b/lib/cartodb/api/middlewares/named-map-provider.js similarity index 100% rename from lib/cartodb/routers/template/middlewares/named-map-provider.js rename to lib/cartodb/api/middlewares/named-map-provider.js diff --git a/lib/cartodb/routers/middlewares/rate-limit.js b/lib/cartodb/api/middlewares/rate-limit.js similarity index 100% rename from lib/cartodb/routers/middlewares/rate-limit.js rename to lib/cartodb/api/middlewares/rate-limit.js diff --git a/lib/cartodb/routers/middlewares/send-response.js b/lib/cartodb/api/middlewares/send-response.js similarity index 100% rename from lib/cartodb/routers/middlewares/send-response.js rename to lib/cartodb/api/middlewares/send-response.js diff --git a/lib/cartodb/routers/middlewares/served-by-host-header.js b/lib/cartodb/api/middlewares/served-by-host-header.js similarity index 100% rename from lib/cartodb/routers/middlewares/served-by-host-header.js rename to lib/cartodb/api/middlewares/served-by-host-header.js diff --git a/lib/cartodb/routers/middlewares/stats.js b/lib/cartodb/api/middlewares/stats.js similarity index 100% rename from lib/cartodb/routers/middlewares/stats.js rename to lib/cartodb/api/middlewares/stats.js diff --git a/lib/cartodb/routers/middlewares/surrogate-key-header.js b/lib/cartodb/api/middlewares/surrogate-key-header.js similarity index 100% rename from lib/cartodb/routers/middlewares/surrogate-key-header.js rename to lib/cartodb/api/middlewares/surrogate-key-header.js diff --git a/lib/cartodb/routers/middlewares/syntax-error.js b/lib/cartodb/api/middlewares/syntax-error.js similarity index 100% rename from lib/cartodb/routers/middlewares/syntax-error.js rename to lib/cartodb/api/middlewares/syntax-error.js diff --git a/lib/cartodb/routers/middlewares/user.js b/lib/cartodb/api/middlewares/user.js similarity index 100% rename from lib/cartodb/routers/middlewares/user.js rename to lib/cartodb/api/middlewares/user.js diff --git a/lib/cartodb/routers/middlewares/vector-error.js b/lib/cartodb/api/middlewares/vector-error.js similarity index 100% rename from lib/cartodb/routers/middlewares/vector-error.js rename to lib/cartodb/api/middlewares/vector-error.js diff --git a/lib/cartodb/routers/template/admin.js b/lib/cartodb/api/template/admin-template-controller.js similarity index 100% rename from lib/cartodb/routers/template/admin.js rename to lib/cartodb/api/template/admin-template-controller.js diff --git a/lib/cartodb/routers/map/named.js b/lib/cartodb/api/template/named-template-controller.js similarity index 91% rename from lib/cartodb/routers/map/named.js rename to lib/cartodb/api/template/named-template-controller.js index 47699e83..140523b1 100644 --- a/lib/cartodb/routers/map/named.js +++ b/lib/cartodb/api/template/named-template-controller.js @@ -2,19 +2,19 @@ const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); const credentials = require('../middlewares/credentials'); const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); -const initProfiler = require('./middlewares/init-profiler'); -const checkJsonContentType = require('./middlewares/check-json-content-type'); -const incrementMapViewCount = require('./middlewares/increment-map-view-count'); -const augmentLayergroupData = require('./middlewares/augment-layergroup-data'); +const initProfiler = require('../middlewares/init-profiler'); +const checkJsonContentType = require('../middlewares/check-json-content-type'); +const incrementMapViewCount = require('../middlewares/increment-map-view-count'); +const augmentLayergroupData = require('../middlewares/augment-layergroup-data'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); const lastModifiedHeader = require('../middlewares/last-modified-header'); -const lastUpdatedTimeLayergroup = require('./middlewares/last-updated-time-layergroup'); -const layerStats = require('./middlewares/layer-stats'); -const layergroupIdHeader = require('./middlewares/layergroup-id-header'); -const layergroupMetadata = require('./middlewares/layergroup-metadata'); -const mapError = require('./middlewares/map-error'); +const lastUpdatedTimeLayergroup = require('../middlewares/last-updated-time-layergroup'); +const layerStats = require('../middlewares/layer-stats'); +const layergroupIdHeader = require('../middlewares/layergroup-id-header'); +const layergroupMetadata = require('../middlewares/layergroup-metadata'); +const mapError = require('../middlewares/map-error'); const NamedMapMapConfigProvider = require('../../models/mapconfig/provider/named-map-provider'); const CreateLayergroupMapConfigProvider = require('../../models/mapconfig/provider/create-layergroup-provider'); const rateLimit = require('../middlewares/rate-limit'); diff --git a/lib/cartodb/routers/template-router.js b/lib/cartodb/api/template/template-router.js similarity index 89% rename from lib/cartodb/routers/template-router.js rename to lib/cartodb/api/template/template-router.js index d549dafd..b4a70715 100644 --- a/lib/cartodb/routers/template-router.js +++ b/lib/cartodb/api/template/template-router.js @@ -1,8 +1,8 @@ const { Router: router } = require('express'); -const NamedMapController = require('./map/named'); -const AdminTemplateController = require('./template/admin'); -const TileTemplateController = require('./template/tile'); +const NamedMapController = require('./named-template-controller'); +const AdminTemplateController = require('./admin-template-controller'); +const TileTemplateController = require('./tile-template-controller'); module.exports = class TemplateRouter { constructor ({ collaborators }) { diff --git a/lib/cartodb/routers/template/tile.js b/lib/cartodb/api/template/tile-template-controller.js similarity index 97% rename from lib/cartodb/routers/template/tile.js rename to lib/cartodb/api/template/tile-template-controller.js index 730f7e9d..11c0bc19 100644 --- a/lib/cartodb/routers/template/tile.js +++ b/lib/cartodb/api/template/tile-template-controller.js @@ -2,7 +2,7 @@ const cleanUpQueryParams = require('../middlewares/clean-up-query-params'); const credentials = require('../middlewares/credentials'); const dbConnSetup = require('../middlewares/db-conn-setup'); const authorize = require('../middlewares/authorize'); -const namedMapProvider = require('./middlewares/named-map-provider'); +const namedMapProvider = require('../middlewares/named-map-provider'); const cacheControlHeader = require('../middlewares/cache-control-header'); const cacheChannelHeader = require('../middlewares/cache-channel-header'); const surrogateKeyHeader = require('../middlewares/surrogate-key-header'); diff --git a/lib/cartodb/api/auth_api.js b/lib/cartodb/backends/api/auth_api.js similarity index 100% rename from lib/cartodb/api/auth_api.js rename to lib/cartodb/backends/api/auth_api.js diff --git a/lib/cartodb/api/filter_stats_api.js b/lib/cartodb/backends/api/filter_stats_api.js similarity index 96% rename from lib/cartodb/api/filter_stats_api.js rename to lib/cartodb/backends/api/filter_stats_api.js index 31e90a25..72fd970f 100644 --- a/lib/cartodb/api/filter_stats_api.js +++ b/lib/cartodb/backends/api/filter_stats_api.js @@ -1,6 +1,6 @@ var _ = require('underscore'); var step = require('step'); -var AnalysisFilter = require('../models/filter/analysis'); +var AnalysisFilter = require('../../models/filter/analysis'); function FilterStatsApi(pgQueryRunner) { this.pgQueryRunner = pgQueryRunner; diff --git a/lib/cartodb/api/overviews_metadata_api.js b/lib/cartodb/backends/api/overviews_metadata_api.js similarity index 95% rename from lib/cartodb/api/overviews_metadata_api.js rename to lib/cartodb/backends/api/overviews_metadata_api.js index 55b4966f..dda51d7e 100644 --- a/lib/cartodb/api/overviews_metadata_api.js +++ b/lib/cartodb/backends/api/overviews_metadata_api.js @@ -1,4 +1,4 @@ -var SubstitutionTokens = require('../utils/substitution-tokens'); +var SubstitutionTokens = require('../../utils/substitution-tokens'); function OverviewsMetadataApi(pgQueryRunner) { this.pgQueryRunner = pgQueryRunner; diff --git a/lib/cartodb/api/tables_extent_api.js b/lib/cartodb/backends/api/tables_extent_api.js similarity index 100% rename from lib/cartodb/api/tables_extent_api.js rename to lib/cartodb/backends/api/tables_extent_api.js diff --git a/lib/cartodb/api/user_limits_api.js b/lib/cartodb/backends/api/user_limits_api.js similarity index 100% rename from lib/cartodb/api/user_limits_api.js rename to lib/cartodb/backends/api/user_limits_api.js diff --git a/lib/cartodb/routers/server-info.js b/lib/cartodb/server-info-controller.js similarity index 96% rename from lib/cartodb/routers/server-info.js rename to lib/cartodb/server-info-controller.js index 12f6432b..17e0649c 100644 --- a/lib/cartodb/routers/server-info.js +++ b/lib/cartodb/server-info-controller.js @@ -1,4 +1,4 @@ -var HealthCheck = require('../monitoring/health_check'); +var HealthCheck = require('./monitoring/health_check'); var WELCOME_MSG = "This is the CartoDB Maps API, " + "see the documentation at http://docs.cartodb.com/cartodb-platform/maps-api.html"; diff --git a/lib/cartodb/server.js b/lib/cartodb/server.js index 40f1195c..ea51f2db 100644 --- a/lib/cartodb/server.js +++ b/lib/cartodb/server.js @@ -5,8 +5,8 @@ const { mapnik } = windshaft; const jsonReplacer = require('./utils/json-replacer'); -const ApiRouter = require('./routers/api-router'); -const ServerInfoController = require('./routers/server-info'); +const ApiRouter = require('./api/api-router'); +const ServerInfoController = require('./server-info-controller'); const StatsClient = require('./stats/client'); diff --git a/test/acceptance/rate-limit.test.js b/test/acceptance/rate-limit.test.js index 568db07b..5b7cdbc0 100644 --- a/test/acceptance/rate-limit.test.js +++ b/test/acceptance/rate-limit.test.js @@ -5,8 +5,8 @@ const redis = require('redis'); const RedisPool = require('redis-mpool'); const cartodbRedis = require('cartodb-redis'); const TestClient = require('../support/test-client'); -const UserLimitsApi = require('../../lib/cartodb/api/user_limits_api'); -const rateLimitMiddleware = require('../../lib/cartodb/routers/middlewares/rate-limit'); +const UserLimitsApi = require('../../lib/cartodb/backends/api/user_limits_api'); +const rateLimitMiddleware = require('../../lib/cartodb/api/middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimitMiddleware; let userLimitsApi; diff --git a/test/integration/mapconfig_overviews_adapter.js b/test/integration/mapconfig_overviews_adapter.js index 87a87935..79196e3b 100644 --- a/test/integration/mapconfig_overviews_adapter.js +++ b/test/integration/mapconfig_overviews_adapter.js @@ -5,8 +5,8 @@ var RedisPool = require('redis-mpool'); var cartodbRedis = require('cartodb-redis'); var PgConnection = require(__dirname + '/../../lib/cartodb/backends/pg_connection'); var PgQueryRunner = require('../../lib/cartodb/backends/pg_query_runner'); -var OverviewsMetadataApi = require('../../lib/cartodb/api/overviews_metadata_api'); -var FilterStatsApi = require('../../lib/cartodb/api/filter_stats_api'); +var OverviewsMetadataApi = require('../../lib/cartodb/backends/api/overviews_metadata_api'); +var FilterStatsApi = require('../../lib/cartodb/backends/api/filter_stats_api'); var MapConfigOverviewsAdapter = require('../../lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter'); var redisPool = new RedisPool(global.environment.redis); diff --git a/test/integration/overviews-metadata-api.js b/test/integration/overviews-metadata-api.js index 4d015870..e51c2129 100644 --- a/test/integration/overviews-metadata-api.js +++ b/test/integration/overviews-metadata-api.js @@ -7,7 +7,7 @@ var cartodbRedis = require('cartodb-redis'); var PgConnection = require('../../lib/cartodb/backends/pg_connection'); var PgQueryRunner = require('../../lib/cartodb/backends/pg_query_runner'); -var OverviewsMetadataApi = require('../../lib/cartodb/api/overviews_metadata_api'); +var OverviewsMetadataApi = require('../../lib/cartodb/backends/api/overviews_metadata_api'); describe('OverviewsMetadataApi', function() { diff --git a/test/unit/cartodb/error-middleware.test.js b/test/unit/cartodb/error-middleware.test.js index 74cb8fa5..88b1ed6e 100644 --- a/test/unit/cartodb/error-middleware.test.js +++ b/test/unit/cartodb/error-middleware.test.js @@ -1,7 +1,7 @@ require('../../support/test_helper.js'); var assert = require('assert'); -var errorMiddleware = require('../../../lib/cartodb/routers/middlewares/error-middleware'); +var errorMiddleware = require('../../../lib/cartodb/api/middlewares/error-middleware'); describe('error-middleware', function() { diff --git a/test/unit/cartodb/error_messages.test.js b/test/unit/cartodb/error_messages.test.js index dfc489de..ecc6fe3c 100644 --- a/test/unit/cartodb/error_messages.test.js +++ b/test/unit/cartodb/error_messages.test.js @@ -2,7 +2,7 @@ require('../../support/test_helper'); var assert = require('assert'); -var errorMiddleware = require('../../../lib/cartodb/routers/middlewares/error-middleware'); +var errorMiddleware = require('../../../lib/cartodb/api/middlewares/error-middleware'); describe('error messages clean up', function() { diff --git a/test/unit/cartodb/lzmaMiddleware.test.js b/test/unit/cartodb/lzmaMiddleware.test.js index 06219a4d..9701d7ca 100644 --- a/test/unit/cartodb/lzmaMiddleware.test.js +++ b/test/unit/cartodb/lzmaMiddleware.test.js @@ -1,7 +1,7 @@ var assert = require('assert'); var testHelper = require('../../support/test_helper'); -var lzmaMiddleware = require('../../../lib/cartodb/routers/middlewares/lzma'); +var lzmaMiddleware = require('../../../lib/cartodb/api/middlewares/lzma'); describe('lzma-middleware', function() { diff --git a/test/unit/cartodb/prepare-context.test.js b/test/unit/cartodb/prepare-context.test.js index 37265f23..e9f0a320 100644 --- a/test/unit/cartodb/prepare-context.test.js +++ b/test/unit/cartodb/prepare-context.test.js @@ -4,13 +4,13 @@ var _ = require('underscore'); var RedisPool = require('redis-mpool'); var cartodbRedis = require('cartodb-redis'); var PgConnection = require('../../../lib/cartodb/backends/pg_connection'); -var AuthApi = require('../../../lib/cartodb/api/auth_api'); +var AuthApi = require('../../../lib/cartodb/backends/api/auth_api'); var TemplateMaps = require('../../../lib/cartodb/backends/template_maps'); -const cleanUpQueryParamsMiddleware = require('../../../lib/cartodb/routers/middlewares/clean-up-query-params'); -const authorizeMiddleware = require('../../../lib/cartodb/routers/middlewares/authorize'); -const dbConnSetupMiddleware = require('../../../lib/cartodb/routers/middlewares/db-conn-setup'); -const credentialsMiddleware = require('../../../lib/cartodb/routers/middlewares/credentials'); +const cleanUpQueryParamsMiddleware = require('../../../lib/cartodb/api/middlewares/clean-up-query-params'); +const authorizeMiddleware = require('../../../lib/cartodb/api/middlewares/authorize'); +const dbConnSetupMiddleware = require('../../../lib/cartodb/api/middlewares/db-conn-setup'); +const credentialsMiddleware = require('../../../lib/cartodb/api/middlewares/credentials'); var windshaft = require('windshaft'); From 8dec4814a9a025dd0c329d4430d55973aa5bb7f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Mon, 9 Apr 2018 18:08:56 +0200 Subject: [PATCH 04/19] Rename AuthAppi by AuthBackend --- lib/cartodb/api/api-router.js | 6 +++--- .../api/map/analyses-catalog-controller.js | 6 +++--- .../api/map/analysis-layergroup-controller.js | 6 +++--- .../api/map/anonymous-map-controller.js | 8 ++++---- .../map/attributes-layergroup-controller.js | 6 +++--- .../api/map/dataview-layergroup-controller.js | 12 +++++------ lib/cartodb/api/map/map-router.js | 18 ++++++++--------- .../api/map/preview-layergroup-controller.js | 8 ++++---- .../api/map/preview-template-controller.js | 6 +++--- .../api/map/tile-layergroup-controller.js | 10 +++++----- lib/cartodb/api/middlewares/authorize.js | 4 ++-- .../api/template/admin-template-controller.js | 20 +++++++++---------- .../api/template/named-template-controller.js | 8 ++++---- lib/cartodb/api/template/template-router.js | 8 ++++---- .../api/template/tile-template-controller.js | 6 +++--- .../backends/{api/auth_api.js => auth.js} | 12 +++++------ test/unit/cartodb/prepare-context.test.js | 6 +++--- 17 files changed, 75 insertions(+), 75 deletions(-) rename lib/cartodb/backends/{api/auth_api.js => auth.js} (94%) diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index 4608d477..f5b40c9e 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -12,8 +12,8 @@ const DataviewBackend = require('../backends/dataview'); const TemplateMaps = require('../backends/template_maps.js'); const PgQueryRunner = require('../backends/pg_query_runner'); const StatsBackend = require('../backends/stats'); +const AuthBackend = require('../backends/auth'); -const AuthApi = require('../backends/api/auth_api'); const UserLimitsApi = require('../backends/api/user_limits_api'); const OverviewsMetadataApi = require('../backends/api/overviews_metadata_api'); const FilterStatsApi = require('../backends/api/filter_stats_api'); @@ -113,7 +113,7 @@ module.exports = class ApiRouter { rateLimitsEnabled: global.environment.enabledFeatures.rateLimitsEnabled } }); - const authApi = new AuthApi(pgConnection, metadataBackend, mapStore, templateMaps); + const authBackend = new AuthBackend(pgConnection, metadataBackend, mapStore, templateMaps); const layergroupAffectedTablesCache = new LayergroupAffectedTablesCache(); @@ -164,7 +164,7 @@ module.exports = class ApiRouter { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache, templateMaps, mapBackend, diff --git a/lib/cartodb/api/map/analyses-catalog-controller.js b/lib/cartodb/api/map/analyses-catalog-controller.js index 300345c2..855666dd 100644 --- a/lib/cartodb/api/map/analyses-catalog-controller.js +++ b/lib/cartodb/api/map/analyses-catalog-controller.js @@ -8,9 +8,9 @@ const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const cacheControlHeader = require('../middlewares/cache-control-header'); const dbParamsFromResLocals = require('../../utils/database-params'); -function AnalysesController(pgConnection, authApi, userLimitsApi) { +function AnalysesController(pgConnection, authBackend, userLimitsApi) { this.pgConnection = pgConnection; - this.authApi = authApi; + this.authBackend = authBackend; this.userLimitsApi = userLimitsApi; } @@ -20,7 +20,7 @@ AnalysesController.prototype.register = function (mapRouter) { mapRouter.get( `/analyses/catalog`, credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ANALYSIS_CATALOG), cleanUpQueryParams(), diff --git a/lib/cartodb/api/map/analysis-layergroup-controller.js b/lib/cartodb/api/map/analysis-layergroup-controller.js index b2164140..e0cf3222 100644 --- a/lib/cartodb/api/map/analysis-layergroup-controller.js +++ b/lib/cartodb/api/map/analysis-layergroup-controller.js @@ -14,7 +14,7 @@ module.exports = class AnalysisLayergroupController { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ) { this.analysisStatusBackend = analysisStatusBackend; @@ -22,7 +22,7 @@ module.exports = class AnalysisLayergroupController { this.mapStore = mapStore; this.userLimitsApi = userLimitsApi; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; - this.authApi = authApi; + this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; } @@ -31,7 +31,7 @@ module.exports = class AnalysisLayergroupController { `/:token/analysis/node/:nodeId`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ANALYSIS), cleanUpQueryParams(), diff --git a/lib/cartodb/api/map/anonymous-map-controller.js b/lib/cartodb/api/map/anonymous-map-controller.js index 4c65988b..a20b1407 100644 --- a/lib/cartodb/api/map/anonymous-map-controller.js +++ b/lib/cartodb/api/map/anonymous-map-controller.js @@ -23,7 +23,7 @@ const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; /** - * @param {AuthApi} authApi + * @param {AuthBackend} authBackend * @param {PgConnection} pgConnection * @param {TemplateMaps} templateMaps * @param {MapBackend} mapBackend @@ -45,7 +45,7 @@ function AnonymousMapController ( layergroupAffectedTables, mapConfigAdapter, statsBackend, - authApi, + authBackend, layergroupMetadata ) { this.pgConnection = pgConnection; @@ -57,7 +57,7 @@ function AnonymousMapController ( this.layergroupAffectedTables = layergroupAffectedTables; this.mapConfigAdapter = mapConfigAdapter; this.statsBackend = statsBackend; - this.authApi = authApi; + this.authBackend = authBackend; this.layergroupMetadata = layergroupMetadata; } @@ -78,7 +78,7 @@ AnonymousMapController.prototype.composeCreateMapMiddleware = function () { return [ credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ANONYMOUS), cleanUpQueryParams(['aggregation']), diff --git a/lib/cartodb/api/map/attributes-layergroup-controller.js b/lib/cartodb/api/map/attributes-layergroup-controller.js index 52ba5f30..17af3df7 100644 --- a/lib/cartodb/api/map/attributes-layergroup-controller.js +++ b/lib/cartodb/api/map/attributes-layergroup-controller.js @@ -18,7 +18,7 @@ module.exports = class AttributesLayergroupController { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ) { this.attributesBackend = attributesBackend; @@ -26,7 +26,7 @@ module.exports = class AttributesLayergroupController { this.mapStore = mapStore; this.userLimitsApi = userLimitsApi; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; - this.authApi = authApi; + this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; } @@ -35,7 +35,7 @@ module.exports = class AttributesLayergroupController { `/:token/:layer/attributes/:fid`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ATTRIBUTES), cleanUpQueryParams(), diff --git a/lib/cartodb/api/map/dataview-layergroup-controller.js b/lib/cartodb/api/map/dataview-layergroup-controller.js index 219723bc..84b4c905 100644 --- a/lib/cartodb/api/map/dataview-layergroup-controller.js +++ b/lib/cartodb/api/map/dataview-layergroup-controller.js @@ -33,7 +33,7 @@ module.exports = class DataviewLayergroupController { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ) { this.dataviewBackend = dataviewBackend; @@ -41,7 +41,7 @@ module.exports = class DataviewLayergroupController { this.mapStore = mapStore; this.userLimitsApi = userLimitsApi; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; - this.authApi = authApi; + this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; } @@ -53,7 +53,7 @@ module.exports = class DataviewLayergroupController { `/:token/dataview/:dataviewName`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), @@ -74,7 +74,7 @@ module.exports = class DataviewLayergroupController { `/:token/:layer/widget/:dataviewName`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), @@ -95,7 +95,7 @@ module.exports = class DataviewLayergroupController { `/:token/dataview/:dataviewName/search`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW_SEARCH), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), @@ -116,7 +116,7 @@ module.exports = class DataviewLayergroupController { `/:token/:layer/widget/:dataviewName/search`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW_SEARCH), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), diff --git a/lib/cartodb/api/map/map-router.js b/lib/cartodb/api/map/map-router.js index 8303040f..2e2a3f4a 100644 --- a/lib/cartodb/api/map/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -21,7 +21,7 @@ module.exports = class MapRouter { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache, templateMaps, mapBackend, @@ -39,7 +39,7 @@ module.exports = class MapRouter { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ); @@ -49,7 +49,7 @@ module.exports = class MapRouter { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ); @@ -59,7 +59,7 @@ module.exports = class MapRouter { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ); @@ -69,7 +69,7 @@ module.exports = class MapRouter { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ); @@ -79,7 +79,7 @@ module.exports = class MapRouter { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ); @@ -93,7 +93,7 @@ module.exports = class MapRouter { layergroupAffectedTablesCache, mapConfigAdapter, statsBackend, - authApi, + authBackend, layergroupMetadata ); @@ -104,13 +104,13 @@ module.exports = class MapRouter { tablesExtentApi, metadataBackend, pgConnection, - authApi, + authBackend, userLimitsApi ); this.analysesController = new AnalysesCatalogController( pgConnection, - authApi, + authBackend, userLimitsApi ); } diff --git a/lib/cartodb/api/map/preview-layergroup-controller.js b/lib/cartodb/api/map/preview-layergroup-controller.js index 1fbf7754..484b831c 100644 --- a/lib/cartodb/api/map/preview-layergroup-controller.js +++ b/lib/cartodb/api/map/preview-layergroup-controller.js @@ -18,7 +18,7 @@ module.exports = class PreviewLayergroupController { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ) { this.previewBackend = previewBackend; @@ -26,7 +26,7 @@ module.exports = class PreviewLayergroupController { this.mapStore = mapStore; this.userLimitsApi = userLimitsApi; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; - this.authApi = authApi; + this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; } @@ -37,7 +37,7 @@ module.exports = class PreviewLayergroupController { `/static/center/:token/:z/:lat/:lng/:width/:height.:format`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC), cleanUpQueryParams(['layer']), @@ -59,7 +59,7 @@ module.exports = class PreviewLayergroupController { `/static/bbox/:token/:west,:south,:east,:north/:width/:height.:format`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC), cleanUpQueryParams(['layer']), diff --git a/lib/cartodb/api/map/preview-template-controller.js b/lib/cartodb/api/map/preview-template-controller.js index ecce4b7f..73a194e6 100644 --- a/lib/cartodb/api/map/preview-template-controller.js +++ b/lib/cartodb/api/map/preview-template-controller.js @@ -29,7 +29,7 @@ function PreviewTemplateController ( tablesExtentApi, metadataBackend, pgConnection, - authApi, + authBackend, userLimitsApi ) { this.namedMapProviderCache = namedMapProviderCache; @@ -38,7 +38,7 @@ function PreviewTemplateController ( this.tablesExtentApi = tablesExtentApi; this.metadataBackend = metadataBackend; this.pgConnection = pgConnection; - this.authApi = authApi; + this.authBackend = authBackend; this.userLimitsApi = userLimitsApi; } @@ -48,7 +48,7 @@ PreviewTemplateController.prototype.register = function (mapRouter) { mapRouter.get( `/static/named/:template_id/:width/:height.:format`, credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC_NAMED), cleanUpQueryParams(['layer', 'zoom', 'lon', 'lat', 'bbox']), diff --git a/lib/cartodb/api/map/tile-layergroup-controller.js b/lib/cartodb/api/map/tile-layergroup-controller.js index 34abcbda..d747d040 100644 --- a/lib/cartodb/api/map/tile-layergroup-controller.js +++ b/lib/cartodb/api/map/tile-layergroup-controller.js @@ -28,7 +28,7 @@ module.exports = class TileLayergroupController { mapStore, userLimitsApi, layergroupAffectedTablesCache, - authApi, + authBackend, surrogateKeysCache ) { this.tileBackend = tileBackend; @@ -36,7 +36,7 @@ module.exports = class TileLayergroupController { this.mapStore = mapStore; this.userLimitsApi = userLimitsApi; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; - this.authApi = authApi; + this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; } @@ -50,7 +50,7 @@ module.exports = class TileLayergroupController { `/:token/:z${number()}/:x${number()}/:y${number()}@:scale_factor${number()}?x.:format`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), cleanUpQueryParams(), @@ -75,7 +75,7 @@ module.exports = class TileLayergroupController { `/:token/:z${number()}/:x${number()}/:y${number()}.:format`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), cleanUpQueryParams(), @@ -100,7 +100,7 @@ module.exports = class TileLayergroupController { `/:token${not('static')}/:layer/:z${number()}/:x${number()}/:y${number()}.(:format)`, layergroupToken(), credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), cleanUpQueryParams(), diff --git a/lib/cartodb/api/middlewares/authorize.js b/lib/cartodb/api/middlewares/authorize.js index a1323fa9..54cab1c4 100644 --- a/lib/cartodb/api/middlewares/authorize.js +++ b/lib/cartodb/api/middlewares/authorize.js @@ -1,6 +1,6 @@ -module.exports = function authorize (authApi) { +module.exports = function authorize (authBackend) { return function authorizeMiddleware (req, res, next) { - authApi.authorize(req, res, (err, authorized) => { + authBackend.authorize(req, res, (err, authorized) => { req.profiler.done('authorize'); if (err) { diff --git a/lib/cartodb/api/template/admin-template-controller.js b/lib/cartodb/api/template/admin-template-controller.js index b5d1b964..e79f6bd9 100644 --- a/lib/cartodb/api/template/admin-template-controller.js +++ b/lib/cartodb/api/template/admin-template-controller.js @@ -4,13 +4,13 @@ const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; /** - * @param {AuthApi} authApi + * @param {AuthBackend} authBackend * @param {PgConnection} pgConnection * @param {TemplateMaps} templateMaps * @constructor */ -function AdminTemplateController(authApi, templateMaps, userLimitsApi) { - this.authApi = authApi; +function AdminTemplateController(authBackend, templateMaps, userLimitsApi) { + this.authBackend = authBackend; this.templateMaps = templateMaps; this.userLimitsApi = userLimitsApi; } @@ -23,7 +23,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { templateRouter.post( `/`, credentials(), - authorizedByAPIKey({ authApi: this.authApi, action: 'create', label: 'POST TEMPLATE' }), + authorizedByAPIKey({ authBackend: this.authBackend, action: 'create', label: 'POST TEMPLATE' }), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_CREATE), checkContentType({ action: 'POST', label: 'POST TEMPLATE' }), createTemplate({ templateMaps: this.templateMaps }) @@ -32,7 +32,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { templateRouter.put( `/:template_id`, credentials(), - authorizedByAPIKey({ authApi: this.authApi, action: 'update', label: 'PUT TEMPLATE' }), + authorizedByAPIKey({ authBackend: this.authBackend, action: 'update', label: 'PUT TEMPLATE' }), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_UPDATE), checkContentType({ action: 'PUT', label: 'PUT TEMPLATE' }), updateTemplate({ templateMaps: this.templateMaps }) @@ -41,7 +41,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { templateRouter.get( `/:template_id`, credentials(), - authorizedByAPIKey({ authApi: this.authApi, action: 'get', label: 'GET TEMPLATE' }), + authorizedByAPIKey({ authBackend: this.authBackend, action: 'get', label: 'GET TEMPLATE' }), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_GET), retrieveTemplate({ templateMaps: this.templateMaps }) ); @@ -49,7 +49,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { templateRouter.delete( `/:template_id`, credentials(), - authorizedByAPIKey({ authApi: this.authApi, action: 'delete', label: 'DELETE TEMPLATE' }), + authorizedByAPIKey({ authBackend: this.authBackend, action: 'delete', label: 'DELETE TEMPLATE' }), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_DELETE), destroyTemplate({ templateMaps: this.templateMaps }) ); @@ -57,7 +57,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { templateRouter.get( `/`, credentials(), - authorizedByAPIKey({ authApi: this.authApi, action: 'list', label: 'GET TEMPLATE LIST' }), + authorizedByAPIKey({ authBackend: this.authBackend, action: 'list', label: 'GET TEMPLATE LIST' }), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_LIST), listTemplates({ templateMaps: this.templateMaps }) ); @@ -75,11 +75,11 @@ function checkContentType ({ action, label }) { }; } -function authorizedByAPIKey ({ authApi, action, label }) { +function authorizedByAPIKey ({ authBackend, action, label }) { return function authorizedByAPIKeyMiddleware (req, res, next) { const { user } = res.locals; - authApi.authorizedByAPIKey(user, res, (err, authenticated) => { + authBackend.authorizedByAPIKey(user, res, (err, authenticated) => { if (err) { return next(err); } diff --git a/lib/cartodb/api/template/named-template-controller.js b/lib/cartodb/api/template/named-template-controller.js index 140523b1..f61d5dc7 100644 --- a/lib/cartodb/api/template/named-template-controller.js +++ b/lib/cartodb/api/template/named-template-controller.js @@ -21,7 +21,7 @@ const rateLimit = require('../middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; /** - * @param {AuthApi} authApi + * @param {AuthBackend} authBackend * @param {PgConnection} pgConnection * @param {TemplateMaps} templateMaps * @param {MapBackend} mapBackend @@ -43,7 +43,7 @@ function NamedMapController ( layergroupAffectedTables, mapConfigAdapter, statsBackend, - authApi, + authBackend, layergroupMetadata ) { this.pgConnection = pgConnection; @@ -55,7 +55,7 @@ function NamedMapController ( this.layergroupAffectedTables = layergroupAffectedTables; this.mapConfigAdapter = mapConfigAdapter; this.statsBackend = statsBackend; - this.authApi = authApi; + this.authBackend = authBackend; this.layergroupMetadata = layergroupMetadata; } @@ -82,7 +82,7 @@ NamedMapController.prototype.composeInstantiateTemplateMiddleware = function () return [ credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED), cleanUpQueryParams(['aggregation']), diff --git a/lib/cartodb/api/template/template-router.js b/lib/cartodb/api/template/template-router.js index b4a70715..87f381d1 100644 --- a/lib/cartodb/api/template/template-router.js +++ b/lib/cartodb/api/template/template-router.js @@ -16,7 +16,7 @@ module.exports = class TemplateRouter { layergroupAffectedTablesCache, mapConfigAdapter, statsBackend, - authApi, + authBackend, layergroupMetadata, namedMapProviderCache, tileBackend, @@ -32,7 +32,7 @@ module.exports = class TemplateRouter { layergroupAffectedTablesCache, mapConfigAdapter, statsBackend, - authApi, + authBackend, layergroupMetadata ); @@ -41,12 +41,12 @@ module.exports = class TemplateRouter { tileBackend, surrogateKeysCache, pgConnection, - authApi, + authBackend, userLimitsApi ); this.adminTemplateController = new AdminTemplateController( - authApi, + authBackend, templateMaps, userLimitsApi ); diff --git a/lib/cartodb/api/template/tile-template-controller.js b/lib/cartodb/api/template/tile-template-controller.js index 11c0bc19..5e2cb72b 100644 --- a/lib/cartodb/api/template/tile-template-controller.js +++ b/lib/cartodb/api/template/tile-template-controller.js @@ -16,14 +16,14 @@ function TileTemplateController ( tileBackend, surrogateKeysCache, pgConnection, - authApi, + authBackend, userLimitsApi ) { this.namedMapProviderCache = namedMapProviderCache; this.tileBackend = tileBackend; this.surrogateKeysCache = surrogateKeysCache; this.pgConnection = pgConnection; - this.authApi = authApi; + this.authBackend = authBackend; this.userLimitsApi = userLimitsApi; } @@ -33,7 +33,7 @@ TileTemplateController.prototype.register = function (templateRouter) { templateRouter.get( `/:template_id/:layer/:z/:x/:y.(:format)`, credentials(), - authorize(this.authApi), + authorize(this.authBackend), dbConnSetup(this.pgConnection), rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_TILES), cleanUpQueryParams(), diff --git a/lib/cartodb/backends/api/auth_api.js b/lib/cartodb/backends/auth.js similarity index 94% rename from lib/cartodb/backends/api/auth_api.js rename to lib/cartodb/backends/auth.js index d27ea3e1..e51084e1 100644 --- a/lib/cartodb/backends/api/auth_api.js +++ b/lib/cartodb/backends/auth.js @@ -7,16 +7,16 @@ var _ = require('underscore'); // AUTH_FALLBACK * @param {MapStore} mapStore * @param {TemplateMaps} templateMaps * @constructor - * @type {AuthApi} + * @type {AuthBackend} */ -function AuthApi(pgConnection, metadataBackend, mapStore, templateMaps) { +function AuthBackend(pgConnection, metadataBackend, mapStore, templateMaps) { this.pgConnection = pgConnection; this.metadataBackend = metadataBackend; this.mapStore = mapStore; this.templateMaps = templateMaps; } -module.exports = AuthApi; +module.exports = AuthBackend; // Check if the user is authorized by a signer // @@ -25,7 +25,7 @@ module.exports = AuthApi; // null if the request is not signed by anyone // or will be a string cartodb username otherwise. // -AuthApi.prototype.authorizedBySigner = function(req, res, callback) { +AuthBackend.prototype.authorizedBySigner = function(req, res, callback) { if ( ! res.locals.token || ! res.locals.signer ) { return callback(null, false); // no signer requested } @@ -60,7 +60,7 @@ function isValidApiKey(apikey) { // @param callback function(err, authorized) // NOTE: authorized is expected to be 0 or 1 (integer) // -AuthApi.prototype.authorizedByAPIKey = function(user, res, callback) { +AuthBackend.prototype.authorizedByAPIKey = function(user, res, callback) { const apikeyToken = res.locals.api_key; const basicAuthUsername = res.locals.basicAuthUsername; @@ -160,7 +160,7 @@ function usernameMatches (basicAuthUsername, requestUsername) { * @param res - standard res object. Contains the auth parameters in locals * @param callback function(err, allowed) is access allowed not? */ -AuthApi.prototype.authorize = function(req, res, callback) { +AuthBackend.prototype.authorize = function(req, res, callback) { var user = res.locals.user; this.authorizedByAPIKey(user, res, (err, isAuthorizedByApikey) => { diff --git a/test/unit/cartodb/prepare-context.test.js b/test/unit/cartodb/prepare-context.test.js index e9f0a320..02b63dc7 100644 --- a/test/unit/cartodb/prepare-context.test.js +++ b/test/unit/cartodb/prepare-context.test.js @@ -4,7 +4,7 @@ var _ = require('underscore'); var RedisPool = require('redis-mpool'); var cartodbRedis = require('cartodb-redis'); var PgConnection = require('../../../lib/cartodb/backends/pg_connection'); -var AuthApi = require('../../../lib/cartodb/backends/api/auth_api'); +var AuthBackend = require('../../../lib/cartodb/backends/auth'); var TemplateMaps = require('../../../lib/cartodb/backends/template_maps'); const cleanUpQueryParamsMiddleware = require('../../../lib/cartodb/api/middlewares/clean-up-query-params'); @@ -31,10 +31,10 @@ describe('prepare-context', function() { var metadataBackend = cartodbRedis({pool: redisPool}); var pgConnection = new PgConnection(metadataBackend); var templateMaps = new TemplateMaps(redisPool); - var authApi = new AuthApi(pgConnection, metadataBackend, mapStore, templateMaps); + var authBackend = new AuthBackend(pgConnection, metadataBackend, mapStore, templateMaps); cleanUpQueryParams = cleanUpQueryParamsMiddleware(); - authorize = authorizeMiddleware(authApi); + authorize = authorizeMiddleware(authBackend); dbConnSetup = dbConnSetupMiddleware(pgConnection); setCredentials = credentialsMiddleware(); }); From e0d8dc0334605dc44e0323be51505181a494a0bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Mon, 9 Apr 2018 18:56:01 +0200 Subject: [PATCH 05/19] Rename filter stats api by filter stats backend --- lib/cartodb/api/api-router.js | 6 +++--- .../backends/{api/filter_stats_api.js => filter-stats.js} | 8 ++++---- .../mapconfig/adapter/mapconfig-overviews-adapter.js | 6 +++--- test/integration/mapconfig_overviews_adapter.js | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) rename lib/cartodb/backends/{api/filter_stats_api.js => filter-stats.js} (86%) diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index f5b40c9e..15469962 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -16,7 +16,7 @@ const AuthBackend = require('../backends/auth'); const UserLimitsApi = require('../backends/api/user_limits_api'); const OverviewsMetadataApi = require('../backends/api/overviews_metadata_api'); -const FilterStatsApi = require('../backends/api/filter_stats_api'); +const FilterStatsApi = require('../backends/filter-stats'); const TablesExtentApi = require('../backends/api/tables_extent_api'); const LayergroupAffectedTablesCache = require('../cache/layergroup_affected_tables'); @@ -124,7 +124,7 @@ module.exports = class ApiRouter { const pgQueryRunner = new PgQueryRunner(pgConnection); const overviewsMetadataApi = new OverviewsMetadataApi(pgQueryRunner); - const filterStatsApi = new FilterStatsApi(pgQueryRunner); + const filterStatsBackend = new FilterStatsApi(pgQueryRunner); const tablesExtentApi = new TablesExtentApi(pgQueryRunner); const mapConfigAdapter = new MapConfigAdapter( @@ -134,7 +134,7 @@ module.exports = class ApiRouter { new DataviewsWidgetsAdapter(), new AnalysisMapConfigAdapter(analysisBackend), new AggregationMapConfigAdapter(pgConnection), - new MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsApi), + new MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsBackend), new TurboCartoAdapter() ); diff --git a/lib/cartodb/backends/api/filter_stats_api.js b/lib/cartodb/backends/filter-stats.js similarity index 86% rename from lib/cartodb/backends/api/filter_stats_api.js rename to lib/cartodb/backends/filter-stats.js index 72fd970f..ba427405 100644 --- a/lib/cartodb/backends/api/filter_stats_api.js +++ b/lib/cartodb/backends/filter-stats.js @@ -1,12 +1,12 @@ var _ = require('underscore'); var step = require('step'); -var AnalysisFilter = require('../../models/filter/analysis'); +var AnalysisFilter = require('../models/filter/analysis'); -function FilterStatsApi(pgQueryRunner) { +function FilterStatsBackends(pgQueryRunner) { this.pgQueryRunner = pgQueryRunner; } -module.exports = FilterStatsApi; +module.exports = FilterStatsBackends; function getEstimatedRows(pgQueryRunner, username, query, callback) { pgQueryRunner.run(username, "EXPLAIN (FORMAT JSON)"+query, function(err, result_rows) { @@ -23,7 +23,7 @@ function getEstimatedRows(pgQueryRunner, username, query, callback) { }); } -FilterStatsApi.prototype.getFilterStats = function (username, unfiltered_query, filters, callback) { +FilterStatsBackends.prototype.getFilterStats = function (username, unfiltered_query, filters, callback) { var stats = {}; var self = this; step( diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index 72c29593..a3133da2 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -2,9 +2,9 @@ var step = require('step'); var queue = require('queue-async'); var _ = require('underscore'); -function MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsApi) { +function MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsBackend) { this.overviewsMetadataApi = overviewsMetadataApi; - this.filterStatsApi = filterStatsApi; + this.filterStatsBackend = filterStatsBackend; } module.exports = MapConfigOverviewsAdapter; @@ -53,7 +53,7 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function(user, requestMapConf function collectStatsData(err, filters, unfiltered_query) { var next_step = this; if ( filters ) { - self.filterStatsApi.getFilterStats( + self.filterStatsBackend.getFilterStats( user, unfiltered_query, filters, function(err, stats) { diff --git a/test/integration/mapconfig_overviews_adapter.js b/test/integration/mapconfig_overviews_adapter.js index 79196e3b..288c2560 100644 --- a/test/integration/mapconfig_overviews_adapter.js +++ b/test/integration/mapconfig_overviews_adapter.js @@ -6,7 +6,7 @@ var cartodbRedis = require('cartodb-redis'); var PgConnection = require(__dirname + '/../../lib/cartodb/backends/pg_connection'); var PgQueryRunner = require('../../lib/cartodb/backends/pg_query_runner'); var OverviewsMetadataApi = require('../../lib/cartodb/backends/api/overviews_metadata_api'); -var FilterStatsApi = require('../../lib/cartodb/backends/api/filter_stats_api'); +var FilterStatsBackend = require('../../lib/cartodb/backends/filter-stats'); var MapConfigOverviewsAdapter = require('../../lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter'); var redisPool = new RedisPool(global.environment.redis); @@ -14,9 +14,9 @@ var metadataBackend = cartodbRedis({pool: redisPool}); var pgConnection = new PgConnection(metadataBackend); var pgQueryRunner = new PgQueryRunner(pgConnection); var overviewsMetadataApi = new OverviewsMetadataApi(pgQueryRunner); -var filterStatsApi = new FilterStatsApi(pgQueryRunner); +var filterStatsBackend = new FilterStatsBackend(pgQueryRunner); -var mapConfigOverviewsAdapter = new MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsApi); +var mapConfigOverviewsAdapter = new MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsBackend); describe('MapConfigOverviewsAdapter', function() { From ba36a4722814430ed17a1ce45be57e31ccfb2003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Mon, 9 Apr 2018 19:47:24 +0200 Subject: [PATCH 06/19] Rename overviews metadata api by overviews metadata backend --- lib/cartodb/api/api-router.js | 6 +++--- ...erviews_metadata_api.js => overviews-metadata.js} | 8 ++++---- .../mapconfig/adapter/mapconfig-overviews-adapter.js | 6 +++--- test/integration/mapconfig_overviews_adapter.js | 6 +++--- test/integration/overviews-metadata-api.js | 12 ++++++------ 5 files changed, 19 insertions(+), 19 deletions(-) rename lib/cartodb/backends/{api/overviews_metadata_api.js => overviews-metadata.js} (82%) diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index 15469962..3f0f7ac0 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -15,7 +15,7 @@ const StatsBackend = require('../backends/stats'); const AuthBackend = require('../backends/auth'); const UserLimitsApi = require('../backends/api/user_limits_api'); -const OverviewsMetadataApi = require('../backends/api/overviews_metadata_api'); +const OverviewsMetadataBackend = require('../backends/overviews-metadata'); const FilterStatsApi = require('../backends/filter-stats'); const TablesExtentApi = require('../backends/api/tables_extent_api'); @@ -122,7 +122,7 @@ module.exports = class ApiRouter { } const pgQueryRunner = new PgQueryRunner(pgConnection); - const overviewsMetadataApi = new OverviewsMetadataApi(pgQueryRunner); + const overviewsMetadataBackend = new OverviewsMetadataBackend(pgQueryRunner); const filterStatsBackend = new FilterStatsApi(pgQueryRunner); const tablesExtentApi = new TablesExtentApi(pgQueryRunner); @@ -134,7 +134,7 @@ module.exports = class ApiRouter { new DataviewsWidgetsAdapter(), new AnalysisMapConfigAdapter(analysisBackend), new AggregationMapConfigAdapter(pgConnection), - new MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsBackend), + new MapConfigOverviewsAdapter(overviewsMetadataBackend, filterStatsBackend), new TurboCartoAdapter() ); diff --git a/lib/cartodb/backends/api/overviews_metadata_api.js b/lib/cartodb/backends/overviews-metadata.js similarity index 82% rename from lib/cartodb/backends/api/overviews_metadata_api.js rename to lib/cartodb/backends/overviews-metadata.js index dda51d7e..31045534 100644 --- a/lib/cartodb/backends/api/overviews_metadata_api.js +++ b/lib/cartodb/backends/overviews-metadata.js @@ -1,10 +1,10 @@ -var SubstitutionTokens = require('../../utils/substitution-tokens'); +var SubstitutionTokens = require('../utils/substitution-tokens'); -function OverviewsMetadataApi(pgQueryRunner) { +function OverviewsMetadataBackend(pgQueryRunner) { this.pgQueryRunner = pgQueryRunner; } -module.exports = OverviewsMetadataApi; +module.exports = OverviewsMetadataBackend; function prepareSql(sql) { return sql && SubstitutionTokens.replace(sql, { @@ -15,7 +15,7 @@ function prepareSql(sql) { }); } -OverviewsMetadataApi.prototype.getOverviewsMetadata = function (username, sql, callback) { +OverviewsMetadataBackend.prototype.getOverviewsMetadata = function (username, sql, callback) { // FIXME: Currently using internal function _cdb_schema_name // CDB_Overviews should provide the schema information directly. var query = 'SELECT *, _cdb_schema_name(base_table)' + diff --git a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js index a3133da2..a104c592 100644 --- a/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter.js @@ -2,8 +2,8 @@ var step = require('step'); var queue = require('queue-async'); var _ = require('underscore'); -function MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsBackend) { - this.overviewsMetadataApi = overviewsMetadataApi; +function MapConfigOverviewsAdapter(overviewsMetadataBackend, filterStatsBackend) { + this.overviewsMetadataBackend = overviewsMetadataBackend; this.filterStatsBackend = filterStatsBackend; } @@ -25,7 +25,7 @@ MapConfigOverviewsAdapter.prototype.getMapConfig = function(user, requestMapConf if ( layer.type !== 'mapnik' && layer.type !== 'cartodb' ) { return done(null, layer); } - self.overviewsMetadataApi.getOverviewsMetadata(user, layer.options.sql, function(err, metadata){ + self.overviewsMetadataBackend.getOverviewsMetadata(user, layer.options.sql, function(err, metadata){ if (err) { done(err, layer); } else { diff --git a/test/integration/mapconfig_overviews_adapter.js b/test/integration/mapconfig_overviews_adapter.js index 288c2560..d5414a7e 100644 --- a/test/integration/mapconfig_overviews_adapter.js +++ b/test/integration/mapconfig_overviews_adapter.js @@ -5,7 +5,7 @@ var RedisPool = require('redis-mpool'); var cartodbRedis = require('cartodb-redis'); var PgConnection = require(__dirname + '/../../lib/cartodb/backends/pg_connection'); var PgQueryRunner = require('../../lib/cartodb/backends/pg_query_runner'); -var OverviewsMetadataApi = require('../../lib/cartodb/backends/api/overviews_metadata_api'); +var OverviewsMetadataBackend = require('../../lib/cartodb/backends/overviews-metadata'); var FilterStatsBackend = require('../../lib/cartodb/backends/filter-stats'); var MapConfigOverviewsAdapter = require('../../lib/cartodb/models/mapconfig/adapter/mapconfig-overviews-adapter'); @@ -13,10 +13,10 @@ var redisPool = new RedisPool(global.environment.redis); var metadataBackend = cartodbRedis({pool: redisPool}); var pgConnection = new PgConnection(metadataBackend); var pgQueryRunner = new PgQueryRunner(pgConnection); -var overviewsMetadataApi = new OverviewsMetadataApi(pgQueryRunner); +var overviewsMetadataBackend = new OverviewsMetadataBackend(pgQueryRunner); var filterStatsBackend = new FilterStatsBackend(pgQueryRunner); -var mapConfigOverviewsAdapter = new MapConfigOverviewsAdapter(overviewsMetadataApi, filterStatsBackend); +var mapConfigOverviewsAdapter = new MapConfigOverviewsAdapter(overviewsMetadataBackend, filterStatsBackend); describe('MapConfigOverviewsAdapter', function() { diff --git a/test/integration/overviews-metadata-api.js b/test/integration/overviews-metadata-api.js index e51c2129..ce82a1d9 100644 --- a/test/integration/overviews-metadata-api.js +++ b/test/integration/overviews-metadata-api.js @@ -7,24 +7,24 @@ var cartodbRedis = require('cartodb-redis'); var PgConnection = require('../../lib/cartodb/backends/pg_connection'); var PgQueryRunner = require('../../lib/cartodb/backends/pg_query_runner'); -var OverviewsMetadataApi = require('../../lib/cartodb/backends/api/overviews_metadata_api'); +var OverviewsMetadataBackend = require('../../lib/cartodb/backends/overviews-metadata'); -describe('OverviewsMetadataApi', function() { +describe('OverviewsMetadataBackend', function() { - var overviewsMetadataApi; + var overviewsMetadataBackend; before(function() { var redisPool = new RedisPool(global.environment.redis); var metadataBackend = cartodbRedis({pool: redisPool}); var pgConnection = new PgConnection(metadataBackend); var pgQueryRunner = new PgQueryRunner(pgConnection); - overviewsMetadataApi = new OverviewsMetadataApi(pgQueryRunner); + overviewsMetadataBackend = new OverviewsMetadataBackend(pgQueryRunner); }); it('should return an empty relation for tables that have no overviews', function(done) { var query = 'select * from test_table'; - overviewsMetadataApi.getOverviewsMetadata('localhost', query, function(err, result) { + overviewsMetadataBackend.getOverviewsMetadata('localhost', query, function(err, result) { assert.ok(!err, err); assert.deepEqual(result, {}); @@ -35,7 +35,7 @@ describe('OverviewsMetadataApi', function() { it('should return overviews metadata', function(done) { var query = 'select * from test_table_overviews'; - overviewsMetadataApi.getOverviewsMetadata('localhost', query, function(err, result) { + overviewsMetadataBackend.getOverviewsMetadata('localhost', query, function(err, result) { assert.ok(!err, err); assert.deepEqual(result, { From 8519d2724b188ba08ed210fc1b887ec38492ee7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 10 Apr 2018 09:40:09 +0200 Subject: [PATCH 07/19] Rename tables extent api by tables extent backend --- lib/cartodb/api/api-router.js | 6 +++--- lib/cartodb/api/map/map-router.js | 4 ++-- lib/cartodb/api/map/preview-template-controller.js | 10 +++++----- .../{api/tables_extent_api.js => tables-extent.js} | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) rename lib/cartodb/backends/{api/tables_extent_api.js => tables-extent.js} (90%) diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index 3f0f7ac0..5a08eb6d 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -17,7 +17,7 @@ const AuthBackend = require('../backends/auth'); const UserLimitsApi = require('../backends/api/user_limits_api'); const OverviewsMetadataBackend = require('../backends/overviews-metadata'); const FilterStatsApi = require('../backends/filter-stats'); -const TablesExtentApi = require('../backends/api/tables_extent_api'); +const TablesExtentBackend = require('../backends/tables-extent'); const LayergroupAffectedTablesCache = require('../cache/layergroup_affected_tables'); const SurrogateKeysCache = require('../cache/surrogate_keys_cache'); @@ -125,7 +125,7 @@ module.exports = class ApiRouter { const overviewsMetadataBackend = new OverviewsMetadataBackend(pgQueryRunner); const filterStatsBackend = new FilterStatsApi(pgQueryRunner); - const tablesExtentApi = new TablesExtentApi(pgQueryRunner); + const tablesExtentBackend = new TablesExtentBackend(pgQueryRunner); const mapConfigAdapter = new MapConfigAdapter( new MapConfigNamedLayersAdapter(templateMaps, pgConnection), @@ -173,7 +173,7 @@ module.exports = class ApiRouter { statsBackend, layergroupMetadata, namedMapProviderCache, - tablesExtentApi + tablesExtentBackend }; this.mapRouter = new MapRouter({ collaborators }); diff --git a/lib/cartodb/api/map/map-router.js b/lib/cartodb/api/map/map-router.js index 2e2a3f4a..78b87d1e 100644 --- a/lib/cartodb/api/map/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -30,7 +30,7 @@ module.exports = class MapRouter { statsBackend, layergroupMetadata, namedMapProviderCache, - tablesExtentApi + tablesExtentBackend } = collaborators; this.analysisLayergroupController = new AnalysisLayergroupController( @@ -101,7 +101,7 @@ module.exports = class MapRouter { namedMapProviderCache, previewBackend, surrogateKeysCache, - tablesExtentApi, + tablesExtentBackend, metadataBackend, pgConnection, authBackend, diff --git a/lib/cartodb/api/map/preview-template-controller.js b/lib/cartodb/api/map/preview-template-controller.js index 73a194e6..acf58a91 100644 --- a/lib/cartodb/api/map/preview-template-controller.js +++ b/lib/cartodb/api/map/preview-template-controller.js @@ -26,7 +26,7 @@ function PreviewTemplateController ( namedMapProviderCache, previewBackend, surrogateKeysCache, - tablesExtentApi, + tablesExtentBackend, metadataBackend, pgConnection, authBackend, @@ -35,7 +35,7 @@ function PreviewTemplateController ( this.namedMapProviderCache = namedMapProviderCache; this.previewBackend = previewBackend; this.surrogateKeysCache = surrogateKeysCache; - this.tablesExtentApi = tablesExtentApi; + this.tablesExtentBackend = tablesExtentBackend; this.metadataBackend = metadataBackend; this.pgConnection = pgConnection; this.authBackend = authBackend; @@ -61,7 +61,7 @@ PreviewTemplateController.prototype.register = function (mapRouter) { namedMapProviderCache: this.namedMapProviderCache, label: 'STATIC_VIZ_MAP' }), - getStaticImageOptions({ tablesExtentApi: this.tablesExtentApi }), + getStaticImageOptions({ tablesExtentBackend: this.tablesExtentBackend }), getImage({ previewBackend: this.previewBackend, label: 'STATIC_VIZ_MAP' }), setContentTypeHeader(), incrementMapViews({ metadataBackend: this.metadataBackend }), @@ -138,7 +138,7 @@ function prepareLayerFilterFromPreviewLayers ({ namedMapProviderCache, label }) }; } -function getStaticImageOptions ({ tablesExtentApi }) { +function getStaticImageOptions ({ tablesExtentBackend }) { return function getStaticImageOptionsMiddleware(req, res, next) { const { user, mapConfigProvider, template } = res.locals; const { zoom, lon, lat, bbox } = req.query; @@ -164,7 +164,7 @@ function getStaticImageOptions ({ tablesExtentApi }) { return next(); } - tablesExtentApi.getBounds(user, tables, (err, bounds) => { + tablesExtentBackend.getBounds(user, tables, (err, bounds) => { if (err) { return next(); } diff --git a/lib/cartodb/backends/api/tables_extent_api.js b/lib/cartodb/backends/tables-extent.js similarity index 90% rename from lib/cartodb/backends/api/tables_extent_api.js rename to lib/cartodb/backends/tables-extent.js index 7b534a3f..5e78a6b1 100644 --- a/lib/cartodb/backends/api/tables_extent_api.js +++ b/lib/cartodb/backends/tables-extent.js @@ -1,8 +1,8 @@ -function TablesExtentApi(pgQueryRunner) { +function TablesExtentBackend(pgQueryRunner) { this.pgQueryRunner = pgQueryRunner; } -module.exports = TablesExtentApi; +module.exports = TablesExtentBackend; /** * Given a username and a list of tables it will return the estimated extent in SRID 4326 for all the tables based on @@ -13,7 +13,7 @@ module.exports = TablesExtentApi; * `table_name` format as valid input * @param {Function} callback function(err, result) {Object} result with `west`, `south`, `east`, `north` */ -TablesExtentApi.prototype.getBounds = function (username, tables, callback) { +TablesExtentBackend.prototype.getBounds = function (username, tables, callback) { var estimatedExtentSQLs = tables.map(function(table) { return "ST_EstimatedExtent('" + table.schema_name + "', '" + table.table_name + "', 'the_geom_webmercator')"; }); From d1a4057a8dfbbf109a1cdbbc56d9c8e3ac90f5cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 10 Apr 2018 10:16:07 +0200 Subject: [PATCH 08/19] Rename user limits api by user limits backend --- lib/cartodb/api/api-router.js | 8 ++++---- .../api/map/analyses-catalog-controller.js | 6 +++--- .../api/map/analysis-layergroup-controller.js | 6 +++--- .../api/map/anonymous-map-controller.js | 14 ++++++------- .../map/attributes-layergroup-controller.js | 8 ++++---- .../api/map/dataview-layergroup-controller.js | 20 +++++++++---------- lib/cartodb/api/map/map-router.js | 18 ++++++++--------- .../api/map/preview-layergroup-controller.js | 12 +++++------ .../api/map/preview-template-controller.js | 6 +++--- .../api/map/tile-layergroup-controller.js | 16 +++++++-------- .../map-store-map-config-provider.js | 4 ++-- lib/cartodb/api/middlewares/rate-limit.js | 4 ++-- .../api/template/admin-template-controller.js | 14 ++++++------- .../api/template/named-template-controller.js | 20 +++++++++---------- lib/cartodb/api/template/template-router.js | 8 ++++---- .../api/template/tile-template-controller.js | 6 +++--- .../user_limits_api.js => user-limits.js} | 14 ++++++------- lib/cartodb/cache/named_map_provider_cache.js | 6 +++--- .../provider/create-layergroup-provider.js | 8 ++++---- .../mapconfig/provider/map-store-provider.js | 8 ++++---- .../mapconfig/provider/named-map-provider.js | 6 +++--- test/acceptance/rate-limit.test.js | 4 ++-- 22 files changed, 108 insertions(+), 108 deletions(-) rename lib/cartodb/backends/{api/user_limits_api.js => user-limits.js} (81%) diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index 5a08eb6d..7108bbbf 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -14,7 +14,7 @@ const PgQueryRunner = require('../backends/pg_query_runner'); const StatsBackend = require('../backends/stats'); const AuthBackend = require('../backends/auth'); -const UserLimitsApi = require('../backends/api/user_limits_api'); +const UserLimitsBackend = require('../backends/user-limits'); const OverviewsMetadataBackend = require('../backends/overviews-metadata'); const FilterStatsApi = require('../backends/filter-stats'); const TablesExtentBackend = require('../backends/tables-extent'); @@ -106,7 +106,7 @@ module.exports = class ApiRouter { const dataviewBackend = new DataviewBackend(analysisBackend); const statsBackend = new StatsBackend(); - const userLimitsApi = new UserLimitsApi(metadataBackend, { + const userLimitsBackend = new UserLimitsBackend(metadataBackend, { limits: { cacheOnTimeout: serverOptions.renderer.mapnik.limits.cacheOnTimeout || false, render: serverOptions.renderer.mapnik.limits.render || 0, @@ -145,7 +145,7 @@ module.exports = class ApiRouter { templateMaps, pgConnection, metadataBackend, - userLimitsApi, + userLimitsBackend, mapConfigAdapter, layergroupAffectedTablesCache ); @@ -162,7 +162,7 @@ module.exports = class ApiRouter { tileBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache, diff --git a/lib/cartodb/api/map/analyses-catalog-controller.js b/lib/cartodb/api/map/analyses-catalog-controller.js index 855666dd..91defc21 100644 --- a/lib/cartodb/api/map/analyses-catalog-controller.js +++ b/lib/cartodb/api/map/analyses-catalog-controller.js @@ -8,10 +8,10 @@ const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const cacheControlHeader = require('../middlewares/cache-control-header'); const dbParamsFromResLocals = require('../../utils/database-params'); -function AnalysesController(pgConnection, authBackend, userLimitsApi) { +function AnalysesController(pgConnection, authBackend, userLimitsBackend) { this.pgConnection = pgConnection; this.authBackend = authBackend; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; } module.exports = AnalysesController; @@ -22,7 +22,7 @@ AnalysesController.prototype.register = function (mapRouter) { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ANALYSIS_CATALOG), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.ANALYSIS_CATALOG), cleanUpQueryParams(), createPGClient(), getDataFromQuery({ queryTemplate: catalogQueryTpl, key: 'catalog' }), diff --git a/lib/cartodb/api/map/analysis-layergroup-controller.js b/lib/cartodb/api/map/analysis-layergroup-controller.js index e0cf3222..5d89803b 100644 --- a/lib/cartodb/api/map/analysis-layergroup-controller.js +++ b/lib/cartodb/api/map/analysis-layergroup-controller.js @@ -12,7 +12,7 @@ module.exports = class AnalysisLayergroupController { analysisStatusBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -20,7 +20,7 @@ module.exports = class AnalysisLayergroupController { this.analysisStatusBackend = analysisStatusBackend; this.pgConnection = pgConnection; this.mapStore = mapStore; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; @@ -33,7 +33,7 @@ module.exports = class AnalysisLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ANALYSIS), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.ANALYSIS), cleanUpQueryParams(), analysisNodeStatus(this.analysisStatusBackend) ); diff --git a/lib/cartodb/api/map/anonymous-map-controller.js b/lib/cartodb/api/map/anonymous-map-controller.js index a20b1407..964ffacd 100644 --- a/lib/cartodb/api/map/anonymous-map-controller.js +++ b/lib/cartodb/api/map/anonymous-map-controller.js @@ -29,7 +29,7 @@ const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; * @param {MapBackend} mapBackend * @param metadataBackend * @param {SurrogateKeysCache} surrogateKeysCache - * @param {UserLimitsApi} userLimitsApi + * @param {UserLimitsBackend} userLimitsBackend * @param {LayergroupAffectedTables} layergroupAffectedTables * @param {MapConfigAdapter} mapConfigAdapter * @param {StatsBackend} statsBackend @@ -41,7 +41,7 @@ function AnonymousMapController ( mapBackend, metadataBackend, surrogateKeysCache, - userLimitsApi, + userLimitsBackend, layergroupAffectedTables, mapConfigAdapter, statsBackend, @@ -53,7 +53,7 @@ function AnonymousMapController ( this.mapBackend = mapBackend; this.metadataBackend = metadataBackend; this.surrogateKeysCache = surrogateKeysCache; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.layergroupAffectedTables = layergroupAffectedTables; this.mapConfigAdapter = mapConfigAdapter; this.statsBackend = statsBackend; @@ -80,7 +80,7 @@ AnonymousMapController.prototype.composeCreateMapMiddleware = function () { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ANONYMOUS), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.ANONYMOUS), cleanUpQueryParams(['aggregation']), initProfiler(isTemplateInstantiation), checkJsonContentType(), @@ -88,7 +88,7 @@ AnonymousMapController.prototype.composeCreateMapMiddleware = function () { prepareAdapterMapConfig(this.mapConfigAdapter), createLayergroup ( this.mapBackend, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTables ), @@ -166,7 +166,7 @@ function prepareAdapterMapConfig (mapConfigAdapter) { }; } -function createLayergroup (mapBackend, userLimitsApi, pgConnection, affectedTablesCache) { +function createLayergroup (mapBackend, userLimitsBackend, pgConnection, affectedTablesCache) { return function createLayergroupMiddleware (req, res, next) { const requestMapConfig = req.body; @@ -185,7 +185,7 @@ function createLayergroup (mapBackend, userLimitsApi, pgConnection, affectedTabl const mapConfigProvider = new CreateLayergroupMapConfigProvider( mapConfig, user, - userLimitsApi, + userLimitsBackend, pgConnection, affectedTablesCache, params diff --git a/lib/cartodb/api/map/attributes-layergroup-controller.js b/lib/cartodb/api/map/attributes-layergroup-controller.js index 17af3df7..ef9614fc 100644 --- a/lib/cartodb/api/map/attributes-layergroup-controller.js +++ b/lib/cartodb/api/map/attributes-layergroup-controller.js @@ -16,7 +16,7 @@ module.exports = class AttributesLayergroupController { attributesBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -24,7 +24,7 @@ module.exports = class AttributesLayergroupController { this.attributesBackend = attributesBackend; this.pgConnection = pgConnection; this.mapStore = mapStore; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; @@ -37,11 +37,11 @@ module.exports = class AttributesLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.ATTRIBUTES), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.ATTRIBUTES), cleanUpQueryParams(), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), diff --git a/lib/cartodb/api/map/dataview-layergroup-controller.js b/lib/cartodb/api/map/dataview-layergroup-controller.js index 84b4c905..0b6f8cc9 100644 --- a/lib/cartodb/api/map/dataview-layergroup-controller.js +++ b/lib/cartodb/api/map/dataview-layergroup-controller.js @@ -31,7 +31,7 @@ module.exports = class DataviewLayergroupController { dataviewBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -39,7 +39,7 @@ module.exports = class DataviewLayergroupController { this.dataviewBackend = dataviewBackend; this.pgConnection = pgConnection; this.mapStore = mapStore; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; @@ -55,11 +55,11 @@ module.exports = class DataviewLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), @@ -76,11 +76,11 @@ module.exports = class DataviewLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), @@ -97,11 +97,11 @@ module.exports = class DataviewLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW_SEARCH), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW_SEARCH), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), @@ -118,11 +118,11 @@ module.exports = class DataviewLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW_SEARCH), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.DATAVIEW_SEARCH), cleanUpQueryParams(ALLOWED_DATAVIEW_QUERY_PARAMS), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), diff --git a/lib/cartodb/api/map/map-router.js b/lib/cartodb/api/map/map-router.js index 78b87d1e..a6e91c29 100644 --- a/lib/cartodb/api/map/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -19,7 +19,7 @@ module.exports = class MapRouter { tileBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache, @@ -37,7 +37,7 @@ module.exports = class MapRouter { analysisStatusBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -47,7 +47,7 @@ module.exports = class MapRouter { attributesBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -57,7 +57,7 @@ module.exports = class MapRouter { dataviewBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -67,7 +67,7 @@ module.exports = class MapRouter { previewBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -77,7 +77,7 @@ module.exports = class MapRouter { tileBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -89,7 +89,7 @@ module.exports = class MapRouter { mapBackend, metadataBackend, surrogateKeysCache, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, mapConfigAdapter, statsBackend, @@ -105,13 +105,13 @@ module.exports = class MapRouter { metadataBackend, pgConnection, authBackend, - userLimitsApi + userLimitsBackend ); this.analysesController = new AnalysesCatalogController( pgConnection, authBackend, - userLimitsApi + userLimitsBackend ); } diff --git a/lib/cartodb/api/map/preview-layergroup-controller.js b/lib/cartodb/api/map/preview-layergroup-controller.js index 484b831c..dcacc4f5 100644 --- a/lib/cartodb/api/map/preview-layergroup-controller.js +++ b/lib/cartodb/api/map/preview-layergroup-controller.js @@ -16,7 +16,7 @@ module.exports = class PreviewLayergroupController { previewBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -24,7 +24,7 @@ module.exports = class PreviewLayergroupController { this.previewBackend = previewBackend; this.pgConnection = pgConnection; this.mapStore = mapStore; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; @@ -39,11 +39,11 @@ module.exports = class PreviewLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC), cleanUpQueryParams(['layer']), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache, forcedFormat @@ -61,11 +61,11 @@ module.exports = class PreviewLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC), cleanUpQueryParams(['layer']), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache, forcedFormat diff --git a/lib/cartodb/api/map/preview-template-controller.js b/lib/cartodb/api/map/preview-template-controller.js index acf58a91..91a3f5b6 100644 --- a/lib/cartodb/api/map/preview-template-controller.js +++ b/lib/cartodb/api/map/preview-template-controller.js @@ -30,7 +30,7 @@ function PreviewTemplateController ( metadataBackend, pgConnection, authBackend, - userLimitsApi + userLimitsBackend ) { this.namedMapProviderCache = namedMapProviderCache; this.previewBackend = previewBackend; @@ -39,7 +39,7 @@ function PreviewTemplateController ( this.metadataBackend = metadataBackend; this.pgConnection = pgConnection; this.authBackend = authBackend; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; } module.exports = PreviewTemplateController; @@ -50,7 +50,7 @@ PreviewTemplateController.prototype.register = function (mapRouter) { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC_NAMED), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.STATIC_NAMED), cleanUpQueryParams(['layer', 'zoom', 'lon', 'lat', 'bbox']), namedMapProvider({ namedMapProviderCache: this.namedMapProviderCache, diff --git a/lib/cartodb/api/map/tile-layergroup-controller.js b/lib/cartodb/api/map/tile-layergroup-controller.js index d747d040..40d85b7c 100644 --- a/lib/cartodb/api/map/tile-layergroup-controller.js +++ b/lib/cartodb/api/map/tile-layergroup-controller.js @@ -26,7 +26,7 @@ module.exports = class TileLayergroupController { tileBackend, pgConnection, mapStore, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, authBackend, surrogateKeysCache @@ -34,7 +34,7 @@ module.exports = class TileLayergroupController { this.tileBackend = tileBackend; this.pgConnection = pgConnection; this.mapStore = mapStore; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; this.authBackend = authBackend; this.surrogateKeysCache = surrogateKeysCache; @@ -52,11 +52,11 @@ module.exports = class TileLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), cleanUpQueryParams(), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), @@ -77,11 +77,11 @@ module.exports = class TileLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), cleanUpQueryParams(), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), @@ -102,11 +102,11 @@ module.exports = class TileLayergroupController { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), cleanUpQueryParams(), createMapStoreMapConfigProvider( this.mapStore, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTablesCache ), diff --git a/lib/cartodb/api/middlewares/map-store-map-config-provider.js b/lib/cartodb/api/middlewares/map-store-map-config-provider.js index f84dd3fc..58cdb79e 100644 --- a/lib/cartodb/api/middlewares/map-store-map-config-provider.js +++ b/lib/cartodb/api/middlewares/map-store-map-config-provider.js @@ -2,7 +2,7 @@ const MapStoreMapConfigProvider = require('../../models/mapconfig/provider/map-s module.exports = function createMapStoreMapConfigProvider ( mapStore, - userLimitsApi, + userLimitsBackend, pgConnection, affectedTablesCache, forcedFormat = null @@ -26,7 +26,7 @@ module.exports = function createMapStoreMapConfigProvider ( res.locals.mapConfigProvider = new MapStoreMapConfigProvider( mapStore, user, - userLimitsApi, + userLimitsBackend, pgConnection, affectedTablesCache, params diff --git a/lib/cartodb/api/middlewares/rate-limit.js b/lib/cartodb/api/middlewares/rate-limit.js index b3c6d7fe..55062d76 100644 --- a/lib/cartodb/api/middlewares/rate-limit.js +++ b/lib/cartodb/api/middlewares/rate-limit.js @@ -19,13 +19,13 @@ const RATE_LIMIT_ENDPOINTS_GROUPS = { NAMED_TILES: 'named_tiles' }; -function rateLimit(userLimitsApi, endpointGroup = null) { +function rateLimit(userLimitsBackend, endpointGroup = null) { if (!isRateLimitEnabled(endpointGroup)) { return function rateLimitDisabledMiddleware(req, res, next) { next(); }; } return function rateLimitMiddleware(req, res, next) { - userLimitsApi.getRateLimit(res.locals.user, endpointGroup, function (err, userRateLimit) { + userLimitsBackend.getRateLimit(res.locals.user, endpointGroup, function (err, userRateLimit) { if (err) { return next(err); } diff --git a/lib/cartodb/api/template/admin-template-controller.js b/lib/cartodb/api/template/admin-template-controller.js index e79f6bd9..b4d1b65f 100644 --- a/lib/cartodb/api/template/admin-template-controller.js +++ b/lib/cartodb/api/template/admin-template-controller.js @@ -9,10 +9,10 @@ const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; * @param {TemplateMaps} templateMaps * @constructor */ -function AdminTemplateController(authBackend, templateMaps, userLimitsApi) { +function AdminTemplateController(authBackend, templateMaps, userLimitsBackend) { this.authBackend = authBackend; this.templateMaps = templateMaps; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; } module.exports = AdminTemplateController; @@ -24,7 +24,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { `/`, credentials(), authorizedByAPIKey({ authBackend: this.authBackend, action: 'create', label: 'POST TEMPLATE' }), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_CREATE), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_CREATE), checkContentType({ action: 'POST', label: 'POST TEMPLATE' }), createTemplate({ templateMaps: this.templateMaps }) ); @@ -33,7 +33,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { `/:template_id`, credentials(), authorizedByAPIKey({ authBackend: this.authBackend, action: 'update', label: 'PUT TEMPLATE' }), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_UPDATE), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_UPDATE), checkContentType({ action: 'PUT', label: 'PUT TEMPLATE' }), updateTemplate({ templateMaps: this.templateMaps }) ); @@ -42,7 +42,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { `/:template_id`, credentials(), authorizedByAPIKey({ authBackend: this.authBackend, action: 'get', label: 'GET TEMPLATE' }), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_GET), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_GET), retrieveTemplate({ templateMaps: this.templateMaps }) ); @@ -50,7 +50,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { `/:template_id`, credentials(), authorizedByAPIKey({ authBackend: this.authBackend, action: 'delete', label: 'DELETE TEMPLATE' }), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_DELETE), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_DELETE), destroyTemplate({ templateMaps: this.templateMaps }) ); @@ -58,7 +58,7 @@ AdminTemplateController.prototype.register = function (templateRouter) { `/`, credentials(), authorizedByAPIKey({ authBackend: this.authBackend, action: 'list', label: 'GET TEMPLATE LIST' }), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_LIST), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_LIST), listTemplates({ templateMaps: this.templateMaps }) ); }; diff --git a/lib/cartodb/api/template/named-template-controller.js b/lib/cartodb/api/template/named-template-controller.js index f61d5dc7..eed39b34 100644 --- a/lib/cartodb/api/template/named-template-controller.js +++ b/lib/cartodb/api/template/named-template-controller.js @@ -27,7 +27,7 @@ const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; * @param {MapBackend} mapBackend * @param metadataBackend * @param {SurrogateKeysCache} surrogateKeysCache - * @param {UserLimitsApi} userLimitsApi + * @param {UserLimitsBackend} userLimitsBackend * @param {LayergroupAffectedTables} layergroupAffectedTables * @param {MapConfigAdapter} mapConfigAdapter * @param {StatsBackend} statsBackend @@ -39,7 +39,7 @@ function NamedMapController ( mapBackend, metadataBackend, surrogateKeysCache, - userLimitsApi, + userLimitsBackend, layergroupAffectedTables, mapConfigAdapter, statsBackend, @@ -51,7 +51,7 @@ function NamedMapController ( this.mapBackend = mapBackend; this.metadataBackend = metadataBackend; this.surrogateKeysCache = surrogateKeysCache; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.layergroupAffectedTables = layergroupAffectedTables; this.mapConfigAdapter = mapConfigAdapter; this.statsBackend = statsBackend; @@ -84,7 +84,7 @@ NamedMapController.prototype.composeInstantiateTemplateMiddleware = function () credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED), cleanUpQueryParams(['aggregation']), initProfiler(isTemplateInstantiation), checkJsonContentType(), @@ -93,13 +93,13 @@ NamedMapController.prototype.composeInstantiateTemplateMiddleware = function () this.templateMaps, this.pgConnection, this.metadataBackend, - this.userLimitsApi, + this.userLimitsBackend, this.mapConfigAdapter, this.layergroupAffectedTables ), instantiateLayergroup( this.mapBackend, - this.userLimitsApi, + this.userLimitsBackend, this.pgConnection, this.layergroupAffectedTables ), @@ -145,7 +145,7 @@ function getTemplate ( templateMaps, pgConnection, metadataBackend, - userLimitsApi, + userLimitsBackend, mapConfigAdapter, affectedTablesCache ) { @@ -161,7 +161,7 @@ function getTemplate ( templateMaps, pgConnection, metadataBackend, - userLimitsApi, + userLimitsBackend, mapConfigAdapter, affectedTablesCache, user, @@ -186,13 +186,13 @@ function getTemplate ( }; } -function instantiateLayergroup (mapBackend, userLimitsApi, pgConnection, affectedTablesCache) { +function instantiateLayergroup (mapBackend, userLimitsBackend, pgConnection, affectedTablesCache) { return function instantiateLayergroupMiddleware (req, res, next) { const { user, mapConfig, rendererParams } = res.locals; const mapConfigProvider = new CreateLayergroupMapConfigProvider( mapConfig, user, - userLimitsApi, + userLimitsBackend, pgConnection, affectedTablesCache, rendererParams diff --git a/lib/cartodb/api/template/template-router.js b/lib/cartodb/api/template/template-router.js index 87f381d1..643e83c3 100644 --- a/lib/cartodb/api/template/template-router.js +++ b/lib/cartodb/api/template/template-router.js @@ -12,7 +12,7 @@ module.exports = class TemplateRouter { mapBackend, metadataBackend, surrogateKeysCache, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, mapConfigAdapter, statsBackend, @@ -28,7 +28,7 @@ module.exports = class TemplateRouter { mapBackend, metadataBackend, surrogateKeysCache, - userLimitsApi, + userLimitsBackend, layergroupAffectedTablesCache, mapConfigAdapter, statsBackend, @@ -42,13 +42,13 @@ module.exports = class TemplateRouter { surrogateKeysCache, pgConnection, authBackend, - userLimitsApi + userLimitsBackend ); this.adminTemplateController = new AdminTemplateController( authBackend, templateMaps, - userLimitsApi + userLimitsBackend ); } diff --git a/lib/cartodb/api/template/tile-template-controller.js b/lib/cartodb/api/template/tile-template-controller.js index 5e2cb72b..c99a0aea 100644 --- a/lib/cartodb/api/template/tile-template-controller.js +++ b/lib/cartodb/api/template/tile-template-controller.js @@ -17,14 +17,14 @@ function TileTemplateController ( surrogateKeysCache, pgConnection, authBackend, - userLimitsApi + userLimitsBackend ) { this.namedMapProviderCache = namedMapProviderCache; this.tileBackend = tileBackend; this.surrogateKeysCache = surrogateKeysCache; this.pgConnection = pgConnection; this.authBackend = authBackend; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; } module.exports = TileTemplateController; @@ -35,7 +35,7 @@ TileTemplateController.prototype.register = function (templateRouter) { credentials(), authorize(this.authBackend), dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsApi, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_TILES), + rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.NAMED_TILES), cleanUpQueryParams(), namedMapProvider({ namedMapProviderCache: this.namedMapProviderCache, diff --git a/lib/cartodb/backends/api/user_limits_api.js b/lib/cartodb/backends/user-limits.js similarity index 81% rename from lib/cartodb/backends/api/user_limits_api.js rename to lib/cartodb/backends/user-limits.js index caf9f151..519f1cd1 100644 --- a/lib/cartodb/backends/api/user_limits_api.js +++ b/lib/cartodb/backends/user-limits.js @@ -5,9 +5,9 @@ var step = require('step'); * @param metadataBackend * @param options * @constructor - * @type {UserLimitsApi} + * @type {UserLimitsBackend} */ -function UserLimitsApi(metadataBackend, options) { +function UserLimitsBackend(metadataBackend, options) { this.metadataBackend = metadataBackend; this.options = options || {}; this.options.limits = this.options.limits || {}; @@ -15,9 +15,9 @@ function UserLimitsApi(metadataBackend, options) { this.preprareRateLimit(); } -module.exports = UserLimitsApi; +module.exports = UserLimitsBackend; -UserLimitsApi.prototype.getRenderLimits = function (username, apiKey, callback) { +UserLimitsBackend.prototype.getRenderLimits = function (username, apiKey, callback) { var self = this; var limits = { @@ -40,7 +40,7 @@ UserLimitsApi.prototype.getRenderLimits = function (username, apiKey, callback) }); }; -UserLimitsApi.prototype.getTimeoutRenderLimit = function (username, apiKey, callback) { +UserLimitsBackend.prototype.getTimeoutRenderLimit = function (username, apiKey, callback) { var self = this; step( @@ -80,12 +80,12 @@ UserLimitsApi.prototype.getTimeoutRenderLimit = function (username, apiKey, call ); }; -UserLimitsApi.prototype.preprareRateLimit = function () { +UserLimitsBackend.prototype.preprareRateLimit = function () { if (this.options.limits.rateLimitsEnabled) { this.metadataBackend.loadRateLimitsScript(); } }; -UserLimitsApi.prototype.getRateLimit = function (user, endpointGroup, callback) { +UserLimitsBackend.prototype.getRateLimit = function (user, endpointGroup, callback) { this.metadataBackend.getRateLimit(user, 'maps', endpointGroup, callback); }; diff --git a/lib/cartodb/cache/named_map_provider_cache.js b/lib/cartodb/cache/named_map_provider_cache.js index e0850822..b64decb1 100644 --- a/lib/cartodb/cache/named_map_provider_cache.js +++ b/lib/cartodb/cache/named_map_provider_cache.js @@ -10,14 +10,14 @@ function NamedMapProviderCache( templateMaps, pgConnection, metadataBackend, - userLimitsApi, + userLimitsBackend, mapConfigAdapter, affectedTablesCache ) { this.templateMaps = templateMaps; this.pgConnection = pgConnection; this.metadataBackend = metadataBackend; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.mapConfigAdapter = mapConfigAdapter; this.affectedTablesCache = affectedTablesCache; @@ -36,7 +36,7 @@ NamedMapProviderCache.prototype.get = function(user, templateId, config, authTok this.templateMaps, this.pgConnection, this.metadataBackend, - this.userLimitsApi, + this.userLimitsBackend, this.mapConfigAdapter, this.affectedTablesCache, user, diff --git a/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js b/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js index b3b3f191..fe92bb47 100644 --- a/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js +++ b/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js @@ -7,16 +7,16 @@ const QueryTables = require('cartodb-query-tables'); /** * @param {MapConfig} mapConfig * @param {String} user - * @param {UserLimitsApi} userLimitsApi + * @param {UserLimitsBackend} userLimitsBackend * @param {Object} params * @constructor * @type {CreateLayergroupMapConfigProvider} */ -function CreateLayergroupMapConfigProvider(mapConfig, user, userLimitsApi, pgConnection, affectedTablesCache, params) { +function CreateLayergroupMapConfigProvider(mapConfig, user, userLimitsBackend, pgConnection, affectedTablesCache, params) { this.mapConfig = mapConfig; this.user = user; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.pgConnection = pgConnection; this.affectedTablesCache = affectedTablesCache; this.params = params; @@ -36,7 +36,7 @@ CreateLayergroupMapConfigProvider.prototype.getMapConfig = function(callback) { step( function prepareContextLimits() { - self.userLimitsApi.getRenderLimits(self.user, self.params.api_key, this); + self.userLimitsBackend.getRenderLimits(self.user, self.params.api_key, this); }, function handleRenderLimits(err, renderLimits) { assert.ifError(err); diff --git a/lib/cartodb/models/mapconfig/provider/map-store-provider.js b/lib/cartodb/models/mapconfig/provider/map-store-provider.js index f89a79ce..d57c8d7b 100644 --- a/lib/cartodb/models/mapconfig/provider/map-store-provider.js +++ b/lib/cartodb/models/mapconfig/provider/map-store-provider.js @@ -7,15 +7,15 @@ const QueryTables = require('cartodb-query-tables'); /** * @param {MapStore} mapStore * @param {String} user - * @param {UserLimitsApi} userLimitsApi + * @param {UserLimitsBackend} userLimitsBackend * @param {Object} params * @constructor * @type {MapStoreMapConfigProvider} */ -function MapStoreMapConfigProvider(mapStore, user, userLimitsApi, pgConnection, affectedTablesCache, params) { +function MapStoreMapConfigProvider(mapStore, user, userLimitsBackend, pgConnection, affectedTablesCache, params) { this.mapStore = mapStore; this.user = user; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.pgConnection = pgConnection; this.affectedTablesCache = affectedTablesCache; this.token = params.token; @@ -38,7 +38,7 @@ MapStoreMapConfigProvider.prototype.getMapConfig = function(callback) { step( function prepareContextLimits() { - self.userLimitsApi.getRenderLimits(self.user, self.params.api_key, this); + self.userLimitsBackend.getRenderLimits(self.user, self.params.api_key, this); }, function handleRenderLimits(err, renderLimits) { assert.ifError(err); diff --git a/lib/cartodb/models/mapconfig/provider/named-map-provider.js b/lib/cartodb/models/mapconfig/provider/named-map-provider.js index 50612065..5e931679 100644 --- a/lib/cartodb/models/mapconfig/provider/named-map-provider.js +++ b/lib/cartodb/models/mapconfig/provider/named-map-provider.js @@ -15,7 +15,7 @@ function NamedMapMapConfigProvider( templateMaps, pgConnection, metadataBackend, - userLimitsApi, + userLimitsBackend, mapConfigAdapter, affectedTablesCache, owner, @@ -27,7 +27,7 @@ function NamedMapMapConfigProvider( this.templateMaps = templateMaps; this.pgConnection = pgConnection; this.metadataBackend = metadataBackend; - this.userLimitsApi = userLimitsApi; + this.userLimitsBackend = userLimitsBackend; this.mapConfigAdapter = mapConfigAdapter; this.owner = owner; @@ -125,7 +125,7 @@ NamedMapMapConfigProvider.prototype.getMapConfig = function(callback) { function prepareContextLimits(err, _mapConfig) { assert.ifError(err); mapConfig = _mapConfig; - self.userLimitsApi.getRenderLimits(self.owner, self.params.api_key, this); + self.userLimitsBackend.getRenderLimits(self.owner, self.params.api_key, this); }, function cacheAndReturnMapConfig(err, renderLimits) { self.err = err; diff --git a/test/acceptance/rate-limit.test.js b/test/acceptance/rate-limit.test.js index 5b7cdbc0..925d5028 100644 --- a/test/acceptance/rate-limit.test.js +++ b/test/acceptance/rate-limit.test.js @@ -5,7 +5,7 @@ const redis = require('redis'); const RedisPool = require('redis-mpool'); const cartodbRedis = require('cartodb-redis'); const TestClient = require('../support/test-client'); -const UserLimitsApi = require('../../lib/cartodb/backends/api/user_limits_api'); +const UserLimitsBackend = require('../../lib/cartodb/backends/user-limits'); const rateLimitMiddleware = require('../../lib/cartodb/api/middlewares/rate-limit'); const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimitMiddleware; @@ -218,7 +218,7 @@ describe('rate limit middleware', function () { const redisPool = new RedisPool(global.environment.redis); const metadataBackend = cartodbRedis({ pool: redisPool }); - userLimitsApi = new UserLimitsApi(metadataBackend, { + userLimitsApi = new UserLimitsBackend(metadataBackend, { limits: { rateLimitsEnabled: global.environment.enabledFeatures.rateLimitsEnabled } From 1bbd84b37a514581d7a7dfa2b817e4250b71ee83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 10 Apr 2018 15:56:52 +0200 Subject: [PATCH 09/19] Please jshint --- .../mapconfig/provider/create-layergroup-provider.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js b/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js index fe92bb47..7e48a9bb 100644 --- a/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js +++ b/lib/cartodb/models/mapconfig/provider/create-layergroup-provider.js @@ -13,7 +13,14 @@ const QueryTables = require('cartodb-query-tables'); * @type {CreateLayergroupMapConfigProvider} */ -function CreateLayergroupMapConfigProvider(mapConfig, user, userLimitsBackend, pgConnection, affectedTablesCache, params) { +function CreateLayergroupMapConfigProvider( + mapConfig, + user, + userLimitsBackend, + pgConnection, + affectedTablesCache, + params +) { this.mapConfig = mapConfig; this.user = user; this.userLimitsBackend = userLimitsBackend; From c0943a7c580d9b355f7cec4b4b67ca162f03549c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 10 Apr 2018 20:26:36 +0200 Subject: [PATCH 10/19] Use config to define base path for express routers --- lib/cartodb/api/api-router.js | 11 +++-------- lib/cartodb/api/map/map-router.js | 9 ++++----- lib/cartodb/api/template/template-router.js | 9 ++++----- lib/cartodb/server_options.js | 13 +++++++++++++ .../ported/support/ported_server_options.js | 14 ++++++++++++++ 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index 7108bbbf..d75d23a5 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -176,8 +176,8 @@ module.exports = class ApiRouter { tablesExtentBackend }; - this.mapRouter = new MapRouter({ collaborators }); - this.templateRouter = new TemplateRouter({ collaborators }); + this.mapRouter = new MapRouter({ collaborators, serverOptions }); + this.templateRouter = new TemplateRouter({ collaborators, serverOptions }); } register (app) { @@ -206,12 +206,7 @@ module.exports = class ApiRouter { apiRouter.use(syntaxError()); apiRouter.use(errorMiddleware()); - const paths = [ - '/api/v1', - '/user/:user/api/v1', - '/tiles', // Deprecated - '/database/:dbname' // Deprecated: used in ported test from windshaft - ]; + const paths = this.serverOptions.api_base_paths; app.use(`(?:${paths.join('|')})`, apiRouter); } diff --git a/lib/cartodb/api/map/map-router.js b/lib/cartodb/api/map/map-router.js index a6e91c29..e8a3c2fb 100644 --- a/lib/cartodb/api/map/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -10,7 +10,9 @@ const PreviewTemplateController = require('./preview-template-controller'); const AnalysesCatalogController = require('./analyses-catalog-controller'); module.exports = class MapRouter { - constructor ({ collaborators }) { + constructor ({ collaborators, serverOptions }) { + this.serverOptions = serverOptions; + const { analysisStatusBackend, attributesBackend, @@ -127,10 +129,7 @@ module.exports = class MapRouter { this.previewTemplateController.register(mapRouter); this.analysesController.register(mapRouter); - const paths = [ - '/map', - '/layergroup' - ]; + const paths = this.serverOptions.map_base_paths; apiRouter.use(`(?:${paths.join('|')})`, mapRouter); } diff --git a/lib/cartodb/api/template/template-router.js b/lib/cartodb/api/template/template-router.js index 643e83c3..9b759f0a 100644 --- a/lib/cartodb/api/template/template-router.js +++ b/lib/cartodb/api/template/template-router.js @@ -5,7 +5,9 @@ const AdminTemplateController = require('./admin-template-controller'); const TileTemplateController = require('./tile-template-controller'); module.exports = class TemplateRouter { - constructor ({ collaborators }) { + constructor ({ collaborators, serverOptions }) { + this.serverOptions = serverOptions; + const { pgConnection, templateMaps, @@ -59,10 +61,7 @@ module.exports = class TemplateRouter { this.tileTemplateController.register(templateRouter); this.adminTemplateController.register(templateRouter); - const paths = [ - '/map/named', - '/template' - ]; + const paths = this.serverOptions.template_base_paths; apiRouter.use(`(?:${paths.join('|')})`, templateRouter); } diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index adc03003..c73a6bca 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -67,6 +67,19 @@ module.exports = { // FIXME: Remove it. This is no longer needed, paths are defined in routers base_url_templated: global.environment.base_url_templated || '(?:/maps/named|/tiles/template)', + api_base_paths: global.environment.api_base_paths || [ + '/api/v1', + '/user/:user/api/v1' + ], + + map_base_paths: global.environment.map_base_paths || [ + '/map' + ], + + template_base_paths: global.environment.template_base_paths || [ + '/map/named' + ], + grainstore: { map: { // TODO: allow to specify in configuration diff --git a/test/acceptance/ported/support/ported_server_options.js b/test/acceptance/ported/support/ported_server_options.js index 1ce262af..931fa584 100644 --- a/test/acceptance/ported/support/ported_server_options.js +++ b/test/acceptance/ported/support/ported_server_options.js @@ -11,6 +11,20 @@ module.exports = _.extend({}, serverOptions, { base_url: '/database/:dbname/table/:table', // FIXME: Remove it. This is no longer needed, paths are defined in routers base_url_mapconfig: '/database/:dbname/layergroup', + + api_base_paths: [ + '/tiles', + '/database/:dbname' + ], + + map_base_paths: [ + '/layergroup' + ], + + template_base_paths: [ + '/template' + ], + grainstore: { datasource: { geometry_field: 'the_geom', From e06d3200c31f4e9e15b444980653d4c450f7f31e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 11 Apr 2018 12:33:07 +0200 Subject: [PATCH 11/19] Use a better API to define public routes --- lib/cartodb/api/api-router.js | 2 +- lib/cartodb/api/map/map-router.js | 2 +- lib/cartodb/api/template/template-router.js | 2 +- lib/cartodb/server_options.js | 30 +++++++++++-------- .../ported/support/ported_server_options.js | 30 +++++++++++-------- 5 files changed, 39 insertions(+), 27 deletions(-) diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index d75d23a5..b122a343 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -206,7 +206,7 @@ module.exports = class ApiRouter { apiRouter.use(syntaxError()); apiRouter.use(errorMiddleware()); - const paths = this.serverOptions.api_base_paths; + const paths = this.serverOptions.routes.api.paths; app.use(`(?:${paths.join('|')})`, apiRouter); } diff --git a/lib/cartodb/api/map/map-router.js b/lib/cartodb/api/map/map-router.js index e8a3c2fb..ae681168 100644 --- a/lib/cartodb/api/map/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -129,7 +129,7 @@ module.exports = class MapRouter { this.previewTemplateController.register(mapRouter); this.analysesController.register(mapRouter); - const paths = this.serverOptions.map_base_paths; + const paths = this.serverOptions.routes.api.map.paths; apiRouter.use(`(?:${paths.join('|')})`, mapRouter); } diff --git a/lib/cartodb/api/template/template-router.js b/lib/cartodb/api/template/template-router.js index 9b759f0a..cfb883e7 100644 --- a/lib/cartodb/api/template/template-router.js +++ b/lib/cartodb/api/template/template-router.js @@ -61,7 +61,7 @@ module.exports = class TemplateRouter { this.tileTemplateController.register(templateRouter); this.adminTemplateController.register(templateRouter); - const paths = this.serverOptions.template_base_paths; + const paths = this.serverOptions.routes.api.template.paths; apiRouter.use(`(?:${paths.join('|')})`, templateRouter); } diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index c73a6bca..d05e5e1d 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -67,18 +67,24 @@ module.exports = { // FIXME: Remove it. This is no longer needed, paths are defined in routers base_url_templated: global.environment.base_url_templated || '(?:/maps/named|/tiles/template)', - api_base_paths: global.environment.api_base_paths || [ - '/api/v1', - '/user/:user/api/v1' - ], - - map_base_paths: global.environment.map_base_paths || [ - '/map' - ], - - template_base_paths: global.environment.template_base_paths || [ - '/map/named' - ], + routes: global.environment.routes || { + api: { + paths: [ + '/api/v1', + '/user/:user/api/v1' + ], + map: { + paths: [ + '/map' + ] + }, + template: { + paths: [ + '/map/named' + ] + } + } + }, grainstore: { map: { diff --git a/test/acceptance/ported/support/ported_server_options.js b/test/acceptance/ported/support/ported_server_options.js index 931fa584..d850b1c9 100644 --- a/test/acceptance/ported/support/ported_server_options.js +++ b/test/acceptance/ported/support/ported_server_options.js @@ -12,18 +12,24 @@ module.exports = _.extend({}, serverOptions, { // FIXME: Remove it. This is no longer needed, paths are defined in routers base_url_mapconfig: '/database/:dbname/layergroup', - api_base_paths: [ - '/tiles', - '/database/:dbname' - ], - - map_base_paths: [ - '/layergroup' - ], - - template_base_paths: [ - '/template' - ], + routes: { + api: { + paths: [ + '/tiles', + '/database/:dbname' + ], + map: { + paths: [ + '/layergroup' + ] + }, + template: { + paths: [ + '/template' + ] + } + } + }, grainstore: { datasource: { From 9a52edacb2a7ac56659af060bb490e34e6956c19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 11 Apr 2018 16:00:14 +0200 Subject: [PATCH 12/19] Add routes configuration to config example files --- config/environments/development.js.example | 34 ++++++++++++++++++++++ config/environments/production.js.example | 34 ++++++++++++++++++++++ config/environments/staging.js.example | 34 ++++++++++++++++++++++ 3 files changed, 102 insertions(+) diff --git a/config/environments/development.js.example b/config/environments/development.js.example index 12de0912..95711dad 100644 --- a/config/environments/development.js.example +++ b/config/environments/development.js.example @@ -13,6 +13,8 @@ var config = { // from hostname. Must have a single grabbing block. ,user_from_host: '^(.*)\\.localhost' + // DEPRECATED: use routes property instead + // --------------------------------------- // Base URLs for the APIs // // See http://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API @@ -26,6 +28,38 @@ var config = { // "tiles/layergroup" is for compatibility with versions up to 1.6.x ,base_url_detached: '(?:/api/v1/map|/user/:user/api/v1/map|/tiles/layergroup)' + // Base URLs for the APIs + // + // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API + ,routes: { + api: { + // "/tiles" is for compatibility with versions up to 1.6.x + paths: [ + '/api/v1', + '/user/:user/api/v1', + '/tiles' // for compatibility with versions up to 1.6.x + ], + // Base url for the Detached Maps API + // "maps" is the the new API, + // "tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/map', + '/layergroup' + ] + }, + // Base url for the Templated Maps API + // "/api/v1/map/named" is the new API, + // "/tiles/template" is for compatibility with versions up to 1.6.x + template: { + paths: [ + '/map/named', + '/template' + ] + } + } + } + // Resource URLs expose endpoints to request/retrieve metadata associated to Maps: dataviews, analysis node status. // // This URLs depend on how `base_url_detached` and `user_from_host` are configured: the application can be diff --git a/config/environments/production.js.example b/config/environments/production.js.example index beb9f15c..7b552507 100644 --- a/config/environments/production.js.example +++ b/config/environments/production.js.example @@ -13,6 +13,8 @@ var config = { // from hostname. Must have a single grabbing block. ,user_from_host: '^(.*)\\.cartodb\\.com$' + // DEPRECATED: use routes property instead + // --------------------------------------- // Base URLs for the APIs // // See http://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API @@ -26,6 +28,38 @@ var config = { // "tiles/layergroup" is for compatibility with versions up to 1.6.x ,base_url_detached: '(?:/api/v1/map|/user/:user/api/v1/map|/tiles/layergroup)' + // Base URLs for the APIs + // + // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API + ,routes: { + api: { + // "/tiles" is for compatibility with versions up to 1.6.x + paths: [ + '/api/v1', + '/user/:user/api/v1', + '/tiles' // for compatibility with versions up to 1.6.x + ], + // Base url for the Detached Maps API + // "maps" is the the new API, + // "tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/map', + '/layergroup' + ] + }, + // Base url for the Templated Maps API + // "/api/v1/map/named" is the new API, + // "/tiles/template" is for compatibility with versions up to 1.6.x + template: { + paths: [ + '/map/named', + '/template' + ] + } + } + } + // Resource URLs expose endpoints to request/retrieve metadata associated to Maps: dataviews, analysis node status. // // This URLs depend on how `base_url_detached` and `user_from_host` are configured: the application can be diff --git a/config/environments/staging.js.example b/config/environments/staging.js.example index 40d3bb8b..29c15781 100644 --- a/config/environments/staging.js.example +++ b/config/environments/staging.js.example @@ -13,6 +13,8 @@ var config = { // from hostname. Must have a single grabbing block. ,user_from_host: '^(.*)\\.cartodb\\.com$' + // DEPRECATED: use routes property instead + // --------------------------------------- // Base URLs for the APIs // // See http://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API @@ -26,6 +28,38 @@ var config = { // "/tiles/layergroup" is for compatibility with versions up to 1.6.x ,base_url_detached: '(?:/api/v1/map|/user/:user/api/v1/map|/tiles/layergroup)' + // Base URLs for the APIs + // + // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API + ,routes: { + api: { + // "/tiles" is for compatibility with versions up to 1.6.x + paths: [ + '/api/v1', + '/user/:user/api/v1', + '/tiles' // for compatibility with versions up to 1.6.x + ], + // Base url for the Detached Maps API + // "maps" is the the new API, + // "tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/map', + '/layergroup' + ] + }, + // Base url for the Templated Maps API + // "/api/v1/map/named" is the new API, + // "/tiles/template" is for compatibility with versions up to 1.6.x + template: { + paths: [ + '/map/named', + '/template' + ] + } + } + } + // Resource URLs expose endpoints to request/retrieve metadata associated to Maps: dataviews, analysis node status. // // This URLs depend on how `base_url_detached` and `user_from_host` are configured: the application can be From 730b29c9cc5b5fbf5521f50ba72779a6271217f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 11 Apr 2018 18:51:44 +0200 Subject: [PATCH 13/19] Remove defined dependecies but never used --- .../api/map/analysis-layergroup-controller.js | 13 +------------ lib/cartodb/api/map/map-router.js | 5 +---- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/lib/cartodb/api/map/analysis-layergroup-controller.js b/lib/cartodb/api/map/analysis-layergroup-controller.js index 5d89803b..0e46dc81 100644 --- a/lib/cartodb/api/map/analysis-layergroup-controller.js +++ b/lib/cartodb/api/map/analysis-layergroup-controller.js @@ -8,22 +8,11 @@ const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit; const dbParamsFromResLocals = require('../../utils/database-params'); module.exports = class AnalysisLayergroupController { - constructor ( - analysisStatusBackend, - pgConnection, - mapStore, - userLimitsBackend, - layergroupAffectedTablesCache, - authBackend, - surrogateKeysCache - ) { + constructor (analysisStatusBackend, pgConnection, userLimitsBackend, authBackend) { this.analysisStatusBackend = analysisStatusBackend; this.pgConnection = pgConnection; - this.mapStore = mapStore; this.userLimitsBackend = userLimitsBackend; - this.layergroupAffectedTablesCache = layergroupAffectedTablesCache; this.authBackend = authBackend; - this.surrogateKeysCache = surrogateKeysCache; } register (mapRouter) { diff --git a/lib/cartodb/api/map/map-router.js b/lib/cartodb/api/map/map-router.js index ae681168..a3c2bbaa 100644 --- a/lib/cartodb/api/map/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -38,11 +38,8 @@ module.exports = class MapRouter { this.analysisLayergroupController = new AnalysisLayergroupController( analysisStatusBackend, pgConnection, - mapStore, userLimitsBackend, - layergroupAffectedTablesCache, - authBackend, - surrogateKeysCache + authBackend ); this.attributesLayergroupController = new AttributesLayergroupController( From 56495522b8a23d96db22789dd654ec6d032ee3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 18 Apr 2018 18:52:09 +0200 Subject: [PATCH 14/19] Use array of path to avoid collisions and extract scale-factor param properly --- .../api/map/tile-layergroup-controller.js | 32 ++----------------- 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/lib/cartodb/api/map/tile-layergroup-controller.js b/lib/cartodb/api/map/tile-layergroup-controller.js index c79929b7..2c049019 100644 --- a/lib/cartodb/api/map/tile-layergroup-controller.js +++ b/lib/cartodb/api/map/tile-layergroup-controller.js @@ -42,13 +42,11 @@ module.exports = class TileLayergroupController { } register (mapRouter) { - // REGEXP matches with positive and negative numnbers - const number = () => `(-?\\d+)`; // REGEXP doesn't match with `val` const not = (val) => `(?!${val})([^\/]+?)`; mapRouter.get( - `/:token/:z${number()}/:x${number()}/:y${number()}@:scale_factor${number()}?x.:format`, + [ `/:token/:z/:x/:y@:scale_factor?x.:format`, `/:token/:z/:x/:y.:format` ], layergroupToken(), coordinates(), credentials(), @@ -74,33 +72,7 @@ module.exports = class TileLayergroupController { ); mapRouter.get( - `/:token/:z${number()}/:x${number()}/:y${number()}.:format`, - layergroupToken(), - coordinates(), - credentials(), - authorize(this.authBackend), - dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), - cleanUpQueryParams(), - createMapStoreMapConfigProvider( - this.mapStore, - this.userLimitsBackend, - this.pgConnection, - this.layergroupAffectedTablesCache - ), - getTile(this.tileBackend, 'map_tile'), - cacheControlHeader(), - cacheChannelHeader(), - surrogateKeyHeader({ surrogateKeysCache: this.surrogateKeysCache }), - lastModifiedHeader(), - incrementSuccessMetrics(global.statsClient), - incrementErrorMetrics(global.statsClient), - tileError(), - vectorError() - ); - - mapRouter.get( - `/:token${not('static')}/:layer/:z${number()}/:x${number()}/:y${number()}.(:format)`, + `/:token${not('static')}/:layer/:z/:x/:y.(:format)`, layergroupToken(), coordinates(), credentials(), From 9bd9503e9bb22fd2b65ecdc2d032b913ab546b2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 18 Apr 2018 19:07:38 +0200 Subject: [PATCH 15/19] Merge paths to perform the same middleware stack --- .../api/map/tile-layergroup-controller.js | 39 ++++--------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/lib/cartodb/api/map/tile-layergroup-controller.js b/lib/cartodb/api/map/tile-layergroup-controller.js index 2c049019..f882d13c 100644 --- a/lib/cartodb/api/map/tile-layergroup-controller.js +++ b/lib/cartodb/api/map/tile-layergroup-controller.js @@ -45,8 +45,11 @@ module.exports = class TileLayergroupController { // REGEXP doesn't match with `val` const not = (val) => `(?!${val})([^\/]+?)`; - mapRouter.get( - [ `/:token/:z/:x/:y@:scale_factor?x.:format`, `/:token/:z/:x/:y.:format` ], + mapRouter.get([ + `/:token/:z/:x/:y@:scale_factor?x.:format`, + `/:token/:z/:x/:y.:format`, + `/:token${not('static')}/:layer/:z/:x/:y.(:format)` + ], layergroupToken(), coordinates(), credentials(), @@ -60,33 +63,7 @@ module.exports = class TileLayergroupController { this.pgConnection, this.layergroupAffectedTablesCache ), - getTile(this.tileBackend, 'map_tile'), - cacheControlHeader(), - cacheChannelHeader(), - surrogateKeyHeader({ surrogateKeysCache: this.surrogateKeysCache }), - lastModifiedHeader(), - incrementSuccessMetrics(global.statsClient), - incrementErrorMetrics(global.statsClient), - tileError(), - vectorError() - ); - - mapRouter.get( - `/:token${not('static')}/:layer/:z/:x/:y.(:format)`, - layergroupToken(), - coordinates(), - credentials(), - authorize(this.authBackend), - dbConnSetup(this.pgConnection), - rateLimit(this.userLimitsBackend, RATE_LIMIT_ENDPOINTS_GROUPS.TILE), - cleanUpQueryParams(), - createMapStoreMapConfigProvider( - this.mapStore, - this.userLimitsBackend, - this.pgConnection, - this.layergroupAffectedTablesCache - ), - getTile(this.tileBackend, 'maplayer_tile'), + getTile(this.tileBackend), cacheControlHeader(), cacheChannelHeader(), surrogateKeyHeader({ surrogateKeysCache: this.surrogateKeysCache }), @@ -108,9 +85,9 @@ function getStatusCode(tile, format){ return tile.length === 0 && format === 'mvt' ? 204 : 200; } -function getTile (tileBackend, profileLabel = 'tile') { +function getTile (tileBackend) { return function getTileMiddleware (req, res, next) { - req.profiler.start(`windshaft.${profileLabel}`); + req.profiler.start(`windshaft.${req.params.layer ? 'maplayer_tile' : 'map_tile'}`); const { mapConfigProvider } = res.locals; const { token } = res.locals; From 9feea665505eaeda50feea9246a1458286e06ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 9 May 2018 14:59:21 +0200 Subject: [PATCH 16/19] Use routes configuration to create and mount routes and controllers --- config/environments/development.js.example | 28 +++++++++--- config/environments/production.js.example | 28 +++++++++--- config/environments/staging.js.example | 28 +++++++++--- config/environments/test.js.example | 48 +++++++++++++++++++++ lib/cartodb/api/api-router.js | 44 ++++++++++--------- lib/cartodb/api/map/map-router.js | 10 ++--- lib/cartodb/api/template/template-router.js | 10 ++--- lib/cartodb/server_options.js | 33 ++++++++++++-- 8 files changed, 171 insertions(+), 58 deletions(-) diff --git a/config/environments/development.js.example b/config/environments/development.js.example index e11b2a28..f9c58abb 100644 --- a/config/environments/development.js.example +++ b/config/environments/development.js.example @@ -32,28 +32,42 @@ var config = { // // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API ,routes: { - api: { - // "/tiles" is for compatibility with versions up to 1.6.x + v1: { paths: [ '/api/v1', '/user/:user/api/v1', - '/tiles' // for compatibility with versions up to 1.6.x ], // Base url for the Detached Maps API - // "maps" is the the new API, - // "tiles/layergroup" is for compatibility with versions up to 1.6.x + // "/api/v1/map" is the new API, map: { paths: [ '/map', - '/layergroup' ] }, // Base url for the Templated Maps API // "/api/v1/map/named" is the new API, + template: { + paths: [ + '/map/named' + ] + } + }, + // For compatibility with versions up to 1.6.x + v0: { + paths: [ + '/tiles' + ], + // Base url for the Detached Maps API + // "/tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/layergroup' + ] + }, + // Base url for the Templated Maps API // "/tiles/template" is for compatibility with versions up to 1.6.x template: { paths: [ - '/map/named', '/template' ] } diff --git a/config/environments/production.js.example b/config/environments/production.js.example index 24eb18fd..89c5e5bd 100644 --- a/config/environments/production.js.example +++ b/config/environments/production.js.example @@ -32,28 +32,42 @@ var config = { // // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API ,routes: { - api: { - // "/tiles" is for compatibility with versions up to 1.6.x + v1: { paths: [ '/api/v1', '/user/:user/api/v1', - '/tiles' // for compatibility with versions up to 1.6.x ], // Base url for the Detached Maps API - // "maps" is the the new API, - // "tiles/layergroup" is for compatibility with versions up to 1.6.x + // "/api/v1/map" is the new API, map: { paths: [ '/map', - '/layergroup' ] }, // Base url for the Templated Maps API // "/api/v1/map/named" is the new API, + template: { + paths: [ + '/map/named' + ] + } + }, + // For compatibility with versions up to 1.6.x + v0: { + paths: [ + '/tiles' + ], + // Base url for the Detached Maps API + // "/tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/layergroup' + ] + }, + // Base url for the Templated Maps API // "/tiles/template" is for compatibility with versions up to 1.6.x template: { paths: [ - '/map/named', '/template' ] } diff --git a/config/environments/staging.js.example b/config/environments/staging.js.example index 28c66185..76353f9b 100644 --- a/config/environments/staging.js.example +++ b/config/environments/staging.js.example @@ -32,28 +32,42 @@ var config = { // // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API ,routes: { - api: { - // "/tiles" is for compatibility with versions up to 1.6.x + v1: { paths: [ '/api/v1', '/user/:user/api/v1', - '/tiles' // for compatibility with versions up to 1.6.x ], // Base url for the Detached Maps API - // "maps" is the the new API, - // "tiles/layergroup" is for compatibility with versions up to 1.6.x + // "/api/v1/map" is the new API, map: { paths: [ '/map', - '/layergroup' ] }, // Base url for the Templated Maps API // "/api/v1/map/named" is the new API, + template: { + paths: [ + '/map/named' + ] + } + }, + // For compatibility with versions up to 1.6.x + v0: { + paths: [ + '/tiles' + ], + // Base url for the Detached Maps API + // "/tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/layergroup' + ] + }, + // Base url for the Templated Maps API // "/tiles/template" is for compatibility with versions up to 1.6.x template: { paths: [ - '/map/named', '/template' ] } diff --git a/config/environments/test.js.example b/config/environments/test.js.example index 4d2c2d27..1f4e34a6 100644 --- a/config/environments/test.js.example +++ b/config/environments/test.js.example @@ -13,6 +13,8 @@ var config = { // from hostname. Must have a single grabbing block. ,user_from_host: '(.*)' + // DEPRECATED: use routes property instead + // --------------------------------------- // Base URLs for the APIs // // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API @@ -26,6 +28,52 @@ var config = { // "tiles/layergroup" is for compatibility with versions up to 1.6.x ,base_url_detached: '(?:/api/v1/map|/user/:user/api/v1/map|/tiles/layergroup)' + // Base URLs for the APIs + // + // See https://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API + ,routes: { + v1: { + paths: [ + '/api/v1', + '/user/:user/api/v1', + ], + // Base url for the Detached Maps API + // "/api/v1/map" is the new API, + map: { + paths: [ + '/map', + ] + }, + // Base url for the Templated Maps API + // "/api/v1/map/named" is the new API, + template: { + paths: [ + '/map/named' + ] + } + }, + // For compatibility with versions up to 1.6.x + v0: { + paths: [ + '/tiles' + ], + // Base url for the Detached Maps API + // "/tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/layergroup' + ] + }, + // Base url for the Templated Maps API + // "/tiles/template" is for compatibility with versions up to 1.6.x + template: { + paths: [ + '/template' + ] + } + } + } + // Resource URLs expose endpoints to request/retrieve metadata associated to Maps: dataviews, analysis node status. // // This URLs depend on how `base_url_detached` and `user_from_host` are configured: the application can be diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index ecffe562..5165007d 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -177,8 +177,8 @@ module.exports = class ApiRouter { tablesExtentBackend }; - this.mapRouter = new MapRouter({ collaborators, serverOptions }); - this.templateRouter = new TemplateRouter({ collaborators, serverOptions }); + this.mapRouter = new MapRouter({ collaborators }); + this.templateRouter = new TemplateRouter({ collaborators }); } register (app) { @@ -187,29 +187,33 @@ module.exports = class ApiRouter { app.layergroupAffectedTablesCache = this.layergroupAffectedTablesCache; } - const apiRouter = router(); + Object.keys(this.serverOptions.routes).forEach(apiVersion => { + const routes = this.serverOptions.routes[apiVersion]; - apiRouter.use(logger(this.serverOptions)); - apiRouter.use(bodyParser.json()); - apiRouter.use(servedByHostHeader()); - apiRouter.use(stats({ - enabled: this.serverOptions.useProfiler, - statsClient: global.statsClient - })); - apiRouter.use(lzmaMiddleware()); - apiRouter.use(cors()); - apiRouter.use(user()); + const apiRouter = router(); - this.templateRouter.register(apiRouter); - this.mapRouter.register(apiRouter); + apiRouter.use(logger(this.serverOptions)); + apiRouter.use(bodyParser.json()); + apiRouter.use(servedByHostHeader()); + apiRouter.use(stats({ + enabled: this.serverOptions.useProfiler, + statsClient: global.statsClient + })); + apiRouter.use(lzmaMiddleware()); + apiRouter.use(cors()); + apiRouter.use(user()); - apiRouter.use(sendResponse()); - apiRouter.use(syntaxError()); - apiRouter.use(errorMiddleware()); + this.templateRouter.register(apiRouter, routes.template.paths); + this.mapRouter.register(apiRouter, routes.map.paths); - const paths = this.serverOptions.routes.api.paths; + apiRouter.use(sendResponse()); + apiRouter.use(syntaxError()); + apiRouter.use(errorMiddleware()); - app.use(`(?:${paths.join('|')})`, apiRouter); + const apiPaths = routes.paths; + + apiPaths.forEach(path => app.use(path, apiRouter)); + }); } }; diff --git a/lib/cartodb/api/map/map-router.js b/lib/cartodb/api/map/map-router.js index a3c2bbaa..03f19937 100644 --- a/lib/cartodb/api/map/map-router.js +++ b/lib/cartodb/api/map/map-router.js @@ -10,9 +10,7 @@ const PreviewTemplateController = require('./preview-template-controller'); const AnalysesCatalogController = require('./analyses-catalog-controller'); module.exports = class MapRouter { - constructor ({ collaborators, serverOptions }) { - this.serverOptions = serverOptions; - + constructor ({ collaborators }) { const { analysisStatusBackend, attributesBackend, @@ -114,7 +112,7 @@ module.exports = class MapRouter { ); } - register (apiRouter) { + register (apiRouter, mapPaths) { const mapRouter = router(); this.analysisLayergroupController.register(mapRouter); @@ -126,8 +124,6 @@ module.exports = class MapRouter { this.previewTemplateController.register(mapRouter); this.analysesController.register(mapRouter); - const paths = this.serverOptions.routes.api.map.paths; - - apiRouter.use(`(?:${paths.join('|')})`, mapRouter); + mapPaths.forEach(path => apiRouter.use(path, mapRouter)); } }; diff --git a/lib/cartodb/api/template/template-router.js b/lib/cartodb/api/template/template-router.js index cfb883e7..9ddcf9fc 100644 --- a/lib/cartodb/api/template/template-router.js +++ b/lib/cartodb/api/template/template-router.js @@ -5,9 +5,7 @@ const AdminTemplateController = require('./admin-template-controller'); const TileTemplateController = require('./tile-template-controller'); module.exports = class TemplateRouter { - constructor ({ collaborators, serverOptions }) { - this.serverOptions = serverOptions; - + constructor ({ collaborators }) { const { pgConnection, templateMaps, @@ -54,15 +52,13 @@ module.exports = class TemplateRouter { ); } - register (apiRouter) { + register (apiRouter, templatePaths) { const templateRouter = router(); this.namedMapController.register(templateRouter); this.tileTemplateController.register(templateRouter); this.adminTemplateController.register(templateRouter); - const paths = this.serverOptions.routes.api.template.paths; - - apiRouter.use(`(?:${paths.join('|')})`, templateRouter); + templatePaths.forEach(path => apiRouter.use(path, templateRouter)); } }; diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index d05e5e1d..c3d0fdb8 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -67,22 +67,49 @@ module.exports = { // FIXME: Remove it. This is no longer needed, paths are defined in routers base_url_templated: global.environment.base_url_templated || '(?:/maps/named|/tiles/template)', + // Base URLs for the APIs + // + // See http://github.com/CartoDB/Windshaft-cartodb/wiki/Unified-Map-API routes: global.environment.routes || { - api: { + v1: { paths: [ '/api/v1', - '/user/:user/api/v1' + '/user/:user/api/v1', ], + // Base url for the Detached Maps API + // "/api/v1/map" is the new API, map: { paths: [ - '/map' + '/map', ] }, + // Base url for the Templated Maps API + // "/api/v1/map/named" is the new API, template: { paths: [ '/map/named' ] } + }, + // For compatibility with versions up to 1.6.x + v0: { + paths: [ + '/tiles' + ], + // Base url for the Detached Maps API + // "/tiles/layergroup" is for compatibility with versions up to 1.6.x + map: { + paths: [ + '/layergroup' + ] + }, + // Base url for the Templated Maps API + // "/tiles/template" is for compatibility with versions up to 1.6.x + template: { + paths: [ + '/template' + ] + } } }, From c51e2542870055965016ea7cfe2e60fb055dd83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 9 May 2018 15:00:18 +0200 Subject: [PATCH 17/19] Set 404 as defautl status code and set the proper status code fir the response at very same time that the response body --- lib/cartodb/api/api-router.js | 2 ++ lib/cartodb/api/map/analyses-catalog-controller.js | 1 + lib/cartodb/api/map/analysis-layergroup-controller.js | 1 + lib/cartodb/api/map/anonymous-map-controller.js | 1 + lib/cartodb/api/map/attributes-layergroup-controller.js | 1 + lib/cartodb/api/map/dataview-layergroup-controller.js | 2 ++ lib/cartodb/api/map/preview-layergroup-controller.js | 2 ++ lib/cartodb/api/map/preview-template-controller.js | 2 ++ lib/cartodb/api/middlewares/initialize-status-code.js | 6 ++++++ lib/cartodb/api/middlewares/send-response.js | 2 +- lib/cartodb/api/template/admin-template-controller.js | 4 ++++ lib/cartodb/api/template/named-template-controller.js | 1 + lib/cartodb/api/template/tile-template-controller.js | 1 + 13 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 lib/cartodb/api/middlewares/initialize-status-code.js diff --git a/lib/cartodb/api/api-router.js b/lib/cartodb/api/api-router.js index 5165007d..9d53285b 100644 --- a/lib/cartodb/api/api-router.js +++ b/lib/cartodb/api/api-router.js @@ -40,6 +40,7 @@ const ResourceLocator = require('../models/resource-locator'); const LayergroupMetadata = require('../utils/layergroup-metadata'); const RendererStatsReporter = require('../stats/reporter/renderer'); +const initializeStatusCode = require('./middlewares/initialize-status-code'); const logger = require('./middlewares/logger'); const bodyParser = require('body-parser'); const servedByHostHeader = require('./middlewares/served-by-host-header'); @@ -193,6 +194,7 @@ module.exports = class ApiRouter { const apiRouter = router(); apiRouter.use(logger(this.serverOptions)); + apiRouter.use(initializeStatusCode()); apiRouter.use(bodyParser.json()); apiRouter.use(servedByHostHeader()); apiRouter.use(stats({ diff --git a/lib/cartodb/api/map/analyses-catalog-controller.js b/lib/cartodb/api/map/analyses-catalog-controller.js index 91defc21..760c0e80 100644 --- a/lib/cartodb/api/map/analyses-catalog-controller.js +++ b/lib/cartodb/api/map/analyses-catalog-controller.js @@ -99,6 +99,7 @@ function prepareResponse () { return -1; }); + res.statusCode = 200; res.body = { catalog: analysisCatalog }; next(); diff --git a/lib/cartodb/api/map/analysis-layergroup-controller.js b/lib/cartodb/api/map/analysis-layergroup-controller.js index 0e46dc81..96f46d70 100644 --- a/lib/cartodb/api/map/analysis-layergroup-controller.js +++ b/lib/cartodb/api/map/analysis-layergroup-controller.js @@ -48,6 +48,7 @@ function analysisNodeStatus (analysisStatusBackend) { 'Last-Modified': new Date().toUTCString() }); + res.statusCode = 200; res.body = nodeStatus; next(); diff --git a/lib/cartodb/api/map/anonymous-map-controller.js b/lib/cartodb/api/map/anonymous-map-controller.js index 964ffacd..21049437 100644 --- a/lib/cartodb/api/map/anonymous-map-controller.js +++ b/lib/cartodb/api/map/anonymous-map-controller.js @@ -202,6 +202,7 @@ function createLayergroup (mapBackend, userLimitsBackend, pgConnection, affected return next(err); } + res.statusCode = 200; res.body = layergroup; res.locals.mapConfigProvider = mapConfigProvider; diff --git a/lib/cartodb/api/map/attributes-layergroup-controller.js b/lib/cartodb/api/map/attributes-layergroup-controller.js index ef9614fc..632cca9f 100644 --- a/lib/cartodb/api/map/attributes-layergroup-controller.js +++ b/lib/cartodb/api/map/attributes-layergroup-controller.js @@ -77,6 +77,7 @@ function getFeatureAttributes (attributesBackend) { return next(err); } + res.statusCode = 200; res.body = tile; next(); diff --git a/lib/cartodb/api/map/dataview-layergroup-controller.js b/lib/cartodb/api/map/dataview-layergroup-controller.js index 0b6f8cc9..710c5cd4 100644 --- a/lib/cartodb/api/map/dataview-layergroup-controller.js +++ b/lib/cartodb/api/map/dataview-layergroup-controller.js @@ -151,6 +151,7 @@ function getDataview (dataviewBackend) { return next(err); } + res.statusCode = 200; res.body = dataview; next(); @@ -174,6 +175,7 @@ function dataviewSearch (dataviewBackend) { return next(err); } + res.statusCode = 200; res.body = searchResult; next(); diff --git a/lib/cartodb/api/map/preview-layergroup-controller.js b/lib/cartodb/api/map/preview-layergroup-controller.js index 71dfdffd..29db8729 100644 --- a/lib/cartodb/api/map/preview-layergroup-controller.js +++ b/lib/cartodb/api/map/preview-layergroup-controller.js @@ -109,6 +109,7 @@ function getPreviewImageByCenter (previewBackend) { res.set('Content-Type', headers['Content-Type'] || `image/${format}`); + res.statusCode = 200; res.body = image; next(); @@ -144,6 +145,7 @@ function getPreviewImageByBoundingBox (previewBackend) { res.set('Content-Type', headers['Content-Type'] || `image/${format}`); + res.statusCode = 200; res.body = image; next(); diff --git a/lib/cartodb/api/map/preview-template-controller.js b/lib/cartodb/api/map/preview-template-controller.js index e19942d2..9f5257a3 100644 --- a/lib/cartodb/api/map/preview-template-controller.js +++ b/lib/cartodb/api/map/preview-template-controller.js @@ -268,6 +268,7 @@ function getImage({ previewBackend, label }) { res.set(headers); } + res.statusCode = 200; res.body = image; next(); @@ -287,6 +288,7 @@ function getImage({ previewBackend, label }) { res.set(headers); } + res.statusCode = 200; res.body = image; next(); diff --git a/lib/cartodb/api/middlewares/initialize-status-code.js b/lib/cartodb/api/middlewares/initialize-status-code.js new file mode 100644 index 00000000..9e6da2c7 --- /dev/null +++ b/lib/cartodb/api/middlewares/initialize-status-code.js @@ -0,0 +1,6 @@ +module.exports = function initializeStatusCode () { + return function initializeStatusCodeMiddleware (req, res, next) { + res.statusCode = 404; + next(); + }; +}; diff --git a/lib/cartodb/api/middlewares/send-response.js b/lib/cartodb/api/middlewares/send-response.js index 469cf0a7..ec13c5bf 100644 --- a/lib/cartodb/api/middlewares/send-response.js +++ b/lib/cartodb/api/middlewares/send-response.js @@ -2,7 +2,7 @@ module.exports = function sendResponse () { return function sendResponseMiddleware (req, res) { req.profiler.done('res'); - res.status(res.statusCode || 200); + res.status(res.statusCode); if (Buffer.isBuffer(res.body)) { return res.send(res.body); diff --git a/lib/cartodb/api/template/admin-template-controller.js b/lib/cartodb/api/template/admin-template-controller.js index 4cceda69..b45ebca7 100644 --- a/lib/cartodb/api/template/admin-template-controller.js +++ b/lib/cartodb/api/template/admin-template-controller.js @@ -115,6 +115,7 @@ function createTemplate ({ templateMaps }) { return next(err); } + res.statusCode = 200; res.body = { template_id: templateId }; next(); @@ -133,6 +134,7 @@ function updateTemplate ({ templateMaps }) { return next(err); } + res.statusCode = 200; res.body = { template_id: templateId }; next(); @@ -161,6 +163,7 @@ function retrieveTemplate ({ templateMaps }) { // so we remove it before returning to the user delete template.auth_id; + res.statusCode = 200; res.body = { template }; next(); @@ -199,6 +202,7 @@ function listTemplates ({ templateMaps }) { return next(err); } + res.statusCode = 200; res.body = { template_ids: templateIds }; next(); diff --git a/lib/cartodb/api/template/named-template-controller.js b/lib/cartodb/api/template/named-template-controller.js index eed39b34..86613c5e 100644 --- a/lib/cartodb/api/template/named-template-controller.js +++ b/lib/cartodb/api/template/named-template-controller.js @@ -204,6 +204,7 @@ function instantiateLayergroup (mapBackend, userLimitsBackend, pgConnection, aff return next(err); } + res.statusCode = 200; res.body = layergroup; const { mapConfigProvider } = res.locals; diff --git a/lib/cartodb/api/template/tile-template-controller.js b/lib/cartodb/api/template/tile-template-controller.js index 5cb2f4e4..de256ccb 100644 --- a/lib/cartodb/api/template/tile-template-controller.js +++ b/lib/cartodb/api/template/tile-template-controller.js @@ -75,6 +75,7 @@ function getTile ({ tileBackend, label }) { res.set(headers); } + res.statusCode = 200; res.body = tile; next(); From 976ee35a35592bec278cf922c17d671e45161f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 9 May 2018 15:24:33 +0200 Subject: [PATCH 18/19] Use new routes configuration schema in ported test --- test/acceptance/ported/support/ported_server_options.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/acceptance/ported/support/ported_server_options.js b/test/acceptance/ported/support/ported_server_options.js index d850b1c9..243875a0 100644 --- a/test/acceptance/ported/support/ported_server_options.js +++ b/test/acceptance/ported/support/ported_server_options.js @@ -13,16 +13,20 @@ module.exports = _.extend({}, serverOptions, { base_url_mapconfig: '/database/:dbname/layergroup', routes: { - api: { + v0: { paths: [ '/tiles', '/database/:dbname' ], + // Base url for the Detached Maps API + // "/tiles/layergroup" is for compatibility with versions up to 1.6.x map: { paths: [ '/layergroup' ] }, + // Base url for the Templated Maps API + // "/tiles/template" is for compatibility with versions up to 1.6.x template: { paths: [ '/template' @@ -31,6 +35,7 @@ module.exports = _.extend({}, serverOptions, { } }, + grainstore: { datasource: { geometry_field: 'the_geom', From 0741881959a5835bb9a7f89a7035d91fbf542f5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Wed, 9 May 2018 16:24:38 +0200 Subject: [PATCH 19/19] Do not initialize status code to 404 when method is OPTIONS --- lib/cartodb/api/middlewares/initialize-status-code.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/cartodb/api/middlewares/initialize-status-code.js b/lib/cartodb/api/middlewares/initialize-status-code.js index 9e6da2c7..ed6b1805 100644 --- a/lib/cartodb/api/middlewares/initialize-status-code.js +++ b/lib/cartodb/api/middlewares/initialize-status-code.js @@ -1,6 +1,9 @@ module.exports = function initializeStatusCode () { return function initializeStatusCodeMiddleware (req, res, next) { - res.statusCode = 404; + if (req.method !== 'OPTIONS') { + res.statusCode = 404; + } + next(); }; };