I'm using superagent (although willing to user other node lib) with the goal to solely get the redirected url, but not the body. The latter is overkill and I want to prevent my code to download the body if I can help it.
I cannot use HEAD
requests since these are not guaranteed to be enabled on the server.
Instead my idea was to pipe the superagent response to a writeStream and stop the writeStream on receiving the first data. However, .on('data', fn)
is only available on a readstream instead of a writestream.
Instead I tried to see if superagent.get(...)
itself was a readstream on which I could listen for .on('data', fn)
to kill the stream, but that doesn't appear to be the case either.
In short, is there another way to cancel a request early, while still getting the redirect url, but not incurring the download overhead of the entire body?
Solved: needed buffer(false)
. Using that response can be treated as a proper readstream.
const url = "http://www.google.com";
superagent.get(url)
.buffer(false)
.end(function (err, res) {
const urlRedirect = res.redirects.length ? res.redirects.pop() : url;
res.destroy();
res.on("end", function () {
//do stuff with 'urlRedirect'
})
})