Skip to content

Commit

Permalink
优化代码
Browse files Browse the repository at this point in the history
  • Loading branch information
carsonxu committed Aug 25, 2017
1 parent de48541 commit 3853e15
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 30 deletions.
4 changes: 1 addition & 3 deletions src/advance.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ var Async = require('async');
var EventProxy = require('eventproxy');
var util = require('./util');

var _slice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;

// 分块上传入口
function sliceUploadFile(params, callback) {
var taskId = util.uuid();
Expand Down Expand Up @@ -183,7 +181,7 @@ function getUploadIdAndPartList(params, callback) {
Size: ChunkSize
});
} else {
var blob = _slice.call(Body, start, end);
var blob = util.fileSlice.call(Body, start, end);
util.getFileMd5(blob, function (err, md5) {
if (err) return callback(err);
var ETag = '"' + md5 + '"';
Expand Down
45 changes: 23 additions & 22 deletions src/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ function headBucket(params, callback) {
AppId: params.AppId,
method: 'HEAD',
}, function (err, data) {
var exist, auth;
var exist, auth, statusCode;
if (err) {
var statusCode = err.statusCode;
statusCode = err.statusCode;
if (statusCode && statusCode === 404) {
exist = false;
auth = false;
Expand All @@ -80,15 +80,19 @@ function headBucket(params, callback) {
return callback(err);
}
} else {
statusCode = data.statusCode;
exist = true;
auth = true;
}
callback(null, {
var result = {
BucketExist: exist,
BucketAuth: auth,
statusCode: data.statusCode,
headers: data.headers
});
statusCode: statusCode
};
if (data && data.headers) {
result.headers = data.headers;
}
callback(null, result);
});
}

Expand Down Expand Up @@ -990,9 +994,7 @@ function _putObject(params, callback) {
* @param {String} params.Key object名称,必须
* @param {Function} callback 回调函数,必须
* @param {Object} err 请求失败的错误,如果请求成功,则为空。
* @param {Object} data 删除操作成功之后返回的数据,如果删除操作成功,则返回 success 为 true, 并且附带原先 object 的 url
* @param {Boolean} data.Success 删除操作是否成功,成功则为 true,否则为 false
* @param {Boolean} data.BucketNotFound 请求的 object 所在的 bucket 是否不存在,如果为 true,则说明该 bucket 不存在
* @param {Object} data 删除操作成功之后返回的数据
*/
function deleteObject(params, callback) {
submitRequest.call(this, {
Expand Down Expand Up @@ -1645,19 +1647,18 @@ function getUrl(params) {
var action = params.action;
var appId = params.appId;
var protocol = util.isBrowser && location.protocol === 'https:' ? 'https:' : 'http:';
if (domain) {
domain = domain.replace(/\{\{AppId\}\}/ig, appId)
.replace(/\{\{Bucket\}\}/ig, bucket)
.replace(/\{\{Region\}\}/ig, region)
.replace(/\{\{.*?\}\}/ig, '');
if (!/^[a-zA-Z]+:\/\//.test(domain)) {
domain = protocol + '//' + domain;
}
if (domain.slice(-1) === '/') {
domain = domain.slice(0, -1);
}
} else {
domain = protocol + '//' + bucket + '-' + appId + '.' + region + '.myqcloud.com';
if (!domain) {
domain = '{{Bucket}}-{{AppId}}.cos.{{Region}}.myqcloud.com';
}
domain = domain.replace(/\{\{AppId\}\}/ig, appId)
.replace(/\{\{Bucket\}\}/ig, bucket)
.replace(/\{\{Region\}\}/ig, region)
.replace(/\{\{.*?\}\}/ig, '');
if (!/^[a-zA-Z]+:\/\//.test(domain)) {
domain = protocol + '//' + domain;
}
if (domain.slice(-1) === '/') {
domain = domain.slice(0, -1);
}
var url = domain;

Expand Down
14 changes: 9 additions & 5 deletions src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -261,14 +261,14 @@ var apiWrapper = function (apiName, apiFn) {
callback({error: 'lack of required params'});
return;
}
// 优化 Key 参数
if (params.Key && params.Key.indexOf('/') === 0) {
callback({error: 'params Key can not start width "/"'});
// 判断 region 格式
if (params.Region && regionMap[params.Region]) {
callback({error: 'Region should be ' + regionMap[params.Region]});
return;
}
// 判断 region 格式
if (params.Region && regionMap[params.Region]) {
callback({error: 'Region error, it should be ' + regionMap[params.Region]});
if (params.Region && params.Region.indexOf('cos.') > -1) {
callback({error: 'Region should not be start with "cos."'});
return;
}
// 兼容带有 AppId 的 Bucket
Expand All @@ -280,6 +280,10 @@ var apiWrapper = function (apiName, apiFn) {
params.AppId = appId;
params.Bucket = bucket;
}
// 兼容带有斜杠开头的 Key
if (params.Key && params.Key.substr(0, 1) === '/') {
params.Key = params.Key.substr(1);
}
}
var res = apiFn.call(this, params, callback);
if (apiName === 'getAuth') {
Expand Down

0 comments on commit 3853e15

Please sign in to comment.