1

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?

Geert-Jan
  • 18,623
  • 16
  • 75
  • 137

1 Answers1

0

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'
              })
            })
Geert-Jan
  • 18,623
  • 16
  • 75
  • 137