@@ -12,14 +12,34 @@ export function present(value) {
1212}
1313
1414async function sign_request ( apiConfig , params , options = { } ) {
15- let apiKey = apiConfig . apiKey
16- let apiSecret = apiConfig . apiSecret
17- params = clear_blank ( params ) ;
18- params . signature = await api_sign_request ( params , apiSecret ) ;
19- params . api_key = apiKey ;
20- return params ;
15+ const apiKey = apiConfig . apiKey ;
16+ const apiSecret = apiConfig . apiSecret ;
17+ const signatureVersion = apiConfig . signatureVersion ;
18+
19+ params = clear_blank ( params ) ;
20+
21+ if ( signatureVersion === 2 ) {
22+ for ( let key in params ) {
23+ const value = params [ key ] ;
24+
25+ if ( Array . isArray ( value ) ) {
26+ params [ key ] = value . map ( v =>
27+ typeof v === 'string' ? v . replace ( / & / g, '%26' ) : v
28+ ) ;
29+ } else if ( typeof value === 'string' ) {
30+ params [ key ] = value . replace ( / & / g, '%26' ) ;
31+ }
32+ }
2133 }
2234
35+ params . signature = await api_sign_request ( params , apiSecret ) ;
36+ params . api_key = apiKey ;
37+ return params ;
38+ }
39+
40+
41+
42+
2343 async function api_sign_request ( params_to_sign , api_secret ) {
2444 let to_sign = entries ( params_to_sign ) . filter (
2545 ( [ k , v ] ) => present ( v )
0 commit comments