From 8b9a77afd5f7f19e6d9ea051b26df32d4cfcdc86 Mon Sep 17 00:00:00 2001 From: Yun Date: Wed, 13 Dec 2023 14:32:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96GET=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=AF=B9=E5=8F=82=E6=95=B0=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 6 +++--- go.sum | 8 ++++---- request.go | 47 ++++++++++++++++++++++++++++++++++++++++++++--- types.go | 24 ++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 03541fa..78dac11 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,10 @@ -module code.yun.ink/open/curlx +module code.yun.ink/pkg/curlx go 1.19 require ( - github.com/tidwall/gjson v1.15.0 - golang.org/x/net v0.14.0 + github.com/tidwall/gjson v1.17.0 + golang.org/x/net v0.18.0 ) require ( diff --git a/go.sum b/go.sum index d1d5dd2..cf377b8 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,8 @@ -github.com/tidwall/gjson v1.15.0 h1:5n/pM+v3r5ujuNl4YLZLsQ+UE5jlkLVm7jMzT5Mpolw= -github.com/tidwall/gjson v1.15.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= +github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= diff --git a/request.go b/request.go index 07a77fa..3a1d867 100644 --- a/request.go +++ b/request.go @@ -13,8 +13,6 @@ import ( "strings" ) - - /** * 处理请求类型 */ @@ -181,7 +179,50 @@ func (p *CurlParams) parseParams() (str io.Reader, err error) { } return strings.NewReader(values.Encode()), nil } else { - return nil, errors.New("不支持的数据类型") + // 如果是GET请求 + if p.Method == MethodGet { + // 判断需要map[string]interface{}类型 + paramValue, ok := p.Params.(map[string]interface{}) + if !ok { + return strings.NewReader(""), errors.New("参数需map[string]interface{}") + } + // 拼接参数到URL + if strings.Contains(p.Url, "?") { + p.Url += "&" + } else { + p.Url += "?" + } + for k, v := range paramValue { + // 字符串 + if v_string, ok := v.(string); ok { + p.Url += k + "=" + v_string + "&" + } + // 字符串切片 + if vv, ok := v.([]string); ok { + for _, vvv := range vv { + p.Url += k + "[]=" + vvv + "&" + } + } + // int转string + if v_int, ok := v.(int); ok { + p.Url += k + "=" + strconv.Itoa(v_int) + "&" + } + // int64转string + if v_int64, ok := v.(int64); ok { + p.Url += k + "=" + strconv.FormatInt(v_int64, 10) + "&" + } + // float32转string + if v_float32, ok := v.(float32); ok { + p.Url += k + "=" + strconv.FormatFloat(float64(v_float32), 'f', -1, 32) + "&" + } + // float64转string + if v_float64, ok := v.(float64); ok { + p.Url += k + "=" + strconv.FormatFloat(v_float64, 'f', -1, 64) + "&" + } + } + } else { + return nil, errors.New("curlx 不支持的数据类型") + } } } diff --git a/types.go b/types.go index b67168e..fb0251f 100644 --- a/types.go +++ b/types.go @@ -40,3 +40,27 @@ type CurlParams struct { Cookies interface{} ContentType ContentType // FORM,JSON,XML } + + +type UserAgent string + +const( + UserAgentChrome UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " + UserAgentFirefox UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 " + UserAgentSafari UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 " + UserAgentOpera UserAgent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.18 " + UserAgentIE UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; " + UserAgentEdge UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " + UserAgentQQ UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; " + UserAgentMaxthon UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 " + UserAgentUC UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 " + UserAgentSougou UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgentLBBROWSER UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgent2345 UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgentQihu UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgentXiaoMi UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgentQuark UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgentQiyu UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgentWechat UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " + UserAgentTaobao UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " +) \ No newline at end of file