roscioli
roscioli

Reputation: 1230

How to handle error of http call when site is down

I would like to replace the if(body.toString().indexOf("404") !== 0) block with some generic error handling code but I can't seem to see where it throws an error when the target host is down. So far, this is the only hacky method I've managed to put together that works.

app.get('/', function(req, res){
    var sites = ["foo.com", "bar.com"];
    var returnObj = [];
    var index = 0;
    getSites(index);

    // Recursively add data from each site listed in "sites" array
    function getSites(index) {
        if(index < sites.length) {
            var url = sites[index];
            var _req = http.get({host: url}, function(_res) {
              var bodyChunks = [];
              _res.on('data', function(chunk) {
                bodyChunks.push(chunk);
              }).on('end', function() {
                var body = Buffer.concat(bodyChunks);
                if(body.toString().indexOf("404") !== 0) {
                    returnObj.push(JSON.parse(body));
                }    
                getSites(++index);
              });
            });

            _req.on('error', function(e) {
              console.log('ERROR: ' + e.message);
            });
        } else {
            res.json(returnObj);
            res.end();
        }
    }
});

Upvotes: 0

Views: 40

Answers (1)

Ben Fortune
Ben Fortune

Reputation: 32127

You can check the status code of the response.

if(_req.statusCode === 200) {
    //Response okay.
}

Here's a list of the status codes.

Upvotes: 1

Related Questions