12345678910111213141516171819202122232425262728293031 |
- 'use strict';
- const decompressResponse = require('decompress-response');
- const is = require('@sindresorhus/is');
- const mimicResponse = require('mimic-response');
- const progress = require('./progress');
-
- module.exports = (response, options, emitter) => {
- const downloadBodySize = Number(response.headers['content-length']) || null;
-
- const progressStream = progress.download(response, emitter, downloadBodySize);
-
- mimicResponse(response, progressStream);
-
- const newResponse = options.decompress === true &&
- is.function(decompressResponse) &&
- options.method !== 'HEAD' ? decompressResponse(progressStream) : progressStream;
-
- if (!options.decompress && ['gzip', 'deflate'].includes(response.headers['content-encoding'])) {
- options.encoding = null;
- }
-
- emitter.emit('response', newResponse);
-
- emitter.emit('downloadProgress', {
- percent: 0,
- transferred: 0,
- total: downloadBodySize
- });
-
- response.pipe(progressStream);
- };
|