diff --git a/CHANGELOG.md b/CHANGELOG.md index 20be1aa5..5ecc77d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,21 @@ +## v1.0.8 / 2021-05-31 + +- 【助手】增加url函数 +- 【助手】增加规则验证函数 +- 【助手】优化md5函数 + ## v0.0.7 / 2021-05-31 + - 【助手】增加请求函数 ## v0.0.6 / 2021-05-29 + - 【服务】修复拼多多参数 ## v0.0.5 / 2021-05-29 + - 增加拼多多联盟服务 ## v0.0.4 / 2021-05-29 + - 优化 diff --git a/helper/header/header.go b/helper/header/header.go new file mode 100644 index 00000000..04f15106 --- /dev/null +++ b/helper/header/header.go @@ -0,0 +1,49 @@ +package header + +import ( + "encoding/json" + "net/url" + "strconv" +) + +type Headers map[string]interface{} + +func NewHeaders() Headers { + P := make(Headers) + return P +} + +func (p Headers) Set(key string, value interface{}) { + p[key] = value +} + +func (p Headers) SetHeaders(headers Headers) { + for key, value := range headers { + p[key] = value + } +} + +func (p Headers) GetQuery() string { + u := url.Values{} + for k, v := range p { + u.Set(k, GetHeadersString(v)) + } + return u.Encode() +} + +func GetHeadersString(i interface{}) string { + switch v := i.(type) { + case string: + return v + case []byte: + return string(v) + case int: + return strconv.Itoa(v) + case bool: + return strconv.FormatBool(v) + default: + bytes, _ := json.Marshal(v) + return string(bytes) + } + return "" +} diff --git a/helper/md5/md5.go b/helper/md5/md5.go index 82f9d70b..b8fd6e63 100644 --- a/helper/md5/md5.go +++ b/helper/md5/md5.go @@ -3,10 +3,18 @@ package md5 import ( "crypto/md5" "encoding/hex" + "strings" ) -func MD5(str string) string { +func Md5(str string) string { s := md5.New() s.Write([]byte(str)) return hex.EncodeToString(s.Sum(nil)) } + +func Md5ToUpper(str string) string { + h := md5.New() + h.Write([]byte(str)) + cipherStr := h.Sum(nil) + return strings.ToUpper(hex.EncodeToString(cipherStr)) +} diff --git a/helper/params/params.go b/helper/params/params.go new file mode 100644 index 00000000..c56fedf9 --- /dev/null +++ b/helper/params/params.go @@ -0,0 +1,57 @@ +package params + +import ( + "encoding/json" + "net/url" + "strconv" +) + +type Params map[string]interface{} + +func NewParams() Params { + P := make(Params) + return P +} + +func NewParamsWithType(params ...Params) Params { + p := make(Params) + for _, v := range params { + p.SetParams(v) + } + return p +} + +func (p Params) Set(key string, value interface{}) { + p[key] = value +} + +func (p Params) SetParams(params Params) { + for key, value := range params { + p[key] = value + } +} + +func (p Params) GetQuery() string { + u := url.Values{} + for k, v := range p { + u.Set(k, GetParamsString(v)) + } + return u.Encode() +} + +func GetParamsString(i interface{}) string { + switch v := i.(type) { + case string: + return v + case []byte: + return string(v) + case int: + return strconv.Itoa(v) + case bool: + return strconv.FormatBool(v) + default: + bytes, _ := json.Marshal(v) + return string(bytes) + } + return "" +} diff --git a/helper/preg/preg.go b/helper/preg/preg.go new file mode 100644 index 00000000..44bec8d8 --- /dev/null +++ b/helper/preg/preg.go @@ -0,0 +1,30 @@ +package preg + +import ( + "regexp" +) + +// VerifyMobile 验证手机号码 +// 移动:134 135 136 137 138 139 147 150 151 152 157 158 159 178 182 183 184 187 188 198 +// 联通:130 131 132 145 155 156 166 171 175 176 185 186 +// 电信:133 149 153 173 177 180 181 189 199 +// 虚拟运营商: 170 195 +func VerifyMobile(mobile string) bool { + regular := "^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,5,8-9]))[0-9]{8}$" + reg := regexp.MustCompile(regular) + return reg.MatchString(mobile) +} + +// VerifyIdCard 验证身份证号码 +func VerifyIdCard(idCard string) bool { + regular := "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$|^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$" + reg := regexp.MustCompile(regular) + return reg.MatchString(idCard) +} + +// VerifyEmail 验证邮箱号码 +func VerifyEmail(email string) bool { + pattern := `^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$` + reg := regexp.MustCompile(pattern) + return reg.MatchString(email) +} diff --git a/helper/url/url.go b/helper/url/url.go new file mode 100644 index 00000000..a099e7be --- /dev/null +++ b/helper/url/url.go @@ -0,0 +1,45 @@ +package url + +import ( + "io" + "net/http" + "net/url" + "os" +) + +// LenCode 编码 +func LenCode(s string) string { + escape := url.QueryEscape(s) + return escape +} + +// DeCode 解码 +func DeCode(s string) string { + unescape, _ := url.QueryUnescape(s) + return unescape +} + +// ParseQuery 获取URL参数 https://studygolang.com/articles/2876 +func ParseQuery(s string) map[string][]string { + u, err := url.Parse(s) + if err != nil { + return nil + } + urlParam := u.RawQuery + m, _ := url.ParseQuery(urlParam) + return m +} + +// QueryHeaders 获取Headers参数 https://blog.csdn.net/qq_31387691/article/details/109312920 +func QueryHeaders(url string) map[string][]string { + client := &http.Client{} + reqest, err := http.NewRequest("GET", url, nil) + if err != nil { + return nil + } + response, _ := client.Do(reqest) + stdout := os.Stdout + _, err = io.Copy(stdout, response.Body) + headers := response.Header + return headers +}