1 Star 1 Fork 1

xiaoyutab / xgotool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
hook.go 2.23 KB
一键复制 编辑 原始数据 按行查看 历史
xiaoyutab 提交于 2024-03-27 13:50 . 添加部分增强功能
package https
import (
"fmt"
"net/http/cookiejar"
"net/url"
"os"
"time"
)
// 请求开始前的钩子操作
func (c *CURL) hookBefore() *CURL {
if c == nil {
c = &CURL{
Error: fmt.Errorf("http实例未正常初始化"),
}
}
c.
header_default("accept", _default.AC).
header_default("Content-Type", _default.CT).
header_default("accept-language", _default.ACL).
header_default("user-agent", _default.UA)
// 缓存判定,如果存在缓存的话就直接追加响应值,且配置error错误对象
ck, err := url.QueryUnescape(_default.cacheInterface.Get(c.getKey()))
if err == nil && ck != "" {
c.Body = ck
c.option.cache_hit = true
}
return c
}
// 设置header默认值,且配置该值忽略日志记录
//
// k header下标
// v 下标值
func (c *CURL) header_default(k, v string) *CURL {
// 追加Header请求头
if c.Header_quest == nil {
c.Header_quest = map[string]string{}
}
if _, ok := c.Header_quest[k]; !ok {
c.Header_quest[k] = v
// 判断忽略参数里有无此head头
for i := 0; i < len(c.option.ignore_header); i++ {
if c.option.ignore_header[i] == k {
return c
}
}
c.option.ignore_header = append(c.option.ignore_header, k)
}
return c
}
// 请求结束的钩子操作
func (c *CURL) hookEnd() *CURL {
c.EndTime = time.Now()
// 清理缓存文件
for i := 0; i < len(c.files_removes); i++ {
os.Remove(c.files_removes[i])
}
// 记录缓存
if c.option.cache_time > 0 {
// 将Body进行 url.QueryEscape 编码,避免中间出现"导致redis存储失败
_default.cacheInterface.Set(c.getKey(), url.QueryEscape(c.Body), c.option.cache_time)
}
// 移除忽略的请求头信息
for i := 0; i < len(c.option.ignore_header); i++ {
delete(c.Header_quest, c.option.ignore_header[i])
}
// 如果设置了日志记录并且未命中缓存,则调用日志函数进行对应记录
if !c.option.noLog && !c.option.cache_hit {
// 记录日志
for i := 0; i < len(_default.LogFunc); i++ {
_default.LogFunc[i](c)
}
}
return c
}
// 获取cookie的jar信息
func getJar() *cookiejar.Jar {
if !_default.saveCookie {
return nil
}
if _default.jar != nil {
return _default.jar
}
jar, err := cookiejar.New(nil)
if err != nil {
return nil
}
_default.jar = jar
return jar
}
Go
1
https://gitee.com/xiaoyutab/xgotool.git
git@gitee.com:xiaoyutab/xgotool.git
xiaoyutab
xgotool
xgotool
v0.3.9

搜索帮助

53164aa7 5694891 3bd8fe86 5694891