|
@@ -704,10 +704,10 @@ var Redownload = function() {
|
|
|
|
|
|
debug('Downloading %s', entry.url);
|
|
debug('Downloading %s', entry.url);
|
|
|
|
|
|
- // Always add gzip and webp headers before sending, in case the server listens to them
|
|
|
|
|
|
+ // Always add compression and webp headers before sending, in case the server listens to them
|
|
var reqHeaders = [];
|
|
var reqHeaders = [];
|
|
reqHeaders['Accept'] = '*/*,image/webp';
|
|
reqHeaders['Accept'] = '*/*,image/webp';
|
|
- reqHeaders['Accept-Encoding'] = 'gzip, deflate';
|
|
|
|
|
|
+ reqHeaders['Accept-Encoding'] = 'gzip, deflate, br';
|
|
reqHeaders['Connection'] = 'keep-alive';
|
|
reqHeaders['Connection'] = 'keep-alive';
|
|
|
|
|
|
var requestOptions = {
|
|
var requestOptions = {
|
|
@@ -836,6 +836,28 @@ var Redownload = function() {
|
|
bodySize += data.length;
|
|
bodySize += data.length;
|
|
}).pipe(deflate);
|
|
}).pipe(deflate);
|
|
|
|
|
|
|
|
+ break;
|
|
|
|
+ case 'br':
|
|
|
|
+
|
|
|
|
+ var brotli = zlib.createBrotliDecompress();
|
|
|
|
+
|
|
|
|
+ brotli.on('data', function (data) {
|
|
|
|
+
|
|
|
|
+ bodyChunks.push(data);
|
|
|
|
+ uncompressedSize += data.length;
|
|
|
|
+ }).on('end', function () {
|
|
|
|
+ isCompressed = true;
|
|
|
|
+ tally();
|
|
|
|
+ }).on('error', function(err) {
|
|
|
|
+ debug('Error while decoding %s', requestOptions.url);
|
|
|
|
+ debug(err);
|
|
|
|
+ callback(err);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ res.on('data', function (data) {
|
|
|
|
+ bodySize += data.length;
|
|
|
|
+ }).pipe(brotli);
|
|
|
|
+
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
res.on('data', function (data) {
|
|
res.on('data', function (data) {
|