1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-11 08:12:26 +08:00

fix: fix issue #292, change query params type to map[string][]string

This commit is contained in:
dudaodong
2025-03-28 14:00:11 +08:00
parent 169f280c9c
commit 0ef45b533b
5 changed files with 238 additions and 17 deletions

View File

@@ -310,7 +310,7 @@ func IsTelnetConnected(host string, port string) bool {
// BuildUrl builds a URL from the given params.
// Play: todo
func BuildUrl(scheme, host, path string, query map[string]string) (string, error) {
func BuildUrl(scheme, host, path string, query map[string][]string) (string, error) {
if err := validateScheme(scheme); err != nil {
return "", err
}
@@ -329,15 +329,17 @@ func BuildUrl(scheme, host, path string, query map[string]string) (string, error
if path == "" {
parsedUrl.Path = "/"
} else if !strings.HasPrefix(path, "/") {
path = "/" + path
parsedUrl.Path = "/" + path
} else {
parsedUrl.Path = path
}
queryParams := parsedUrl.Query()
for key, value := range query {
queryParams.Add(key, value)
for key, values := range query {
for _, value := range values {
queryParams.Add(key, value)
}
}
parsedUrl.RawQuery = queryParams.Encode()
@@ -370,14 +372,15 @@ var alphaNumericRegex = regexp.MustCompile(`^[a-zA-Z0-9]+$`)
// AddQueryParams adds query parameters to the given URL.
// Play: todoå
func AddQueryParams(urlStr string, params map[string]string) (string, error) {
func AddQueryParams(urlStr string, params map[string][]string) (string, error) {
parsedUrl, err := url.Parse(urlStr)
if err != nil {
return "", err
}
queryParams := parsedUrl.Query()
for k, v := range params {
for k, values := range params {
if k == "" {
return "", errors.New("empty key is not allowed")
}
@@ -386,11 +389,12 @@ func AddQueryParams(urlStr string, params map[string]string) (string, error) {
return "", fmt.Errorf("query parameter key %s must be alphanumeric", k)
}
if !alphaNumericRegex.MatchString(v) {
return "", fmt.Errorf("query parameter value %s must be alphanumeric", v)
for _, v := range values {
if !alphaNumericRegex.MatchString(v) {
return "", fmt.Errorf("query parameter value %s must be alphanumeric", v)
}
queryParams.Add(k, v)
}
queryParams.Add(k, v)
}
parsedUrl.RawQuery = queryParams.Encode()