package client import ( "compress/gzip" "io" "net/http" "strings" "github.com/andybalholm/brotli" ) func readResponseBody(resp *http.Response) ([]byte, error) { encoding := strings.ToLower(strings.TrimSpace(resp.Header.Get("Content-Encoding"))) var reader io.Reader = resp.Body switch encoding { case "gzip": gz, err := gzip.NewReader(resp.Body) if err != nil { return nil, err } defer func() { _ = gz.Close() }() reader = gz case "br": reader = brotli.NewReader(resp.Body) } return io.ReadAll(reader) } func preview(b []byte) string { s := strings.TrimSpace(string(b)) if len(s) > 160 { return s[:160] } return s } func (c *Client) jsonHeaders(headers map[string]string) map[string]string { out := cloneStringMap(headers) out["Content-Type"] = "application/json" return out } func cloneStringMap(in map[string]string) map[string]string { out := make(map[string]string, len(in)) for k, v := range in { out[k] = v } return out }