Skip to content

Commit 0242b8a

Browse files
committed
预处理signHeaders和headers
1 parent 5968f7e commit 0242b8a

File tree

2 files changed

+35
-19
lines changed

2 files changed

+35
-19
lines changed

lib/base.js

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,19 @@
33
const parse = require('url').parse;
44
const querystring = require('querystring');
55

6+
function loweredKeys(headers = {}) {
7+
var lowered = {};
8+
9+
var keys = Object.keys(headers);
10+
for (let i = 0; i < keys.length; i++) {
11+
let key = keys[i];
12+
lowered[key.toLowerCase()] = headers[key];
13+
}
14+
15+
return lowered;
16+
}
17+
18+
619
/**
720
* API Gateway Client
821
*/
@@ -19,6 +32,11 @@ class Base {
1932
opts.data = null;
2033
opts.query = null;
2134
}
35+
36+
// lowerify the header key
37+
opts.headers = loweredKeys(opts.headers);
38+
opts.signHeaders = loweredKeys(opts.signHeaders);
39+
2240
return yield* this.request('GET', parsed, opts);
2341
}
2442

@@ -32,7 +50,11 @@ class Base {
3250
opts.query = null;
3351
}
3452

35-
var headers = opts.headers || {};
53+
// lowerify the header key
54+
opts.headers = loweredKeys(opts.headers);
55+
opts.signHeaders = loweredKeys(opts.signHeaders);
56+
57+
var headers = opts.headers;
3658
var type = headers['content-type'] || headers['Content-Type'];
3759
if (!type) {
3860
headers['content-type'] = 'application/json';
@@ -62,6 +84,11 @@ class Base {
6284
opts.data = null;
6385
opts.query = null;
6486
}
87+
88+
// lowerify the header key
89+
opts.headers = loweredKeys(opts.headers);
90+
opts.signHeaders = loweredKeys(opts.signHeaders);
91+
6592
return yield* this.request('DELETE', parsed, opts);
6693
}
6794
}

lib/client.js

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ const ua = require('./ua');
1111
const Base = require('./base');
1212

1313
const form = 'application/x-www-form-urlencoded';
14+
const hasOwnProperty = function (obj, key) {
15+
Object.prototype.hasOwnProperty.call(obj, key);
16+
};
1417

1518
/**
1619
* API Gateway Client
@@ -83,7 +86,7 @@ class Client extends Base {
8386
for (var i = 0; i < keys.length; i++) {
8487
var key = keys[i];
8588
// x-ca- 开头的header或者指定的header
86-
if (key.startsWith('x-ca-') || signHeaders.hasOwnProperty(key)) {
89+
if (key.startsWith('x-ca-') || hasOwnProperty(signHeaders, key)) {
8790
signKeys.push(key);
8891
}
8992
}
@@ -111,28 +114,14 @@ class Client extends Base {
111114
return result;
112115
}
113116

114-
loweredKeys(headers = {}) {
115-
var lowered = {};
116-
117-
var keys = Object.keys(headers);
118-
for (let i = 0; i < keys.length; i++) {
119-
let key = keys[i];
120-
lowered[key.toLowerCase()] = headers[key];
121-
}
122-
123-
return lowered;
124-
}
125-
126117
buildHeaders(headers = {}, signHeaders) {
127-
var now = new Date();
128-
129118
return Object.assign({
130-
'x-ca-timestamp': now.getTime(),
119+
'x-ca-timestamp': Date.now(),
131120
'x-ca-key': this.appKey,
132121
'x-ca-nonce': uuid.v4(),
133122
'x-ca-stage': this.stage,
134123
'accept': 'application/json'
135-
}, this.loweredKeys(headers), signHeaders);
124+
}, headers, signHeaders);
136125
}
137126

138127
getSignedHeadersString(signHeaders, headers) {
@@ -146,7 +135,7 @@ class Client extends Base {
146135
}
147136

148137
* request(method, url, opts, originData) {
149-
var signHeaders = this.loweredKeys(opts.signHeaders);
138+
var signHeaders = opts.signHeaders;
150139
// 小写化,合并之后的headers
151140
var headers = this.buildHeaders(opts.headers, signHeaders);
152141

0 commit comments

Comments
 (0)