@@ -454,35 +454,9 @@ func BodyBytes(res *http.Response, logger log.Logger) ([]byte, error) {
454
454
}
455
455
}
456
456
457
- // if the response is gzipped, lets unzip it here
458
- if strings .EqualFold (res .Header .Get ("Content-Encoding" ), "gzip" ) {
459
- gReader , err := gzip .NewReader (buf )
460
- if err != nil {
461
- return nil , err
462
- }
463
- defer runutil .CloseWithLogOnErr (logger , gReader , "close gzip reader" )
464
-
465
- return io .ReadAll (gReader )
466
- }
467
-
468
- // if the response is snappy compressed, decode it here
469
- if strings .EqualFold (res .Header .Get ("Content-Encoding" ), "snappy" ) {
470
- sReader := snappy .NewReader (buf )
471
- return io .ReadAll (sReader )
472
- }
473
-
474
- // if the response is zstd compressed, decode it here
475
- if strings .EqualFold (res .Header .Get ("Content-Encoding" ), "zstd" ) {
476
- zReader , err := zstd .NewReader (buf )
477
- if err != nil {
478
- return nil , err
479
- }
480
- defer runutil .CloseWithLogOnErr (logger , io .NopCloser (zReader ), "close zstd decoder" )
481
-
482
- return io .ReadAll (zReader )
483
- }
484
-
485
- return buf .Bytes (), nil
457
+ // Handle decoding response if it was compressed
458
+ encoding := res .Header .Get ("Content-Encoding" )
459
+ return decode (buf , encoding , logger )
486
460
}
487
461
488
462
func BodyBytesFromHTTPGRPCResponse (res * httpgrpc.HTTPResponse , logger log.Logger ) ([]byte , error ) {
@@ -491,9 +465,16 @@ func BodyBytesFromHTTPGRPCResponse(res *httpgrpc.HTTPResponse, logger log.Logger
491
465
headers [h .Key ] = h .Values
492
466
}
493
467
468
+ // Handle decoding response if it was compressed
469
+ encoding := headers .Get ("Content-Encoding" )
470
+ buf := bytes .NewBuffer (res .Body )
471
+ return decode (buf , encoding , logger )
472
+ }
473
+
474
+ func decode (buf * bytes.Buffer , encoding string , logger log.Logger ) ([]byte , error ) {
494
475
// if the response is gzipped, lets unzip it here
495
- if strings .EqualFold (headers . Get ( "Content-Encoding" ) , "gzip" ) {
496
- gReader , err := gzip .NewReader (bytes . NewBuffer ( res . Body ) )
476
+ if strings .EqualFold (encoding , "gzip" ) {
477
+ gReader , err := gzip .NewReader (buf )
497
478
if err != nil {
498
479
return nil , err
499
480
}
@@ -503,14 +484,14 @@ func BodyBytesFromHTTPGRPCResponse(res *httpgrpc.HTTPResponse, logger log.Logger
503
484
}
504
485
505
486
// if the response is snappy compressed, decode it here
506
- if strings .EqualFold (headers . Get ( "Content-Encoding" ) , "snappy" ) {
507
- sReader := snappy .NewReader (bytes . NewBuffer ( res . Body ) )
487
+ if strings .EqualFold (encoding , "snappy" ) {
488
+ sReader := snappy .NewReader (buf )
508
489
return io .ReadAll (sReader )
509
490
}
510
491
511
492
// if the response is zstd compressed, decode it here
512
- if strings .EqualFold (headers . Get ( "Content-Encoding" ) , "zstd" ) {
513
- zReader , err := zstd .NewReader (bytes . NewBuffer ( res . Body ) )
493
+ if strings .EqualFold (encoding , "zstd" ) {
494
+ zReader , err := zstd .NewReader (buf )
514
495
if err != nil {
515
496
return nil , err
516
497
}
@@ -519,7 +500,7 @@ func BodyBytesFromHTTPGRPCResponse(res *httpgrpc.HTTPResponse, logger log.Logger
519
500
return io .ReadAll (zReader )
520
501
}
521
502
522
- return res . Body , nil
503
+ return buf . Bytes () , nil
523
504
}
524
505
525
506
// UnmarshalJSON implements json.Unmarshaler.
0 commit comments