diff --git a/reddit/compression.go b/reddit/compression.go new file mode 100644 index 0000000..c3781f6 --- /dev/null +++ b/reddit/compression.go @@ -0,0 +1,26 @@ +package reddit + +import ( + "compress/gzip" + "compress/zlib" + "io" + "net/http" + "strings" + + "github.com/andybalholm/brotli" +) + +func ResponseReader(resp *http.Response) (io.ReadCloser, error) { + encoding := resp.Header.Get("Content-Encoding") + switch strings.ToLower(encoding) { + case "deflate": + return zlib.NewReader(resp.Body) + case "gzip": + return gzip.NewReader(resp.Body) + case "br": + return io.NopCloser(brotli.NewReader(resp.Body)), nil + case "zstd": + return zlib.NewReader(resp.Body) + } + return resp.Body, nil +}