Skip to content

Instantly share code, notes, and snippets.

@nickfishman
Last active December 16, 2015 21:29
Show Gist options
  • Save nickfishman/5499713 to your computer and use it in GitHub Desktop.
Save nickfishman/5499713 to your computer and use it in GitHub Desktop.
Attempt to do conditional gzip decoding based on the Content-Encoding response header with the mikeal/request library for Node.js. This does not work.
var request = require('request'),
zlib = require('zlib');
var headers = {
"accept-charset" : "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"accept-language" : "en-US,en;q=0.8",
"accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"user-agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",
"accept-encoding" : "gzip,deflate",
};
var options = {
url: "http://google.com",
headers: headers
};
var req = request(options, function (err, res, body) {
var body = '';
res.on('error', function(err) {
console.log(err);
});
var output;
if (res.headers['content-encoding'] == 'gzip') {
var gzip = zlib.createGunzip();
res.pipe(gzip);
output = gzip;
} else {
output = res;
}
output.on('data', function (data) {
data = data.toString('utf-8');
body += data;
});
output.on('end', function() {
console.log(body);
});
});
req.on('error', function(err) {
console.log(err);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment