@@ -20,14 +20,15 @@ const (
20
20
var GMT , _ = time .LoadLocation ("GMT" )
21
21
22
22
// GetApiTimestamp 获取格式为 'Fri, 13 Dec 2024 02:57:00 GMT' 的时间戳
23
- func GetApiTimestamp () (result string ) {
24
- return time .Now ().In (GMT ).Format (time .RFC1123 )
23
+ func GetApiTimestamp () (result * string ) {
24
+ timestamp := time .Now ().In (GMT ).Format (time .RFC1123 )
25
+ return & timestamp
25
26
}
26
27
27
28
// BuildCanonicalString 构建规范字符串
28
- func BuildCanonicalString (method string , resource string , params map [string ]string , headers map [string ]string ) (result string ) {
29
+ func BuildCanonicalString (method * string , resource * string , params map [string ]* string , headers map [string ]* string ) (result * string ) {
29
30
var builder strings.Builder
30
- builder .WriteString (method + "\n " )
31
+ builder .WriteString (* method + "\n " )
31
32
32
33
headersToSign := make (map [string ]string )
33
34
@@ -36,7 +37,11 @@ func BuildCanonicalString(method string, resource string, params map[string]stri
36
37
if key != "" {
37
38
lowerKey := strings .ToLower (key )
38
39
if lowerKey == strings .ToLower (ContentMD5 ) || lowerKey == strings .ToLower (ContentType ) || lowerKey == strings .ToLower (Date ) || strings .HasPrefix (lowerKey , PREFIX ) {
39
- headersToSign [lowerKey ] = value
40
+ if value != nil {
41
+ headersToSign [lowerKey ] = * value
42
+ } else {
43
+ headersToSign [lowerKey ] = ""
44
+ }
40
45
}
41
46
}
42
47
}
@@ -52,7 +57,11 @@ func BuildCanonicalString(method string, resource string, params map[string]stri
52
57
// 添加 params
53
58
for key , value := range params {
54
59
if strings .HasPrefix (key , PREFIX ) {
55
- headersToSign [key ] = value
60
+ if value != nil {
61
+ headersToSign [key ] = * value
62
+ } else {
63
+ headersToSign [key ] = ""
64
+ }
56
65
}
57
66
}
58
67
@@ -64,19 +73,24 @@ func BuildCanonicalString(method string, resource string, params map[string]stri
64
73
sort .Strings (keys )
65
74
66
75
for _ , key := range keys {
67
- builder .WriteString (key + ":" + headersToSign [key ] + "\n " )
76
+ if strings .HasPrefix (key , PREFIX ) {
77
+ builder .WriteString (key + ":" + headersToSign [key ])
78
+ } else {
79
+ builder .WriteString (headersToSign [key ])
80
+ }
81
+ builder .WriteString ("\n " )
68
82
}
69
83
70
84
// 添加资源部分
71
85
builder .WriteString (buildCanonicalResource (resource , params ))
72
-
73
- return builder . String ()
86
+ res := builder . String ()
87
+ return & res
74
88
}
75
89
76
90
// buildCanonicalResource 构建规范资源字符串
77
- func buildCanonicalResource (resource string , params map [string ]string ) string {
91
+ func buildCanonicalResource (resource * string , params map [string ]* string ) string {
78
92
var builder strings.Builder
79
- builder .WriteString (resource )
93
+ builder .WriteString (* resource )
80
94
81
95
if params != nil && len (params ) > 0 {
82
96
var keys []string
@@ -91,19 +105,20 @@ func buildCanonicalResource(resource string, params map[string]string) string {
91
105
builder .WriteString ("&" )
92
106
}
93
107
builder .WriteString (url .QueryEscape (key ))
94
- if value , exists := params [key ]; exists && value != "" {
95
- builder .WriteString ("=" + url .QueryEscape (value ))
108
+ if value , exists := params [key ]; exists && * value != "" {
109
+ builder .WriteString ("=" + url .QueryEscape (* value ))
96
110
}
97
111
}
98
112
}
99
113
return builder .String ()
100
114
}
101
115
102
116
// GetSignature 获取签名
103
- func GetSignature (strToSign string , accessKeyId string , accessKeySecret string ) (result string ) {
104
- secretKey := []byte (accessKeySecret )
117
+ func GetSignature (strToSign * string , accessKeyId * string , accessKeySecret * string ) (result * string ) {
118
+ secretKey := []byte (* accessKeySecret )
105
119
h := hmac .New (sha1 .New , secretKey )
106
- h .Write ([]byte (strToSign ))
120
+ h .Write ([]byte (* strToSign ))
107
121
signature := base64 .StdEncoding .EncodeToString (h .Sum (nil ))
108
- return "ODPS " + accessKeyId + ":" + signature
122
+ res := "ODPS " + * accessKeyId + ":" + signature
123
+ return & res
109
124
}
0 commit comments