Skip to content

Commit a6791a2

Browse files
author
carsonxu
committed
优化代码
1 parent 2e358db commit a6791a2

File tree

4 files changed

+52
-36
lines changed

4 files changed

+52
-36
lines changed

sdk/advance.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,18 @@ function sliceUploadFile(params, callback) {
3535

3636
// 上传分块完成,开始 uploadSliceComplete 操作
3737
ep.on('upload_slice_complete', function (UploadData) {
38+
var metaHeaders = {};
39+
util.each(params.Headers, function (val, k) {
40+
var shortKey = k.toLowerCase();
41+
if (shortKey.indexOf('x-cos-meta-') === 0 || shortKey === 'pic-operations') metaHeaders[k] = val;
42+
});
3843
uploadSliceComplete.call(self, {
3944
Bucket: Bucket,
4045
Region: Region,
4146
Key: Key,
4247
UploadId: UploadData.UploadId,
4348
SliceList: UploadData.SliceList,
49+
Headers: metaHeaders,
4450
}, function (err, data) {
4551
if (!self._isRunningTask(TaskId)) return;
4652
session.removeUsing(UploadData.UploadId);
@@ -620,6 +626,7 @@ function uploadSliceComplete(params, callback) {
620626
var SliceList = params.SliceList;
621627
var self = this;
622628
var ChunkRetryTimes = this.options.ChunkRetryTimes + 1;
629+
var Headers = params.Headers;
623630
var Parts = SliceList.map(function (item) {
624631
return {
625632
PartNumber: item.PartNumber,
@@ -633,7 +640,8 @@ function uploadSliceComplete(params, callback) {
633640
Region: Region,
634641
Key: Key,
635642
UploadId: UploadId,
636-
Parts: Parts
643+
Parts: Parts,
644+
Headers: Headers,
637645
}, tryCallback);
638646
}, function (err, data) {
639647
callback(err, data);
@@ -890,6 +898,10 @@ function sliceCopyFile(params, callback) {
890898

891899
// 分片复制完成,开始 multipartComplete 操作
892900
ep.on('copy_slice_complete', function (UploadData) {
901+
var metaHeaders = {};
902+
util.each(params.Headers, function (val, k) {
903+
if (k.toLowerCase().indexOf('x-cos-meta-') === 0) metaHeaders[k] = val;
904+
});
893905
var Parts = util.map(UploadData.PartList, function (item) {
894906
return {
895907
PartNumber: item.PartNumber,

sdk/base.js

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ function putBucketCors(params, callback) {
322322
var CORSRules = CORSConfiguration['CORSRules'] || params['CORSRules'] || [];
323323
CORSRules = util.clone(util.isArray(CORSRules) ? CORSRules : [CORSRules]);
324324
util.each(CORSRules, function (rule) {
325-
util.each(['AllowedOrigin', 'AllowedHeader', 'AllowedMethod', 'ExposeHeader'], function (key, k) {
325+
util.each(['AllowedOrigin', 'AllowedHeader', 'AllowedMethod', 'ExposeHeader'], function (key) {
326326
var sKey = key + 's';
327327
var val = rule[sKey] || rule[key] || [];
328328
delete rule[sKey];
@@ -390,7 +390,7 @@ function getBucketCors(params, callback) {
390390
CORSRules = util.clone(util.isArray(CORSRules) ? CORSRules : [CORSRules]);
391391

392392
util.each(CORSRules, function (rule) {
393-
util.each(['AllowedOrigin', 'AllowedHeader', 'AllowedMethod', 'ExposeHeader'], function (key, j) {
393+
util.each(['AllowedOrigin', 'AllowedHeader', 'AllowedMethod', 'ExposeHeader'], function (key) {
394394
var sKey = key + 's';
395395
var val = rule[sKey] || rule[key] || [];
396396
delete rule[key];
@@ -1645,7 +1645,6 @@ function putBucketAccelerate(params, callback) {
16451645
headers['Content-MD5'] = util.binaryBase64(util.md5(xml));
16461646

16471647
submitRequest.call(this, {
1648-
Interface: 'putBucketAccelerate',
16491648
Action: 'name/cos:PutBucketAccelerate',
16501649
method: 'PUT',
16511650
Bucket: params.Bucket,
@@ -1664,7 +1663,6 @@ function putBucketAccelerate(params, callback) {
16641663

16651664
function getBucketAccelerate(params, callback) {
16661665
submitRequest.call(this, {
1667-
Interface: 'getBucketAccelerate',
16681666
Action: 'name/cos:GetBucketAccelerate',
16691667
method: 'GET',
16701668
Bucket: params.Bucket,
@@ -1712,9 +1710,7 @@ function headObject(params, callback) {
17121710
}
17131711
return callback(err);
17141712
}
1715-
if (data.headers && data.headers.etag) {
1716-
data.ETag = data.headers && data.headers.etag;
1717-
}
1713+
data.ETag = util.attr(data.headers, 'etag', '');
17181714
callback(null, data);
17191715
});
17201716
}
@@ -1879,10 +1875,8 @@ function getObject(params, callback) {
18791875
result.Body = data.body;
18801876
}
18811877
}
1882-
if (data.headers && data.headers.etag) {
1883-
result.ETag = data.headers && data.headers.etag;
1884-
}
18851878
util.extend(result, {
1879+
ETag: util.attr(data.headers, 'etag', ''),
18861880
statusCode: data.statusCode,
18871881
headers: data.headers,
18881882
});
@@ -1930,7 +1924,7 @@ function putObject(params, callback) {
19301924
var FileSize = params.ContentLength;
19311925
var onProgress = util.throttleOnProgress.call(self, FileSize, params.onProgress);
19321926

1933-
// 特殊处理 Cache-Control
1927+
// 特殊处理 Cache-Control、Content-Type,避免代理更改这两个字段导致写入到 Object 属性里
19341928
var headers = params.Headers;
19351929
if (!headers['Cache-Control'] && !headers['cache-control']) headers['Cache-Control'] = '';
19361930

@@ -2166,8 +2160,8 @@ function optionsObject(params, callback) {
21662160
* @param {String} MetadataDirective 是否拷贝元数据,枚举值:Copy, Replaced,默认值Copy。假如标记为Copy,忽略Header中的用户元数据信息直接复制;假如标记为Replaced,按Header信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为Replaced
21672161
* @param {String} CopySourceIfModifiedSince 当Object在指定时间后被修改,则执行操作,否则返回412。可与x-cos-copy-source-If-None-Match一起使用,与其他条件联合使用返回冲突。
21682162
* @param {String} CopySourceIfUnmodifiedSince 当Object在指定时间后未被修改,则执行操作,否则返回412。可与x-cos-copy-source-If-Match一起使用,与其他条件联合使用返回冲突。
2169-
* @param {String} CopySourceIfMatch 当Object的Etag和给定一致时,则执行操作,否则返回412。可与x-cos-copy-source-If-Unmodified-Since一起使用,与其他条件联合使用返回冲突。
2170-
* @param {String} CopySourceIfNoneMatch 当Object的Etag和给定不一致时,则执行操作,否则返回412。可与x-cos-copy-source-If-Modified-Since一起使用,与其他条件联合使用返回冲突。
2163+
* @param {String} CopySourceIfMatch 当Object的ETag和给定一致时,则执行操作,否则返回412。可与x-cos-copy-source-If-Unmodified-Since一起使用,与其他条件联合使用返回冲突。
2164+
* @param {String} CopySourceIfNoneMatch 当Object的ETag和给定不一致时,则执行操作,否则返回412。可与x-cos-copy-source-If-Modified-Since一起使用,与其他条件联合使用返回冲突。
21712165
* @param {String} StorageClass 存储级别,枚举值:存储级别,枚举值:Standard, Standard_IA,Archive;默认值:Standard
21722166
* @param {String} CacheControl 指定所有缓存机制在整个请求/响应链中必须服从的指令。
21732167
* @param {String} ContentDisposition MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件
@@ -2368,7 +2362,6 @@ function putObjectTagging(params, callback) {
23682362
headers['Content-MD5'] = util.binaryBase64(util.md5(xml));
23692363

23702364
submitRequest.call(this, {
2371-
Interface: 'putObjectTagging',
23722365
Action: 'name/cos:PutObjectTagging',
23732366
method: 'PUT',
23742367
Bucket: params.Bucket,
@@ -2403,7 +2396,6 @@ function putObjectTagging(params, callback) {
24032396
function getObjectTagging(params, callback) {
24042397

24052398
submitRequest.call(this, {
2406-
Interface: 'getObjectTagging',
24072399
Action: 'name/cos:GetObjectTagging',
24082400
method: 'GET',
24092401
Key: params.Key,
@@ -2451,7 +2443,6 @@ function getObjectTagging(params, callback) {
24512443
*/
24522444
function deleteObjectTagging(params, callback) {
24532445
submitRequest.call(this, {
2454-
Interface: 'deleteObjectTagging',
24552446
Action: 'name/cos:DeleteObjectTagging',
24562447
method: 'DELETE',
24572448
Bucket: params.Bucket,
@@ -2512,7 +2503,6 @@ function selectObjectContent(params, callback) {
25122503
});
25132504
}
25142505
submitRequest.call(this, {
2515-
Interface: 'selectObjectContent',
25162506
Action: 'name/cos:GetObject',
25172507
method: 'POST',
25182508
Bucket: params.Bucket,
@@ -2614,7 +2604,10 @@ function multipartInit(params, callback) {
26142604

26152605
// 特殊处理 Cache-Control
26162606
var headers = params.Headers;
2607+
2608+
// 特殊处理 Cache-Control、Content-Type
26172609
if (!headers['Cache-Control'] && !headers['cache-control']) headers['Cache-Control'] = '';
2610+
if (!headers['Content-Type'] && !headers['content-type']) headers['Content-Type'] = params.Body && params.Body.type || '';
26182611

26192612
submitRequest.call(this, {
26202613
Action: 'name/cos:InitiateMultipartUpload',
@@ -2675,12 +2668,9 @@ function multipartUpload(params, callback) {
26752668
onProgress: params.onProgress,
26762669
body: params.Body || null
26772670
}, function (err, data) {
2678-
if (err) {
2679-
return callback(err);
2680-
}
2681-
data['headers'] = data['headers'] || {};
2671+
if (err) return callback(err);
26822672
callback(null, {
2683-
ETag: data['headers']['etag'] || '',
2673+
ETag: util.attr(data.headers, 'etag', ''),
26842674
statusCode: data.statusCode,
26852675
headers: data.headers,
26862676
});
@@ -2748,8 +2738,23 @@ function multipartComplete(params, callback) {
27482738
object: params.Key,
27492739
isLocation: true,
27502740
});
2751-
var CompleteMultipartUploadResult = data.CompleteMultipartUploadResult || {};
2752-
var result = util.extend(CompleteMultipartUploadResult, {
2741+
var res = data.CompleteMultipartUploadResult || {};
2742+
if (res.ProcessResults) {
2743+
if (res && res.ProcessResults) {
2744+
res.UploadResult = {
2745+
OriginalInfo: {
2746+
Key: res.Key,
2747+
Location: url,
2748+
ETag: res.ETag,
2749+
ImageInfo: res.ImageInfo,
2750+
},
2751+
ProcessResults: res.ProcessResults,
2752+
};
2753+
delete res.ImageInfo;
2754+
delete res.ProcessResults;
2755+
}
2756+
}
2757+
var result = util.extend(res, {
27532758
Location: url,
27542759
statusCode: data.statusCode,
27552760
headers: data.headers,
@@ -3351,10 +3356,7 @@ function submitRequest(params, callback) {
33513356
ResourceKey: params.ResourceKey,
33523357
Scope: params.Scope,
33533358
}, function (err, AuthData) {
3354-
if (err) {
3355-
callback(err);
3356-
return;
3357-
}
3359+
if (err) return callback(err);
33583360
params.AuthData = AuthData;
33593361
_submitRequest.call(self, params, function (err, data) {
33603362
if (err &&
@@ -3391,7 +3393,6 @@ function _submitRequest(params, callback) {
33913393
var method = params.method || 'GET';
33923394
var url = params.url;
33933395
var body = params.body;
3394-
var json = params.json;
33953396
var rawBody = params.rawBody;
33963397

33973398
// 处理 readStream and body
@@ -3420,7 +3421,6 @@ function _submitRequest(params, callback) {
34203421
headers: params.headers,
34213422
qs: params.qs,
34223423
body: body,
3423-
json: json,
34243424
};
34253425

34263426
// 获取签名

sdk/cos.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ var defaultOptions = {
2222
CopySliceSize: 1024 * 1024 * 10,
2323
MaxPartNumber: 10000,
2424
ProgressInterval: 1000,
25-
UploadQueueSize: 1000,
2625
Domain: '',
2726
ServiceDomain: '',
2827
Protocol: '',
@@ -33,6 +32,7 @@ var defaultOptions = {
3332
CorrectClockSkew: true,
3433
SystemClockOffset: 0, // 单位毫秒,ms
3534
UploadCheckContentMd5: false,
35+
UploadQueueSize: 1000,
3636
UploadIdCacheLimit: 500,
3737
Proxy: '',
3838
Ip: '',

sdk/util.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,10 +212,14 @@ var getFileMd5 = function (readStream, callback) {
212212

213213
function clone(obj) {
214214
return map(obj, function (v) {
215-
return typeof v === 'object' ? clone(v) : v;
215+
return typeof v === 'object' && v !== null ? clone(v) : v;
216216
});
217217
}
218218

219+
function attr(obj, name, defaultValue) {
220+
return obj && name in obj ? obj[name] : defaultValue;
221+
}
222+
219223
function extend(target, source) {
220224
each(source, function (val, key) {
221225
target[key] = source[key];
@@ -448,8 +452,7 @@ var apiWrapper = function (apiName, apiFn) {
448452
var errMsg = checkParams();
449453
var isSync = apiName === 'getAuth' || apiName === 'getV4Auth' || apiName === 'getObjectUrl'
450454
|| apiName.indexOf('Stream') > -1;
451-
var Promise = global.Promise;
452-
if (!isSync && Promise && !callback) {
455+
if (Promise && !isSync && !callback) {
453456
return new Promise(function (resolve, reject) {
454457
callback = function (err, data) {
455458
err ? reject(err) : resolve(data);
@@ -633,14 +636,15 @@ var util = {
633636
map: map,
634637
filter: filter,
635638
clone: clone,
639+
attr: attr,
636640
uuid: uuid,
637641
camSafeUrlEncode: camSafeUrlEncode,
638642
throttleOnProgress: throttleOnProgress,
639643
getFileSize: getFileSize,
640644
getSkewTime: getSkewTime,
641-
callbackAfterStreamFinish: callbackAfterStreamFinish,
642645
error: error,
643646
getAuth: getAuth,
647+
callbackAfterStreamFinish: callbackAfterStreamFinish,
644648
getV4Auth: getV4Auth,
645649
isBrowser: false,
646650
};

0 commit comments

Comments
 (0)