2011-06-20 5 views
4

私はgzippedデータを返すAPIといくつかのやりとりをするためにnode.jsを使用しています。パッケージマネージャーとwikiを見て、良い圧縮ライブラリを探しましたが、放棄されていない/見つからなかったものを見つけることができませんでした。どのように私はいずれかのjavascriptまたはノードを使用して圧縮されたデータを収縮することができます任意のアイデア? (?それともすべて一緒にデータを回避する方法)javascript/nodeを使用してAPIストリームをGunzipしますか?

ここで私がコメントを持っているものです。

app.get('/', function(req, res){ 
    // rest is a restler instance 
    rest.get('http://api.stackoverflow.com/1.1/questions?type=jsontext', { 
      headers: {"Accept-Encoding": 'deflate'}, 
      //tried deflate, gzip, etc. No changes 
    }).on('complete', function(data) { 
      // If I do: sys.puts(data); I get an exception 
      // Maybe I could do something like this: 
      /* 
      var child = exec("gunzip " + data, 
        function(error, stdout, stderr) { 
          console.log('stdout: ' + stdout); 
          console.log('stderr: ' + stderr); 
          if (error !== null) { 
            console.log('exec error: ' + error); 
          } 
        }); 
      */ 
    }); 

});

+0

関連:http://stackoverflow.com/questions/4594654/node-js-proxy-dealing-with-gzip-decompression –

答えて

4

私は成功を収めて、このいずれかを使用:

https://github.com/waveto/node-compress

this.get = function(options, cb){ 
    http.get({host: 'api.stackoverflow.com', path:'/1.1/questions?' + querystring.stringify(vectorize(options || {}))}, function(res){ 
    var body = []; 
    var gunzip = new compress.Gunzip(); 
    gunzip.init(); 

    res.setEncoding('binary'); 
    res 
     .on('data', function(chunk){ 
     body.push(gunzip.inflate(chunk, 'binary')); 
     }) 
     .on('end', function(){ 
     console.log(res.headers); 
     gunzip.end(); 
     cb(null, JSON.parse(body.join(''))); 
     }); 
    }).on('error', function(e){ 
    cb(e); 
    }) 
} 
+0

どのバージョンのノードを使用していますか?そのプロジェクトはまだ2月に戻ってきたposix(現在のfs)を参照しています... – Swift

+0

私はサンプルとドキュメントの参照posixと推測します。モジュール自体はzlibのラッパーです。 ノードv0.4.8を使用しています –

関連する問題