|
var zlib = require('zlib')
|
|
module.exports = inflate
|
|
function inflate(stream, options) {
|
if (!stream) {
|
throw new TypeError('argument stream is required')
|
}
|
|
options = options || {}
|
|
var encoding = options.encoding
|
|| (stream.headers && stream.headers['content-encoding'])
|
|| 'identity'
|
|
var decompression
|
switch (encoding) {
|
case 'gzip':
|
case 'deflate':
|
delete options.brotli
|
delete options.encoding
|
decompression = zlib.createUnzip(options)
|
break
|
case 'br':
|
if (zlib.createBrotliDecompress) {
|
decompression = zlib.createBrotliDecompress(options.brotli)
|
}
|
break
|
case 'identity':
|
return stream
|
}
|
|
if (!decompression) {
|
var err = new Error('Unsupported Content-Encoding: ' + encoding)
|
err.status = 415
|
throw err
|
}
|
|
return stream.pipe(decompression)
|
}
|