Ai
1 Star 0 Fork 0

k3x/go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
response_decompress.go 1.14 KB
一键复制 编辑 原始数据 按行查看 历史
k3x 提交于 2022-01-06 01:16 +08:00 . browsers
package urlx
import (
"io"
"net/http"
"github.com/andybalholm/brotli"
"github.com/klauspost/compress/flate"
"github.com/klauspost/compress/gzip"
"github.com/klauspost/compress/s2"
"github.com/klauspost/compress/snappy"
"github.com/klauspost/compress/zstd"
)
// DecompressionBody 解压Body
func DecompressionBody(next Process) Process {
return func(resp *http.Response, body io.ReadCloser) (err error) {
defer body.Close()
contentEncoding := resp.Header.Get(HeaderContentEncoding)
if contentEncoding != "" {
decoded := true
switch contentEncoding {
case "br":
body = io.NopCloser(brotli.NewReader(body))
case "deflate":
body = flate.NewReader(body)
case "gzip":
body, err = gzip.NewReader(body)
case "s2":
body = io.NopCloser(s2.NewReader(body))
case "snappy":
body = io.NopCloser(snappy.NewReader(body))
case "zstd":
b, er := zstd.NewReader(body)
if er != nil {
return er
}
body = b.IOReadCloser()
default:
decoded = false
}
if err != nil {
return
}
if decoded {
resp.Header.Del(HeaderContentEncoding)
}
}
return next(resp, io.NopCloser(body))
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/k3x/go.git
git@gitee.com:k3x/go.git
k3x
go
go
82f96e922e7b

搜索帮助