(buf *bytes.Buffer, encoding string, logger log.Logger)
| 481 | } |
| 482 | |
| 483 | func decode(buf *bytes.Buffer, encoding string, logger log.Logger) ([]byte, error) { |
| 484 | // if the response is gzipped, lets unzip it here |
| 485 | if strings.EqualFold(encoding, "gzip") { |
| 486 | gReader, err := gzip.NewReader(buf) |
| 487 | if err != nil { |
| 488 | return nil, err |
| 489 | } |
| 490 | defer runutil.CloseWithLogOnErr(logger, gReader, "close gzip reader") |
| 491 | |
| 492 | return io.ReadAll(gReader) |
| 493 | } |
| 494 | |
| 495 | // if the response is snappy compressed, decode it here |
| 496 | if strings.EqualFold(encoding, "snappy") { |
| 497 | sReader := snappy.NewReader(buf) |
| 498 | return io.ReadAll(sReader) |
| 499 | } |
| 500 | |
| 501 | // if the response is zstd compressed, decode it here |
| 502 | if strings.EqualFold(encoding, "zstd") { |
| 503 | zReader, err := zstd.NewReader(buf) |
| 504 | if err != nil { |
| 505 | return nil, err |
| 506 | } |
| 507 | defer runutil.CloseWithLogOnErr(logger, zReader.IOReadCloser(), "close zstd decoder") |
| 508 | |
| 509 | return io.ReadAll(zReader) |
| 510 | } |
| 511 | |
| 512 | return buf.Bytes(), nil |
| 513 | } |
| 514 | |
| 515 | // UnmarshalJSON implements json.Unmarshaler. |
| 516 | func (s *PrometheusData) UnmarshalJSON(data []byte) error { |
no test coverage detected