Skip to content

Commit cacaa43

Browse files
committed
支持自定义域名
1 parent 2686021 commit cacaa43

File tree

8 files changed

+112
-39
lines changed

8 files changed

+112
-39
lines changed

bower.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "cos-js-sdk-v5",
3+
"description": "cos js sdk v5",
4+
"main": "dist/cos-js-sdk-v5.min.js",
5+
"authors": [
6+
"carsonxu"
7+
],
8+
"license": "ISC",
9+
"homepage": "https://github.com/tencentyun/cos-js-sdk-v5",
10+
"ignore": [
11+
"**/.*",
12+
"node_modules",
13+
"bower_components",
14+
"test",
15+
"tests"
16+
]
17+
}

demo/demo.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,15 @@ var getAuthorization = function (options, callback) {
2323
};
2424

2525
var cos = new COS({
26+
// 必选参数
2627
AppId: config.AppId,
27-
ProgressInterval: 1000,
28-
FileParallelLimit: 3,
29-
ChunkParallelLimit: 3,
30-
ChunkSize: 1024 * 1024,
31-
getAuthorization: getAuthorization
28+
getAuthorization: getAuthorization,
29+
// 可选参数
30+
FileParallelLimit: 3, // 控制文件上传并发数
31+
ChunkParallelLimit: 3, // 控制单个文件下分片上传并发数
32+
ChunkSize: 1024 * 1024, // 控制分片大小,单位 B
33+
ProgressInterval: 1000, // 控制 onProgress 回调的间隔
34+
Domain: '{{Bucket}}-{{AppId}}.{{Region}}.myqcloud.com', // 自定义域名
3235
});
3336
var TaskId;
3437

dist/cos-js-sdk-v5.js

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7882,10 +7882,12 @@ var defaultOptions = {
78827882
AppId: '',
78837883
SecretId: '',
78847884
SecretKey: '',
7885-
ProgressInterval: 1000,
78867885
FileParallelLimit: 3,
78877886
ChunkParallelLimit: 3,
7888-
ChunkSize: 1024 * 1024
7887+
ChunkSize: 1024 * 1024,
7888+
ProgressInterval: 1000,
7889+
Domain: '',
7890+
ServiceDomain: ''
78897891
};
78907892

78917893
// 对外暴露的类
@@ -15396,11 +15398,23 @@ function getService(params, callback) {
1539615398
callback = params;
1539715399
params = {};
1539815400
}
15399-
1540015401
var protocol = util.isBrowser && location.protocol === 'https:' ? 'https:' : 'http:';
15402+
var domain = this.options.ServiceDomain;
15403+
var appId = params.AppId || this.options.appId;
15404+
if (domain) {
15405+
domain = domain.replace(/\{\{AppId\}\}/ig, appId || '').replace(/\{\{.*?\}\}/ig, '');
15406+
if (!/^[a-zA-Z]+:\/\//.test(domain)) {
15407+
domain = protocol + '//' + domain;
15408+
}
15409+
if (domain.slice(-1) === '/') {
15410+
domain = domain.slice(0, -1);
15411+
}
15412+
} else {
15413+
domain = protocol + '//service.cos.myqcloud.com';
15414+
}
1540115415

