| 3650 | } |
| 3651 | |
| 3652 | func Compress(logger *zap.Logger, encoding string, data []byte) ([]byte, error) { |
| 3653 | switch encoding { |
| 3654 | case "gzip": |
| 3655 | logger.Debug("compressing data using gzip") |
| 3656 | var compressedBuffer bytes.Buffer |
| 3657 | gw := gzip.NewWriter(&compressedBuffer) |
| 3658 | _, err := gw.Write(data) |
| 3659 | if err != nil { |
| 3660 | utils.LogError(logger, err, "failed to write compressed data to gzip writer") |
| 3661 | return nil, err |
| 3662 | } |
| 3663 | err = gw.Close() |
| 3664 | if err != nil { |
| 3665 | utils.LogError(logger, err, "failed to close gzip writer") |
| 3666 | return nil, err |
| 3667 | } |
| 3668 | return compressedBuffer.Bytes(), nil |
| 3669 | case "br": |
| 3670 | logger.Debug("compressing data using brotli") |
| 3671 | var compressedBuffer bytes.Buffer |
| 3672 | bw := brotli.NewWriter(&compressedBuffer) |
| 3673 | _, err := bw.Write(data) |
| 3674 | if err != nil { |
| 3675 | utils.LogError(logger, err, "failed to write compressed data to brotli writer") |
| 3676 | return nil, err |
| 3677 | } |
| 3678 | err = bw.Close() |
| 3679 | if err != nil { |
| 3680 | utils.LogError(logger, err, "failed to close brotli writer") |
| 3681 | return nil, err |
| 3682 | } |
| 3683 | return compressedBuffer.Bytes(), nil |
| 3684 | } |
| 3685 | return data, nil |
| 3686 | } |
| 3687 | |
| 3688 | // extractTemplateKeys parses the inner segment of a template placeholder and returns variable keys. |
| 3689 | // Supports patterns like: |