Fix chunked encoding issue
This commit is contained in:
1 parent
6266ab5422
commit
c2d6c85e5d
1 file changed
+15
-9
+15
-9
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
const zlib = require("zlib");
|
const zlib = require("zlib");
|
||||||
const Router = require("koa-router");
|
const Router = require("koa-router");
|
||||||
const PassThrough = require("stream").PassThrough;
|
|
||||||
const config = require("./config");
|
const config = require("./config");
|
||||||
const db = require("./db");
|
const db = require("./db");
|
||||||
const apiFunctions = require("./api-functions");
|
const apiFunctions = require("./api-functions");
|
||||||
@@ -79,19 +78,21 @@ for (let [resource, flags] of Object.entries(resources)) {
|
|||||||
let stream;
|
let stream;
|
||||||
switch (ctx.acceptsEncodings("gzip", "deflate", "identity")) {
|
switch (ctx.acceptsEncodings("gzip", "deflate", "identity")) {
|
||||||
case "gzip":
|
case "gzip":
|
||||||
stream = zlib.createGzip();
|
stream = zlib.createGzip({ flush: zlib.constants.Z_SYNC_FLUSH });
|
||||||
|
stream.pipe(ctx.res);
|
||||||
ctx.set("Content-Encoding", "gzip");
|
ctx.set("Content-Encoding", "gzip");
|
||||||
break;
|
break;
|
||||||
case "deflate":
|
case "deflate":
|
||||||
stream = zlib.createDeflate();
|
stream = zlib.createDeflate({ flush: zlib.constants.Z_SYNC_FLUSH });
|
||||||
|
stream.pipe(ctx.res);
|
||||||
ctx.set("Content-Encoding", "deflate");
|
ctx.set("Content-Encoding", "deflate");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
stream = new PassThrough();
|
stream = ctx.res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.body = stream;
|
ctx.body = ctx.res;
|
||||||
ctx.type = "application/json";
|
ctx.type = "application/json";
|
||||||
|
|
||||||
let c = 0;
|
let c = 0;
|
||||||
@@ -134,20 +135,25 @@ for (let [resource, flags] of Object.entries(resources)) {
|
|||||||
let stream;
|
let stream;
|
||||||
switch (ctx.acceptsEncodings("gzip", "deflate", "identity")) {
|
switch (ctx.acceptsEncodings("gzip", "deflate", "identity")) {
|
||||||
case "gzip":
|
case "gzip":
|
||||||
stream = zlib.createGzip();
|
stream = zlib.createGzip({ flush: zlib.constants.Z_SYNC_FLUSH });
|
||||||
|
stream.pipe(ctx.res);
|
||||||
ctx.set("Content-Encoding", "gzip");
|
ctx.set("Content-Encoding", "gzip");
|
||||||
break;
|
break;
|
||||||
case "deflate":
|
case "deflate":
|
||||||
stream = zlib.createDeflate();
|
stream = zlib.createDeflate({ flush: zlib.constants.Z_SYNC_FLUSH });
|
||||||
|
stream.pipe(ctx.res);
|
||||||
ctx.set("Content-Encoding", "deflate");
|
ctx.set("Content-Encoding", "deflate");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
stream = new PassThrough();
|
stream = ctx.res;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.body = stream;
|
ctx.body = ctx.res;
|
||||||
ctx.type = "text/csv";
|
ctx.type = "text/csv";
|
||||||
|
ctx.attachment(
|
||||||
|
`${resource}-${new Date(now).toISOString().replace(/[:.]/g, "")}.csv`
|
||||||
|
);
|
||||||
|
|
||||||
stream.write(
|
stream.write(
|
||||||
Object.keys(columns).map(k => `"${k.replace(/"/, '""')}"`) + "\n"
|
Object.keys(columns).map(k => `"${k.replace(/"/, '""')}"`) + "\n"
|
||||||
|
|||||||
Reference in new issue
Block a user