diff --git a/src/apicache.js b/src/apicache.js index 7936287..f6ce3a2 100644 --- a/src/apicache.js +++ b/src/apicache.js @@ -1,4 +1,5 @@ var url = require('url') +var querystring = require('querystring') var MemoryCache = require('./memory-cache') var pkg = require('../package.json') @@ -37,6 +38,7 @@ function ApiCache() { appendKey: [], jsonp: false, redisClient: false, + queryParamsBlacklist:[], headerBlacklist: [], statusCodes: { include: [], @@ -418,6 +420,26 @@ function ApiCache() { key = url.parse(key).pathname } + // Remove blacklisted query params + if (opt.queryParamsBlacklist.length > 0) { + var queryParams = querystring.parse(url.parse(key).query) + if (Object.keys(queryParams).length > 0) { + var validQueryParams = Object.keys(queryParams) + .filter(function(key) { + return globalOptions.queryParamsBlacklist.indexOf(key) === -1 + }) + .reduce(function(acc, header) { + acc[header] = queryParams[header] + return acc + }, {}) + + key = url.parse(key).pathname + if (Object.keys(validQueryParams).length > 0) { + key += '?' + querystring.stringify(validQueryParams) + } + } + } + // add appendKey (either custom function or response path) if (typeof opt.appendKey === 'function') { key += '$$appendKey=' + opt.appendKey(req, res)