openreplay/ee/utilities/utils/helper-ee.js
2022-06-17 10:42:30 +02:00

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
};