From 516a958c66d8ec93d292731f57b4ad2e744fd089 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sat, 22 Mar 2025 17:51:27 +0800 Subject: [PATCH] fix: #544 --- internal/pkg/vendors/baishan-sdk/client.go | 22 ++++++++++++++++++---- internal/pkg/vendors/baishan-sdk/models.go | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/internal/pkg/vendors/baishan-sdk/client.go b/internal/pkg/vendors/baishan-sdk/client.go index 44015b62..1c22082d 100644 --- a/internal/pkg/vendors/baishan-sdk/client.go +++ b/internal/pkg/vendors/baishan-sdk/client.go @@ -4,6 +4,8 @@ import ( "encoding/json" "fmt" "net/http" + "net/url" + "reflect" "strings" "time" @@ -35,21 +37,33 @@ func (c *Client) sendRequest(method string, path string, params interface{}) (*r req.Method = method req.URL = "https://cdn.api.baishan.com" + path if strings.EqualFold(method, http.MethodGet) { - qs := make(map[string]string) + qs := url.Values{} if params != nil { temp := make(map[string]any) jsonb, _ := json.Marshal(params) json.Unmarshal(jsonb, &temp) for k, v := range temp { if v != nil { - qs[k] = fmt.Sprintf("%v", v) + rv := reflect.ValueOf(v) + switch rv.Kind() { + case reflect.Slice, reflect.Array: + for i := 0; i < rv.Len(); i++ { + qs.Add(fmt.Sprintf("%s[]", k), fmt.Sprintf("%v", rv.Index(i).Interface())) + } + case reflect.Map: + for _, rk := range rv.MapKeys() { + qs.Add(fmt.Sprintf("%s[%s]", k, rk.Interface()), fmt.Sprintf("%v", rv.MapIndex(rk).Interface())) + } + default: + qs.Set(k, fmt.Sprintf("%v", v)) + } } } } req = req. - SetQueryParams(qs). - SetQueryParam("token", c.apiToken) + SetQueryParam("token", c.apiToken). + SetQueryParamsFromValues(qs).SetDebug(true) } else { req = req. SetHeader("Content-Type", "application/json"). diff --git a/internal/pkg/vendors/baishan-sdk/models.go b/internal/pkg/vendors/baishan-sdk/models.go index e1c79c0e..be9e407c 100644 --- a/internal/pkg/vendors/baishan-sdk/models.go +++ b/internal/pkg/vendors/baishan-sdk/models.go @@ -30,7 +30,7 @@ type CreateCertificateResponse struct { } type GetDomainConfigRequest struct { - Domains string `json:"domains"` + Domains string `json:"domains"` Config []string `json:"config"` }