const tt = require("tar-transform");
const fetch = require("node-fetch");
const { Readable } = require("stream");
exports.endpoint = async (req, resp) => {
const packStream = tt.pack({
// boolean | zlib.ZlibOptions
// indicates whether to gzip the tarball
gzip: true,
});
resp.setHeader("Content-Type", "application/octet-stream");
resp.setHeader("Content-Disposition", 'attachment; filename="tar-transform-demo.tgz"');
const imageResp = await fetch("https://github.com/EqualMa.png")
const imageSize = parseInt(imageResp.headers.get("Content-Length"))
Readable.from([
{ headers: { name: "README.md" }, content: "# tar-transform" },
{ headers: { name: "hello/world.txt" }, content: "Hello World!" },
{ headers: { name: "emptyDir", type: "directory" } },
{ headers: { name: "author-avatar.png", size: imageSize }, stream: imageResp.body },
])
.pipe(packStream)
.pipe(resp)
.on("error", err=>console.error(err))
};
const url = process.env.RUNKIT_ENDPOINT_URL
const html = `
<form method="get" action="${url}">
<button type="submit">Download demo tarball</button>
</form>
`