Extract query may write middleware
This commit is contained in:
parent
5156fc2ad2
commit
fcb7591051
@ -2,7 +2,6 @@
|
||||
|
||||
var step = require('step');
|
||||
var PSQL = require('cartodb-psql');
|
||||
var queryMayWrite = require('../utils/query_may_write');
|
||||
const formats = require('../models/formats');
|
||||
var getContentDisposition = require('../utils/content_disposition');
|
||||
const bodyParserMiddleware = require('../middlewares/body-parser');
|
||||
@ -19,6 +18,7 @@ const logMiddleware = require('../middlewares/log');
|
||||
const cancelOnClientAbort = require('../middlewares/cancel-on-client-abort');
|
||||
const affectedTables = require('../middlewares/affected-tables');
|
||||
const accessValidator = require('../middlewares/access-validator');
|
||||
const queryMayWrite = require('../middlewares/query-may-write');
|
||||
|
||||
const ONE_YEAR_IN_SECONDS = 31536000; // ttl in cache provider
|
||||
const FIVE_MINUTES_IN_SECONDS = 60 * 5; // ttl in cache provider
|
||||
@ -52,6 +52,7 @@ QueryController.prototype.route = function (app) {
|
||||
cancelOnClientAbort(),
|
||||
affectedTables(),
|
||||
accessValidator(),
|
||||
queryMayWrite(),
|
||||
this.handleQuery.bind(this),
|
||||
errorMiddleware()
|
||||
];
|
||||
@ -69,7 +70,8 @@ QueryController.prototype.handleQuery = function (req, res, next) {
|
||||
user: username,
|
||||
userDbParams: dbopts,
|
||||
userLimits,
|
||||
affectedTables
|
||||
affectedTables,
|
||||
mayWrite
|
||||
} = res.locals;
|
||||
const { orderBy, sortOrder, limit, offset } = res.locals.params;
|
||||
const { sql, format, skipfields, decimalPrecision, filename, callback } = res.locals.params;
|
||||
@ -86,13 +88,10 @@ QueryController.prototype.handleQuery = function (req, res, next) {
|
||||
// 3. Handle error
|
||||
step(
|
||||
function setHeaders() {
|
||||
var mayWrite = queryMayWrite(sql);
|
||||
|
||||
var FormatClass = formats[format];
|
||||
formatter = new FormatClass();
|
||||
req.formatter = formatter;
|
||||
|
||||
|
||||
// configure headers for given format
|
||||
var useInline = (!req.query.format && !req.body.format && !req.query.filename && !req.body.filename);
|
||||
res.header("Content-Disposition", getContentDisposition(formatter, filename, useInline));
|
||||
|
12
app/middlewares/query-may-write.js
Normal file
12
app/middlewares/query-may-write.js
Normal file
@ -0,0 +1,12 @@
|
||||
'use strict';
|
||||
|
||||
const queryMayWrite = require('../utils/query_may_write');
|
||||
|
||||
module.exports = function mayWrite () {
|
||||
return function mayWriteMiddleware (req, res, next) {
|
||||
const { sql } = res.locals.params;
|
||||
res.locals.mayWrite = queryMayWrite(sql);
|
||||
|
||||
next();
|
||||
};
|
||||
};
|
@ -351,7 +351,6 @@ it('GET /api/v1/sql with SQL parameter and no format, ensuring content-dispositi
|
||||
var ct = res.headers['content-type'];
|
||||
assert.ok(/json/.test(ct), 'Default format is not JSON: ' + ct);
|
||||
var cd = res.headers['content-disposition'];
|
||||
console.log(/^inline/.test(cd), cd);
|
||||
assert.equal(true, /^inline/.test(cd), 'Default format is not disposed inline: ' + cd);
|
||||
assert.equal(true, /filename=cartodb-query.json/gi.test(cd), 'Unexpected JSON filename: ' + cd);
|
||||
done();
|
||||
|
Loading…
Reference in New Issue
Block a user