mirror of
https://github.com/oxen-io/session-open-group-server-legacy.git
synced 2023-12-13 21:10:18 +01:00
51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
|
|
const ByteBuffer = require('bytebuffer');
|
|
|
|
// snode hack work around
|
|
// preserve original body
|
|
function snodeOnionMiddleware(req, res, next) {
|
|
// scope the damage of this...
|
|
// so it doesn't affect file uploads
|
|
if (req.method === 'POST' && req.path === '/loki/v1/lsrpc') {
|
|
let resolver;
|
|
req.lokiReady = new Promise(res => {
|
|
resolver = res
|
|
});
|
|
let body = '';
|
|
req.on('data', function (data) {
|
|
body += data.toString();
|
|
});
|
|
req.on('end', function() {
|
|
// preserve original body
|
|
req.originalBody = body;
|
|
// console.log('perserved', body);
|
|
resolver(); // resolve promise
|
|
});
|
|
} else if (req.method === 'POST' && (req.path === '/loki/v2/lsrpc' || req.path === '/loki/v3/lsrpc') ) {
|
|
|
|
let resolver;
|
|
req.lokiReady = new Promise(res => {
|
|
resolver = res
|
|
});
|
|
|
|
let buffer = new ByteBuffer(ByteBuffer.DEFAULT_CAPACITY, true);
|
|
|
|
let size = 0;
|
|
req.on('data', function (data) {
|
|
size += data.length;
|
|
buffer.append(data);
|
|
});
|
|
req.on('end', function() {
|
|
// reset buffer's offset and set limit to capacity
|
|
buffer.compact(0, size);
|
|
buffer.clear();
|
|
req.originalBody = buffer.toArrayBuffer();
|
|
resolver(); // resolve promise
|
|
});
|
|
}
|
|
next();
|
|
}
|
|
|
|
module.exports = {
|
|
snodeOnionMiddleware: snodeOnionMiddleware
|
|
};
|