Be able to tag requests with labels as easier way to provide business metrics
This commit is contained in:
parent
07b9decb03
commit
b115bca07e
@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const PSQL = require('cartodb-psql');
|
||||
const tag = require('../middlewares/tag');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
const authorize = require('../middlewares/authorize');
|
||||
@ -23,6 +24,7 @@ module.exports = class AnalysesController {
|
||||
|
||||
middlewares () {
|
||||
return [
|
||||
tag({ tags: ['analysis', 'catalog'] }),
|
||||
credentials(),
|
||||
authorize(this.authBackend),
|
||||
dbConnSetup(this.pgConnection),
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const layergroupToken = require('../middlewares/layergroup-token');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
@ -23,6 +24,7 @@ module.exports = class AnalysisLayergroupController {
|
||||
|
||||
middlewares () {
|
||||
return [
|
||||
tag({ tags: ['analysis', 'node'] }),
|
||||
layergroupToken(),
|
||||
credentials(),
|
||||
authorize(this.authBackend),
|
||||
|
@ -3,6 +3,7 @@
|
||||
const windshaft = require('windshaft');
|
||||
const MapConfig = windshaft.model.MapConfig;
|
||||
const Datasource = windshaft.model.Datasource;
|
||||
const tag = require('../middlewares/tag');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
const dbConnSetup = require('../middlewares/db-conn-setup');
|
||||
@ -90,6 +91,7 @@ module.exports = class AnonymousMapController {
|
||||
};
|
||||
|
||||
return [
|
||||
tag({ tags: ['map', 'anonymous'] }),
|
||||
metrics({
|
||||
enabled: this.config.pubSubMetrics.enabled,
|
||||
metricsBackend: this.metricsBackend,
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const layergroupToken = require('../middlewares/layergroup-token');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
@ -38,6 +39,7 @@ module.exports = class AttributesLayergroupController {
|
||||
|
||||
middlewares () {
|
||||
return [
|
||||
tag({ tags: ['attributes'] }),
|
||||
layergroupToken(),
|
||||
credentials(),
|
||||
authorize(this.authBackend),
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const layergroupToken = require('../middlewares/layergroup-token');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
@ -38,6 +39,7 @@ module.exports = class AggregatedFeaturesLayergroupController {
|
||||
|
||||
middlewares () {
|
||||
return [
|
||||
tag({ tags: ['cluster'] }),
|
||||
layergroupToken(),
|
||||
credentials(),
|
||||
authorize(this.authBackend),
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const layergroupToken = require('../middlewares/layergroup-token');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
@ -76,6 +77,7 @@ module.exports = class DataviewLayergroupController {
|
||||
|
||||
middlewares ({ action, rateLimitGroup }) {
|
||||
return [
|
||||
tag({ tags: ['dataview', action] }),
|
||||
layergroupToken(),
|
||||
credentials(),
|
||||
authorize(this.authBackend),
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const layergroupToken = require('../middlewares/layergroup-token');
|
||||
const coordinates = require('../middlewares/coordinates');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
@ -61,6 +62,7 @@ module.exports = class PreviewLayergroupController {
|
||||
}
|
||||
|
||||
return [
|
||||
tag({ tags: ['static', 'tile'] }),
|
||||
layergroupToken(),
|
||||
validateZoom ? coordinates({ z: true, x: false, y: false }) : noop(),
|
||||
credentials(),
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
const dbConnSetup = require('../middlewares/db-conn-setup');
|
||||
@ -67,6 +68,7 @@ module.exports = class PreviewTemplateController {
|
||||
};
|
||||
|
||||
return [
|
||||
tag({ tags: ['named', 'static', 'tile'] }),
|
||||
metrics({
|
||||
enabled: this.config.pubSubMetrics.enabled,
|
||||
metricsBackend: this.metricsBackend,
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const layergroupToken = require('../middlewares/layergroup-token');
|
||||
const coordinates = require('../middlewares/coordinates');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
@ -59,6 +60,7 @@ module.exports = class TileLayergroupController {
|
||||
|
||||
middlewares () {
|
||||
return [
|
||||
tag({ tags: ['tile'] }),
|
||||
layergroupToken(),
|
||||
coordinates(),
|
||||
credentials(),
|
||||
|
15
lib/api/middlewares/tag.js
Normal file
15
lib/api/middlewares/tag.js
Normal file
@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function tag ({ tags }) {
|
||||
if (!Array.isArray(tags) || !tags.every((tag) => typeof tag === 'string')) {
|
||||
throw new Error('Required "tags" option must be a valid Array: [string, string, ...]');
|
||||
}
|
||||
|
||||
return function tagMiddleware (req, res, next) {
|
||||
const { logger } = res.locals;
|
||||
res.locals.tags = tags;
|
||||
res.on('finish', () => logger.info({ tags: res.locals.tags }));
|
||||
|
||||
next();
|
||||
};
|
||||
};
|
@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const { templateName } = require('../../backends/template-maps');
|
||||
const tag = require('../middlewares/tag');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
const rateLimit = require('../middlewares/rate-limit');
|
||||
const { RATE_LIMIT_ENDPOINTS_GROUPS } = rateLimit;
|
||||
@ -76,6 +77,7 @@ module.exports = class AdminTemplateController {
|
||||
}
|
||||
|
||||
return [
|
||||
tag({ tags: ['named', 'admin', action] }),
|
||||
credentials(),
|
||||
authorizedByAPIKey({ authBackend: this.authBackend, action, label }),
|
||||
rateLimit(this.userLimitsBackend, rateLimitGroup),
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
const dbConnSetup = require('../middlewares/db-conn-setup');
|
||||
@ -88,6 +89,7 @@ module.exports = class NamedMapController {
|
||||
};
|
||||
|
||||
return [
|
||||
tag({ tags: ['map', 'named'] }),
|
||||
metrics({
|
||||
enabled: this.config.pubSubMetrics.enabled,
|
||||
metricsBackend: this.metricsBackend,
|
||||
|
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const tag = require('../middlewares/tag');
|
||||
const coordinates = require('../middlewares/coordinates');
|
||||
const cleanUpQueryParams = require('../middlewares/clean-up-query-params');
|
||||
const credentials = require('../middlewares/credentials');
|
||||
@ -37,6 +38,7 @@ module.exports = class TileTemplateController {
|
||||
|
||||
middlewares () {
|
||||
return [
|
||||
tag({ tags: ['tile', 'named'] }),
|
||||
coordinates(),
|
||||
credentials(),
|
||||
authorize(this.authBackend),
|
||||
|
Loading…
Reference in New Issue
Block a user