Skip to content

Commit 19d602d

Browse files
committed
修复立即返回的 Bug
1 parent ca06411 commit 19d602d

File tree

3 files changed

+51
-46
lines changed

3 files changed

+51
-46
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cos-nodejs-sdk-v5",
3-
"version": "2.8.0",
3+
"version": "2.8.1",
44
"description": "cos nodejs sdk v5",
55
"main": "index.js",
66
"scripts": {

sdk/util.js

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -403,60 +403,61 @@ var apiWrapper = function (apiName, apiFn) {
403403
callback && callback(formatResult(err), formatResult(data));
404404
};
405405

406-
if (apiName !== 'getService' && apiName !== 'abortUploadTask') {
407-
// 判断参数是否完整
408-
var missingResult;
409-
if (missingResult = hasMissingParams(apiName, params)) {
410-
_callback({error: 'missing param ' + missingResult});
411-
return;
412-
}
413-
// 判断 region 格式
414-
if (params.Region) {
415-
if (params.Region.indexOf('cos.') > -1) {
416-
_callback({error: 'param Region should not be start with "cos."'});
417-
return;
418-
} else if (!/^([a-z\d-]+)$/.test(params.Region)) {
419-
_callback({error: 'Region format error.'});
420-
return;
406+
var checkParams = function () {
407+
if (apiName !== 'getService' && apiName !== 'abortUploadTask') {
408+
// 判断参数是否完整
409+
var missingResult = hasMissingParams(apiName, params)
410+
if (missingResult) {
411+
return 'missing param ' + missingResult;
421412
}
422413
// 判断 region 格式
423-
if (!self.options.CompatibilityMode && params.Region.indexOf('-') === -1 && params.Region !== 'yfb' && params.Region !== 'default') {
424-
console.warn('warning: param Region format error, find help here: https://cloud.tencent.com/document/product/436/6224');
414+
if (params.Region) {
415+
if (params.Region.indexOf('cos.') > -1) {
416+
return 'param Region should not be start with "cos."';
417+
} else if (!/^([a-z\d-]+)$/.test(params.Region)) {
418+
return 'Region format error.';
419+
}
420+
// 判断 region 格式
421+
if (!self.options.CompatibilityMode && params.Region.indexOf('-') === -1 && params.Region !== 'yfb' && params.Region !== 'default') {
422+
console.warn('warning: param Region format error, find help here: https://cloud.tencent.com/document/product/436/6224');
423+
}
425424
}
426-
}
427-
// 兼容不带 AppId 的 Bucket
428-
if (params.Bucket) {
429-
if (!/^([a-z\d-]+)-(\d+)$/.test(params.Bucket)) {
425+
// 兼容不带 AppId 的 Bucket
426+
if (params.Bucket) {
427+
if (!/^([a-z\d-]+)-(\d+)$/.test(params.Bucket)) {
428+
if (params.AppId) {
429+
params.Bucket = params.Bucket + '-' + params.AppId;
430+
} else if (self.options.AppId) {
431+
params.Bucket = params.Bucket + '-' + self.options.AppId;
432+
} else {
433+
return 'Bucket should format as "test-1250000000".';
434+
}
435+
}
430436
if (params.AppId) {
431-
params.Bucket = params.Bucket + '-' + params.AppId;
432-
} else if (self.options.AppId) {
433-
params.Bucket = params.Bucket + '-' + self.options.AppId;
434-
} else {
435-
_callback({error: 'Bucket should format as "test-1250000000".'});
436-
return;
437+
console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g Bucket:"test-1250000000" ).');
438+
delete params.AppId;
437439
}
438440
}
439-
if (params.AppId) {
440-
console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g Bucket:"test-1250000000" ).');
441-
delete params.AppId;
441+
// 如果 Key 是 / 开头,强制去掉第一个 /
442+
if (!self.options.UseRawKey && params.Key && params.Key.substr(0, 1) === '/') {
443+
params.Key = params.Key.substr(1);
442444
}
443445
}
444-
// 如果 Key 是 / 开头,强制去掉第一个 /
445-
if (!self.options.UseRawKey && params.Key && params.Key.substr(0, 1) === '/') {
446-
params.Key = params.Key.substr(1);
447-
}
448-
}
446+
};
449447

448+
var errMsg = checkParams();
450449
var isSync = apiName === 'getAuth' || apiName === 'getV4Auth' || apiName === 'getObjectUrl';
451450
var Promise = global.Promise;
452451
if (!isSync && Promise && !callback) {
453452
return new Promise(function (resolve, reject) {
454453
callback = function (err, data) {
455454
err ? reject(err) : resolve(data);
456455
};
456+
if (errMsg) return _callback({error: errMsg});
457457
apiFn.call(self, params, _callback);
458458
});
459459
} else {
460+
if (errMsg) return _callback({error: errMsg});
460461
var res = apiFn.call(self, params, _callback);
461462
if (isSync) return res;
462463
}

test/test.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2909,13 +2909,6 @@ group('getBucketAccelerate', function () {
29092909
});
29102910

29112911
group('Promise', function () {
2912-
test('getService callback', function (done, assert) {
2913-
var res = cos.getService(function (err, data) {
2914-
assert.ok(!err && data);
2915-
done();
2916-
});
2917-
assert.ok(!res);
2918-
});
29192912

29202913
test('Promise() getService', function (done, assert) {
29212914
cos.getService().then(function (data) {
@@ -2962,15 +2955,26 @@ group('Promise', function () {
29622955
});
29632956
});
29642957

2958+
test('headBucket callback', function (done, assert) {
2959+
var res = cos.headBucket({
2960+
Bucket: config.Bucket,
2961+
Region: config.Region,
2962+
}, function (err, data) {
2963+
assert.ok(!err && data);
2964+
done();
2965+
});
2966+
assert.ok(!res);
2967+
});
2968+
29652969
test('Promise() headBucket error', function (done, assert) {
29662970
cos.headBucket({
2967-
Bucket: Date.now() + '-' + config.Bucket,
2968-
Region: config.Region,
2971+
Bucket: config.Bucket,
2972+
Region: config.Region + '/',
29692973
}).then(function (data) {
29702974
assert.ok(!data);
29712975
done();
29722976
}).catch(function (err) {
2973-
assert.ok(err && err.statusCode === 404);
2977+
assert.ok(err && err.error === 'Region format error.');
29742978
done();
29752979
});
29762980
});

0 commit comments

Comments
 (0)