49 lines
No EOL
1.6 KiB
JavaScript
49 lines
No EOL
1.6 KiB
JavaScript
const helper = require('./helper');
|
|
const getBodyFromUWSResponse = async function (res) {
|
|
return new Promise(((resolve, reject) => {
|
|
let buffer;
|
|
res.onData((ab, isLast) => {
|
|
let chunk = Buffer.from(ab);
|
|
if (buffer) {
|
|
buffer = Buffer.concat([buffer, chunk]);
|
|
} else {
|
|
buffer = Buffer.concat([chunk]);
|
|
}
|
|
if (isLast) {
|
|
let json;
|
|
try {
|
|
json = JSON.parse(buffer);
|
|
} catch (e) {
|
|
console.error(e);
|
|
/* res.close calls onAborted */
|
|
try {
|
|
res.close();
|
|
} catch (e2) {
|
|
console.error(e2);
|
|
}
|
|
json = {};
|
|
}
|
|
resolve(json);
|
|
}
|
|
});
|
|
}));
|
|
}
|
|
const extractFiltersFromRequest = async function (req, res) {
|
|
let filters = {};
|
|
if (process.env.uws === "true") {
|
|
if (req.getQuery("userId")) {
|
|
debug && console.log(`[WS]where userId=${req.getQuery("userId")}`);
|
|
filters.userID = [req.getQuery("userId")];
|
|
}
|
|
|
|
let body = await getBodyFromUWSResponse(res);
|
|
filters = {...filters, ...(body.filter || {})};
|
|
} else {
|
|
return helper.extractFiltersFromRequest(req);
|
|
}
|
|
filters = helper.objectToObjectOfArrays({...filters, ...(req.body.filter || {})});
|
|
return Object.keys(filters).length > 0 ? filters : undefined;
|
|
}
|
|
module.exports = {
|
|
extractFiltersFromRequest
|
|
}; |