Output interceptor
import { HttpOutputEffect, httpListener } from '@marblejs/core';
const output$: HttpOutputEffect = res$ =>
res$.pipe(
map(res => ... ),
);
export default httpListener({
middlewares: [ ... ],
effects: [ ... ],
output$,
});import { HttpOutputEffect } from '@marblejs/core';
const output$: HttpOutputEffect = (res$, _, { initiator }) =>
res$.pipe(
map(res => {
switch(initiator.headers['accept-encoding']) {
case 'br':
return ({
...res,
headers: { ...res.headers, 'Content-Encoding': 'br' },
body: res.body.pipe(zlib.createBrotliDecompress()),
});
case 'gzip':
return ({
...res,
headers: { ...res.headers, 'Content-Encoding': 'gzip' },
body: res.body.pipe(zlib.createGunzip()),
});
case 'deflate':
return ({
...res,
headers: { ...res.headers, 'Content-Encoding': 'deflate' },
body: res.body.pipe(zlib.createInflate()),
});
default:
return res;
}
}),
);Last updated