forked from oxen-io/session-open-group-server-legacy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmiddlewares.js
51 lines (45 loc) · 1.28 KB
/
middlewares.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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') {
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
};