finishing integration of lzma middleware
This commit is contained in:
parent
9d81321d78
commit
c09899913f
@ -1,8 +1,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var LZMA = require('lzma').LZMA;
|
const LZMA = require('lzma').LZMA;
|
||||||
|
|
||||||
var lzmaWorker = new LZMA();
|
const lzmaWorker = new LZMA();
|
||||||
|
|
||||||
module.exports = function lzmaMiddleware(req, res, next) {
|
module.exports = function lzmaMiddleware(req, res, next) {
|
||||||
if (!req.query.hasOwnProperty('lzma')) {
|
if (!req.query.hasOwnProperty('lzma')) {
|
||||||
|
@ -2,9 +2,6 @@ var assert = require('assert');
|
|||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
var step = require('step');
|
var step = require('step');
|
||||||
|
|
||||||
var LZMA = require('lzma').LZMA;
|
|
||||||
var lzmaWorker = new LZMA();
|
|
||||||
|
|
||||||
|
|
||||||
// Whitelist query parameters and attach format
|
// Whitelist query parameters and attach format
|
||||||
var REQUEST_QUERY_PARAMS_WHITELIST = [
|
var REQUEST_QUERY_PARAMS_WHITELIST = [
|
||||||
@ -20,7 +17,7 @@ var REQUEST_QUERY_PARAMS_WHITELIST = [
|
|||||||
'filters' // json
|
'filters' // json
|
||||||
];
|
];
|
||||||
|
|
||||||
// jshint maxcomplexity:10
|
// jshint maxcomplexity:8
|
||||||
/**
|
/**
|
||||||
* Whitelist input and get database name & default geometry type from
|
* Whitelist input and get database name & default geometry type from
|
||||||
* subdomain/user metadata held in CartoDB Redis
|
* subdomain/user metadata held in CartoDB Redis
|
||||||
@ -29,35 +26,6 @@ var REQUEST_QUERY_PARAMS_WHITELIST = [
|
|||||||
*/
|
*/
|
||||||
module.exports = function req2paramsMiddleware (authApi, pgConnection) {
|
module.exports = function req2paramsMiddleware (authApi, pgConnection) {
|
||||||
return function req2params (req, res, next) {
|
return function req2params (req, res, next) {
|
||||||
if ( req.query.lzma ) {
|
|
||||||
|
|
||||||
// Decode (from base64)
|
|
||||||
var lzma = new Buffer(req.query.lzma, 'base64')
|
|
||||||
.toString('binary')
|
|
||||||
.split('')
|
|
||||||
.map(function(c) {
|
|
||||||
return c.charCodeAt(0) - 128;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// Decompress
|
|
||||||
lzmaWorker.decompress(
|
|
||||||
lzma,
|
|
||||||
function(result) {
|
|
||||||
req.profiler.done('lzma');
|
|
||||||
try {
|
|
||||||
delete req.query.lzma;
|
|
||||||
_.extend(req.query, JSON.parse(result));
|
|
||||||
req2params(req, res, next);
|
|
||||||
} catch (err) {
|
|
||||||
req.profiler.done('req2params');
|
|
||||||
next(new Error('Error parsing lzma as JSON: ' + err));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var allowedQueryParams = REQUEST_QUERY_PARAMS_WHITELIST;
|
var allowedQueryParams = REQUEST_QUERY_PARAMS_WHITELIST;
|
||||||
if (Array.isArray(req.context.allowedQueryParams)) {
|
if (Array.isArray(req.context.allowedQueryParams)) {
|
||||||
allowedQueryParams = allowedQueryParams.concat(req.context.allowedQueryParams);
|
allowedQueryParams = allowedQueryParams.concat(req.context.allowedQueryParams);
|
||||||
|
@ -4,8 +4,6 @@ var RedisPool = require('redis-mpool');
|
|||||||
var cartodbRedis = require('cartodb-redis');
|
var cartodbRedis = require('cartodb-redis');
|
||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
|
|
||||||
var lzmaMiddleware = require('./middleware/lzma');
|
|
||||||
|
|
||||||
var controller = require('./controllers');
|
var controller = require('./controllers');
|
||||||
|
|
||||||
var SurrogateKeysCache = require('./cache/surrogate_keys_cache');
|
var SurrogateKeysCache = require('./cache/surrogate_keys_cache');
|
||||||
@ -46,6 +44,7 @@ var MapConfigAdapter = require('./models/mapconfig/adapter');
|
|||||||
|
|
||||||
var StatsBackend = require('./backends/stats');
|
var StatsBackend = require('./backends/stats');
|
||||||
|
|
||||||
|
const lzmaMiddleware = require('./middleware/lzma');
|
||||||
const errorMiddleware = require('./middleware/error-middleware');
|
const errorMiddleware = require('./middleware/error-middleware');
|
||||||
|
|
||||||
module.exports = function(serverOptions) {
|
module.exports = function(serverOptions) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
require('../../support/test_helper');
|
|
||||||
|
|
||||||
var RedisPool = require('redis-mpool');
|
var RedisPool = require('redis-mpool');
|
||||||
var cartodbRedis = require('cartodb-redis');
|
var cartodbRedis = require('cartodb-redis');
|
||||||
@ -116,30 +115,17 @@ describe('req2params', function() {
|
|||||||
config: config
|
config: config
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
test_helper.lzma_compress_to_base64(JSON.stringify(qo), 1, function(err, data) {
|
var res = {};
|
||||||
var req = {
|
|
||||||
headers: {
|
|
||||||
host:'localhost'
|
|
||||||
},
|
|
||||||
query: {
|
|
||||||
non_included: 'toberemoved',
|
|
||||||
api_key: 'test',
|
|
||||||
style: 'override',
|
|
||||||
lzma: data
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var res = {};
|
|
||||||
req2params(prepareRequest(req), res, function(err, req) {
|
|
||||||
if ( err ) {
|
|
||||||
return done(err);
|
|
||||||
}
|
|
||||||
var query = req.params;
|
|
||||||
assert.deepEqual(qo.config, query.config);
|
|
||||||
assert.equal('test', query.api_key);
|
|
||||||
assert.equal(undefined, query.non_included);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
req2params(prepareRequest(req), res, function(err, req) {
|
||||||
|
if ( err ) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
var query = req.params;
|
||||||
|
assert.deepEqual(config, query.config);
|
||||||
|
assert.equal('test', query.api_key);
|
||||||
|
assert.equal(undefined, query.non_included);
|
||||||
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user