From afab301d8ea0427ec594875d4f7a18cab4e4072c Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 17 Jul 2026 16:56:00 +0800 Subject: [PATCH] refactor: add maps utility for getting keys --- pkg/sdk3rd/alibabacloud/oss/signer.go | 7 +++---- pkg/sdk3rd/dcloud/unicloud/client.go | 6 ++---- pkg/sdk3rd/huaweicloud/obs/signer.go | 7 +++---- pkg/sdk3rd/ksyun/zz-shared-common/signer.go | 7 +++---- pkg/sdk3rd/volcengine/tos/signer.go | 7 +++---- pkg/utils/maps/key.go | 16 ++++++++++++++++ 6 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 pkg/utils/maps/key.go diff --git a/pkg/sdk3rd/alibabacloud/oss/signer.go b/pkg/sdk3rd/alibabacloud/oss/signer.go index 7d240571..d710a64b 100644 --- a/pkg/sdk3rd/alibabacloud/oss/signer.go +++ b/pkg/sdk3rd/alibabacloud/oss/signer.go @@ -12,6 +12,8 @@ import ( "sort" "strings" "time" + + xmaps "github.com/certimate-go/certimate/pkg/utils/maps" ) type signer struct { @@ -47,10 +49,7 @@ func (s *signer) Sign(req *http.Request) error { if len(req.URL.Query()) > 0 { query := req.URL.Query() - keys := make([]string, 0, len(query)) - for key := range query { - keys = append(keys, key) - } + keys := xmaps.Keys(query) sort.Strings(keys) for i, key := range keys { diff --git a/pkg/sdk3rd/dcloud/unicloud/client.go b/pkg/sdk3rd/dcloud/unicloud/client.go index 76cfb7f2..9ef47f0c 100644 --- a/pkg/sdk3rd/dcloud/unicloud/client.go +++ b/pkg/sdk3rd/dcloud/unicloud/client.go @@ -19,6 +19,7 @@ import ( "github.com/go-resty/resty/v2" "github.com/certimate-go/certimate/internal/app" + xmaps "github.com/certimate-go/certimate/pkg/utils/maps" ) type Client struct { @@ -354,10 +355,7 @@ func (c *Client) ensureApiUserToken(ctx context.Context) error { } func generateSignature(params map[string]any, secret string) string { - keys := make([]string, 0, len(params)) - for k := range params { - keys = append(keys, k) - } + keys := xmaps.Keys(params) sort.Strings(keys) canonicalStr := "" diff --git a/pkg/sdk3rd/huaweicloud/obs/signer.go b/pkg/sdk3rd/huaweicloud/obs/signer.go index 53282629..01ac8f6f 100644 --- a/pkg/sdk3rd/huaweicloud/obs/signer.go +++ b/pkg/sdk3rd/huaweicloud/obs/signer.go @@ -11,6 +11,8 @@ import ( "sort" "strings" "time" + + xmaps "github.com/certimate-go/certimate/pkg/utils/maps" ) type signer struct { @@ -50,10 +52,7 @@ func (s *signer) Sign(req *http.Request) error { if len(req.URL.Query()) > 0 { query := req.URL.Query() - keys := make([]string, 0, len(query)) - for key := range query { - keys = append(keys, key) - } + keys := xmaps.Keys(query) sort.Strings(keys) for i, key := range keys { diff --git a/pkg/sdk3rd/ksyun/zz-shared-common/signer.go b/pkg/sdk3rd/ksyun/zz-shared-common/signer.go index cee625d8..1ff11414 100644 --- a/pkg/sdk3rd/ksyun/zz-shared-common/signer.go +++ b/pkg/sdk3rd/ksyun/zz-shared-common/signer.go @@ -12,6 +12,8 @@ import ( "sort" "strings" "time" + + xmaps "github.com/certimate-go/certimate/pkg/utils/maps" ) type signer struct { @@ -61,10 +63,7 @@ func (s *signer) Sign(req *http.Request) error { params["Timestamp"] = timestamp params["SignatureVersion"] = "1.0" params["SignatureMethod"] = "HMAC-SHA256" - paramsKeys := make([]string, 0, len(params)) - for k := range params { - paramsKeys = append(paramsKeys, k) - } + paramsKeys := xmaps.Keys(params) sort.Strings(paramsKeys) stringToSign := "" diff --git a/pkg/sdk3rd/volcengine/tos/signer.go b/pkg/sdk3rd/volcengine/tos/signer.go index 917dbcf0..5d4caffd 100644 --- a/pkg/sdk3rd/volcengine/tos/signer.go +++ b/pkg/sdk3rd/volcengine/tos/signer.go @@ -12,6 +12,8 @@ import ( "sort" "strings" "time" + + xmaps "github.com/certimate-go/certimate/pkg/utils/maps" ) type signer struct { @@ -41,10 +43,7 @@ func (s *signer) Sign(req *http.Request) error { if len(req.URL.Query()) > 0 { query := req.URL.Query() - keys := make([]string, 0, len(query)) - for key := range query { - keys = append(keys, key) - } + keys := xmaps.Keys(query) sort.Strings(keys) for i, key := range keys { diff --git a/pkg/utils/maps/key.go b/pkg/utils/maps/key.go new file mode 100644 index 00000000..2c97976c --- /dev/null +++ b/pkg/utils/maps/key.go @@ -0,0 +1,16 @@ +package maps + +// 获取字典中的所有键组成的切片。 +// +// 入参: +// - dict: 字典。 +// +// 出参: +// - keys: 字典中的所有键组成的切片。 +func Keys[Map ~map[K]V, K comparable, V any](dict Map) []K { + keys := make([]K, 0, len(dict)) + for k := range dict { + keys = append(keys, k) + } + return keys +}