Spaces:
Running
Running
const axios = require("axios"); | |
module.exports = async function(req, res, next) { | |
const fetch = await import("node-fetch").default; | |
try { | |
const { | |
url, | |
name | |
} = req.query; | |
if(!url || !name) return next(); | |
const _res = await fetch(url, { | |
headers: { | |
"Referer": url, | |
"Access-Control-Allow-Origin": "*", | |
"Referrer-Policy": "strict-origin-when-cross-origin", | |
"User-Agent": req.get("User-Agent"), | |
...(req.headers.range ? { | |
Range: req.headers.range | |
} : {}) | |
} | |
}); | |
for(const [key, value] of _res.headers.entries()) res.setHeader(key, value); | |
res.setHeader("Transfer-Encoding", "chunked"); | |
res.setHeader("Content-Disposition", `attachment; filename*=UTF-8''${encodeURIComponent(name)}`); | |
_res.body.pipe(res.status(_res.status)); | |
} catch(e) { | |
console.error(e) | |
next(); | |
}; | |
} |