26 lines
725 B
JavaScript
26 lines
725 B
JavaScript
|
var spawn = require('child_process').spawn,
|
||
|
util = require('util'),
|
||
|
RequestStream = require('../../lib').RequestStream;
|
||
|
|
||
|
var GzipDecode = module.exports = function GzipDecoder(options) {
|
||
|
RequestStream.call(this, options);
|
||
|
|
||
|
this.on('pipe', this.decode);
|
||
|
}
|
||
|
|
||
|
util.inherits(GzipDecode, RequestStream);
|
||
|
|
||
|
GzipDecode.prototype.decode = function (source) {
|
||
|
this.decoder = spawn('gunzip');
|
||
|
this.decoder.stdout.on('data', this._onGunzipData.bind(this));
|
||
|
this.decoder.stdout.on('end', this._onGunzipEnd.bind(this));
|
||
|
source.pipe(this.decoder);
|
||
|
}
|
||
|
|
||
|
GzipDecoderStack.prototype._onGunzipData = function (chunk) {
|
||
|
this.emit('data', chunk);
|
||
|
}
|
||
|
|
||
|
GzipDecoderStack.prototype._onGunzipEnd = function () {
|
||
|
this.emit('end');
|
||
|
}
|