2828import java .io .IOException ;
2929import java .io .InputStream ;
3030import java .nio .file .Path ;
31+ import java .util .zip .GZIPInputStream ;
3132
3233class MonitoringInputStream extends InputStream {
3334 private final InputStream content ;
@@ -36,11 +37,27 @@ class MonitoringInputStream extends InputStream {
3637 private long byteCount = 0 ;
3738 private String fileName ;
3839
39- MonitoringInputStream (InputStream content , ProgressMonitor downloadMonitor , Path target , RawResponse contentSize ) {
40- this .content = content ;
40+ MonitoringInputStream (InputStream content , ProgressMonitor downloadMonitor , Path target , RawResponse rawResponse ) {
41+ this (content , downloadMonitor , target .getFileName ().toString (), rawResponse );
42+ }
43+
44+ MonitoringInputStream (InputStream content , ProgressMonitor downloadMonitor , String fileName , RawResponse rawResponse ) {
45+ this .content = wrap (content , rawResponse );
4146 this .downloadMonitor = downloadMonitor ;
42- this .fileName = target .getFileName ().toString ();
43- this .totalSize = getBodySize (contentSize );
47+ this .fileName = fileName ;
48+ this .totalSize = getBodySize (rawResponse );
49+ }
50+
51+ private InputStream wrap (InputStream is , RawResponse rawResponse ) {
52+ try {
53+ if (is .available () > 0 && "gzip" .equalsIgnoreCase (rawResponse .getContentType ())) {
54+ return new GZIPInputStream (is );
55+ } else {
56+ return is ;
57+ }
58+ }catch (Exception e ){
59+ throw new UnirestException (e );
60+ }
4461 }
4562
4663 private Long getBodySize (RawResponse r ) {
0 commit comments