1540215416
submitRequest.call(this, {
15403-
url: protocol + '//service.cos.myqcloud.com',
15417+
url: domain,
1540415418
method: 'GET'
1540515419
}, function (err, data) {
1540615420
if (err) {
@@ -15525,6 +15539,7 @@ function getBucket(params, callback) {
1552515539
* @return {String} data.Location 操作地址
1552615540
*/
1552715541
function putBucket(params, callback) {
15542+
var self = this;
1552815543
var headers = {};
1552915544
headers['x-cos-acl'] = params['ACL'];
1553015545
headers['x-cos-grant-read'] = params['GrantRead'];
@@ -15542,6 +15557,7 @@ function putBucket(params, callback) {
1554215557
return callback(err);
1554315558
}
1554415559
var url = getUrl({
15560+
domain: self.options.Domain,
1554515561
bucket: params.Bucket,
1554615562
region: params.Region,
1554715563
appId: appId
@@ -16307,7 +16323,7 @@ function _putObject(params, callback) {
1630716323
update();
1630816324
} else {
1630916325
if (progressTimer) return;
16310-
progressTimer = setTimeout(update, self.options.ProgressInterval || 100);
16326+
progressTimer = setTimeout(update, self.options.ProgressInterval || 1000);
1631116327
}
1631216328
};
1631316329
}();
@@ -16736,7 +16752,6 @@ function multipartUpload(params, callback) {
1673616752
var self = this;
1673716753
var TaskId = params.TaskId;
1673816754
var headers = {};
16739-
console.log(TaskId, params);
1674016755

1674116756
headers['Content-Length'] = params['ContentLength'];
1674216757
headers['Expect'] = params['Expect'];
@@ -16758,7 +16773,7 @@ function multipartUpload(params, callback) {
1675816773
body: params.Body || null,
1675916774
onProgress: params.onProgress
1676016775
}, function (err, data) {
16761-
// if (TaskId) self.off('inner-kill-task', killTask);
16776+
if (TaskId) self.off('inner-kill-task', killTask);
1676216777
if (err) {
1676316778
return callback(err);
1676416779
}
@@ -16771,16 +16786,14 @@ function multipartUpload(params, callback) {
1677116786
});
1677216787

1677316788
var killTask = function (data) {
16774-
console.log(count, TaskId, data.TaskId);
1677516789
if (data.TaskId === TaskId) {
1677616790
sender && sender.abort && sender.abort();
1677716791
self.off('inner-kill-task', killTask);
1677816792
}
1677916793
};
16780-
killTask.id = count++;
1678116794
TaskId && this.on('inner-kill-task', killTask);
1678216795
}
16783-
var count = 0;
16796+
1678416797
/**
1678516798
* 完成分块上传
1678616799
* @param {Object} params 参数对象,必须
@@ -17008,14 +17021,25 @@ function getAuth(params) {
1700817021

1700917022
// 生成操作 url
1701017023
function getUrl(params) {
17024+
var domain = params.domain;
1701117025
var bucket = params.bucket;
1701217026
var region = params.region;
1701317027
var object = params.object;
1701417028
var action = params.action;
1701517029
var appId = params.appId;
1701617030
var protocol = util.isBrowser && location.protocol === 'https:' ? 'https:' : 'http:';
17017-
17018-
var url = protocol + '//' + bucket + '-' + appId + '.' + region + '.myqcloud.com';
17031+
if (domain) {
17032+
domain = domain.replace(/\{\{AppId\}\}/ig, appId).replace(/\{\{Bucket\}\}/ig, bucket).replace(/\{\{Region\}\}/ig, region).replace(/\{\{.*?\}\}/ig, '');
17033+
if (!/^[a-zA-Z]+:\/\//.test(domain)) {
17034+
domain = protocol + '//' + domain;
17035+
}
17036+
if (domain.slice(-1) === '/') {
17037+
domain = domain.slice(0, -1);
17038+
}
17039+
} else {
17040+
domain = protocol + '//' + bucket + '-' + appId + '.' + region + '.myqcloud.com';
17041+
}
17042+
var url = domain;
1701917043

1702017044
if (object) {
1702117045
url += '/' + encodeURIComponent(object);
@@ -17043,14 +17067,15 @@ function submitRequest(params, callback) {
1704317067

1704417068
var opt = {
1704517069
url: url || getUrl({
17070+
domain: this.options.Domain,
1704617071
bucket: bucket,
1704717072
region: region,
1704817073
object: object,
1704917074
action: action,
1705017075
appId: params.AppId || this.options.AppId
1705117076
}),
1705217077
method: method,
17053-
headers: headers,
17078+
headers: headers || {},
1705417079
qs: qs,
1705517080
body: body,
1705617081
json: json
@@ -21911,7 +21936,7 @@ function getUploadIdAndPartList(params, callback) {
2191121936
}
2191221937
} else {
2191321938
if (progressTimer) return;
21914-
progressTimer = setTimeout(update, self.options.ProgressInterval || 100);
21939+
progressTimer = setTimeout(update, self.options.ProgressInterval || 1000);
2191521940
}
2191621941
};
2191721942
var getChunkETag = function (PartNumber, callback) {
@@ -22213,7 +22238,7 @@ function uploadSliceList(params, cb) {
2221322238
update();
2221422239
} else {
2221522240
if (progressTimer) return;
22216-
progressTimer = setTimeout(update, self.options.ProgressInterval || 100);
22241+
progressTimer = setTimeout(update, self.options.ProgressInterval || 1000);
2221722242
}
2221822243
};
2221922244
}();
@@ -29231,7 +29256,7 @@ function plural(ms, n, name) {
2923129256

2923229257
module.exports = {
2923329258
"name": "cos-js-sdk-v5",
29234-
"version": "0.0.5",
29259+
"version": "0.0.6",
2923529260
"description": "cos js sdk v5",
2923629261
"main": "index.js",
2923729262
"scripts": {

dist/cos-js-sdk-v5.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

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

src/advance.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ function getUploadIdAndPartList(params, callback) {
165165
}
166166
} else {
167167
if (progressTimer) return;
168-
progressTimer = setTimeout(update, self.options.ProgressInterval || 100);
168+
progressTimer = setTimeout(update, self.options.ProgressInterval || 1000);
169169
}
170170
};
171171
var getChunkETag = function (PartNumber, callback) {
@@ -466,7 +466,7 @@ function uploadSliceList(params, cb) {
466466
update();
467467
} else {
468468
if (progressTimer) return;
469-
progressTimer = setTimeout(update, self.options.ProgressInterval || 100);
469+
progressTimer = setTimeout(update, self.options.ProgressInterval || 1000);
470470
}
471471
};
472472
})();

src/base.js

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,23 @@ function getService(params, callback) {
1616
callback = params;
1717
params = {};
1818
}
19-
2019
var protocol = util.isBrowser && location.protocol === 'https:' ? 'https:' : 'http:';
20+
var domain = this.options.ServiceDomain;
21+
var appId = params.AppId || this.options.appId;
22+
if (domain) {
23+
domain = domain.replace(/\{\{AppId\}\}/ig, appId || '').replace(/\{\{.*?\}\}/ig, '');
24+
if (!/^[a-zA-Z]+:\/\//.test(domain)) {
25+
domain = protocol + '//' + domain;
26+
}
27+
if (domain.slice(-1) === '/') {
28+
domain = domain.slice(0, -1);
29+
}
30+
} else {
31+
domain = protocol + '//service.cos.myqcloud.com';
32+
}
2133

2234
submitRequest.call(this, {
23-
url: protocol + '//service.cos.myqcloud.com',
35+
url: domain,
2436
method: 'GET',
2537
}, function (err, data) {
2638
if (err) {
@@ -146,6 +158,7 @@ function getBucket(params, callback) {
146158
* @return {String} data.Location 操作地址
147159
*/
148160
function putBucket(params, callback) {
161+
var self = this;
149162
var headers = {};
150163
headers['x-cos-acl'] = params['ACL'];
151164
headers['x-cos-grant-read'] = params['GrantRead'];
@@ -163,6 +176,7 @@ function putBucket(params, callback) {
163176
return callback(err);
164177
}
165178
var url = getUrl({
179+
domain: self.options.Domain,
166180
bucket: params.Bucket,
167181
region: params.Region,
168182
appId: appId
@@ -930,7 +944,7 @@ function _putObject(params, callback) {
930944
update();
931945
} else {
932946
if (progressTimer) return;
933-
progressTimer = setTimeout(update, self.options.ProgressInterval || 100);
947+
progressTimer = setTimeout(update, self.options.ProgressInterval || 1000);
934948
}
935949
};
936950
})();
@@ -1362,7 +1376,6 @@ function multipartUpload(params, callback) {
13621376
var self = this;
13631377
var TaskId = params.TaskId;
13641378
var headers = {};
1365-
console.log(TaskId, params);
13661379

13671380
headers['Content-Length'] = params['ContentLength'];
13681381
headers['Expect'] = params['Expect'];
@@ -1384,7 +1397,7 @@ function multipartUpload(params, callback) {
13841397
body: params.Body || null,
13851398
onProgress: params.onProgress
13861399
}, function (err, data) {
1387-
// if (TaskId) self.off('inner-kill-task', killTask);
1400+
if (TaskId) self.off('inner-kill-task', killTask);
13881401
if (err) {
13891402
return callback(err);
13901403
}
@@ -1397,17 +1410,15 @@ function multipartUpload(params, callback) {
13971410
});
13981411

13991412
var killTask = function (data) {
1400-
console.log(count, TaskId, data.TaskId);
14011413
if (data.TaskId === TaskId) {
14021414
sender && sender.abort && sender.abort();
14031415
self.off('inner-kill-task', killTask);
14041416
}
14051417
};
1406-
killTask.id = count++;
14071418
TaskId && this.on('inner-kill-task', killTask);
14081419

14091420
}
1410-
var count = 0;
1421+
14111422
/**
14121423
* 完成分块上传
14131424
* @param {Object} params 参数对象,必须
@@ -1637,14 +1648,28 @@ function getAuth(params) {
16371648

16381649
// 生成操作 url
16391650
function getUrl(params) {
1651+
var domain = params.domain;
16401652
var bucket = params.bucket;
16411653
var region = params.region;
16421654
var object = params.object;
16431655
var action = params.action;
16441656
var appId = params.appId;
16451657
var protocol = util.isBrowser && location.protocol === 'https:' ? 'https:' : 'http:';
1646-
1647-
var url = protocol + '//' + bucket + '-' + appId + '.' + region + '.myqcloud.com';
1658+
if (domain) {
1659+
domain = domain.replace(/\{\{AppId\}\}/ig, appId)
1660+
.replace(/\{\{Bucket\}\}/ig, bucket)
1661+
.replace(/\{\{Region\}\}/ig, region)
1662+
.replace(/\{\{.*?\}\}/ig, '');
1663+
if (!/^[a-zA-Z]+:\/\//.test(domain)) {
1664+
domain = protocol + '//' + domain;
1665+
}
1666+
if (domain.slice(-1) === '/') {
1667+
domain = domain.slice(0, -1);
1668+
}
1669+
} else {
1670+
domain = protocol + '//' + bucket + '-' + appId + '.' + region + '.myqcloud.com';
1671+
}
1672+
var url = domain;
16481673

16491674
if (object) {
16501675
url += '/' + encodeURIComponent(object);
@@ -1672,14 +1697,15 @@ function submitRequest(params, callback) {
16721697

16731698
var opt = {
16741699
url: url || getUrl({
1700+
domain: this.options.Domain,
16751701
bucket: bucket,
16761702
region: region,
16771703
object: object,
16781704
action: action,
16791705
appId: params.AppId || this.options.AppId,
16801706
}),
16811707
method: method,
1682-
headers: headers,
1708+
headers: headers || {},
16831709
qs: qs,
16841710
body: body,
16851711
json: json,

src/cos.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ var defaultOptions = {
1212
AppId: '',
1313
SecretId: '',
1414
SecretKey: '',
15-
ProgressInterval: 1000,
1615
FileParallelLimit: 3,
1716
ChunkParallelLimit: 3,
1817
ChunkSize: 1024 * 1024,
18+
ProgressInterval: 1000,
19+
Domain: '',
20+
ServiceDomain: '',
1921
};
2022

2123
// 对外暴露的类

0 commit comments

Comments
 (0)