2022-05-14 13:45:51 +08:00
|
|
|
// Package util...
|
|
|
|
//
|
|
|
|
// Description : util...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2021-11-04 2:38 下午
|
|
|
|
package util
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/url"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
// URLParseResult url解析
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2:51 下午 2021/11/4
|
|
|
|
type URLParseResult struct {
|
|
|
|
Scheme string `json:"scheme"`
|
|
|
|
Domain string `json:"domain"`
|
|
|
|
URI string `json:"uri"`
|
|
|
|
Parameter map[string]string `json:"parameter"`
|
|
|
|
}
|
|
|
|
|
2022-05-14 15:48:44 +08:00
|
|
|
// ownURL ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 15:38 2022/5/14
|
|
|
|
type ownURL struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode ...
|
2022-05-14 13:45:51 +08:00
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2:39 下午 2021/11/4
|
2022-05-14 15:48:44 +08:00
|
|
|
func (ou *ownURL) Encode(inputURL string) string {
|
2022-05-14 13:45:51 +08:00
|
|
|
return url.QueryEscape(inputURL)
|
|
|
|
}
|
|
|
|
|
2022-05-14 15:48:44 +08:00
|
|
|
// Decode ...
|
2022-05-14 13:45:51 +08:00
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2:39 下午 2021/11/4
|
2022-05-14 15:48:44 +08:00
|
|
|
func (ou *ownURL) Decode(inputURL string) (string, error) {
|
2022-05-14 13:45:51 +08:00
|
|
|
return url.QueryUnescape(inputURL)
|
|
|
|
}
|
|
|
|
|
2022-05-14 15:48:44 +08:00
|
|
|
// Parse url解析
|
2022-05-14 13:45:51 +08:00
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2:39 下午 2021/11/4
|
2022-05-14 15:48:44 +08:00
|
|
|
func (ou *ownURL) Parse(inputURL string) (*URLParseResult, error) {
|
2022-05-14 13:45:51 +08:00
|
|
|
var (
|
|
|
|
parseResult *url.URL
|
|
|
|
err error
|
|
|
|
)
|
|
|
|
if parseResult, err = url.Parse(inputURL); nil != err {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
detail := &URLParseResult{
|
|
|
|
Scheme: parseResult.Scheme,
|
|
|
|
Domain: parseResult.Host,
|
|
|
|
URI: parseResult.Path,
|
|
|
|
Parameter: make(map[string]string),
|
|
|
|
}
|
|
|
|
for k, v := range parseResult.Query() {
|
|
|
|
if len(v) > 1 {
|
|
|
|
detail.Parameter[k] = "[" + strings.Join(v, ",") + "]"
|
|
|
|
} else {
|
|
|
|
detail.Parameter[k] = v[0]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return detail, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// BuildQueryURL 构建GET链接
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2:43 下午 2021/11/4
|
2022-05-14 15:48:44 +08:00
|
|
|
func (ou *ownURL) BuildQueryURL(apiURL string, parameter map[string]string) string {
|
2022-05-14 13:45:51 +08:00
|
|
|
u := url.Values{}
|
|
|
|
for k, v := range parameter {
|
|
|
|
u.Set(k, v)
|
|
|
|
}
|
|
|
|
apiURL = strings.Trim(apiURL, "?")
|
|
|
|
if strings.Contains(apiURL, "?") {
|
|
|
|
return apiURL + "&" + u.Encode()
|
|
|
|
}
|
|
|
|
return apiURL + "?" + u.Encode()
|
|
|
|
}
|