12345678910111213141516171819202122232425262728293031323334353637383940 |
- var spawn = require('child_process').spawn,
- util = require('util'),
- ResponseStream = require('../../lib').ResponseStream;
-
- /**
- * Accepts a writable stream, i.e. fs.WriteStream, and returns a StreamStack
- * whose 'write()' calls are transparently sent to a 'gzip' process before
- * being written to the target stream.
- */
- var GzipEncode = module.exports = function GzipEncode(options) {
- ResponseStream.call(this, options);
- if (compression) {
- process.assert(compression >= 1 && compression <= 9);
- this.compression = compression;
- }
- this.on('pipe', this.encode);
- }
- util.inherits(GzipEncode, ResponseStream);
- GzipEncode.prototype.encode = function (source) {
- this.source = source;
- };
- GzipEncode.prototype.pipe = function (dest) {
- if (!this.source) {
- throw new Error('GzipEncode is only pipeable once it has been piped to');
- }
-
- this.encoder = spawn('gzip', ['-'+this.compression]);
- this.encoder.stdout.pipe(dest);
- this.encoder.stdin.pipe(this.source);
- };
- inherits(GzipEncoderStack, StreamStack);
- exports.GzipEncoderStack = GzipEncoderStack;
- GzipEncoderStack.prototype.compression = 6;
|