Skip to content

Commit 1b447b5

Browse files
authored
Dev/1.8.1 (#209)
新增元数据接口 demo
1 parent e05c063 commit 1b447b5

File tree

11 files changed

+300
-162
lines changed

11 files changed

+300
-162
lines changed

demo/CIDemos/index.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ const contentMap = {
4949
title: '智能语音',
5050
functions: [],
5151
},
52-
// meta: {
53-
// title: '元数据',
54-
// functions: [],
55-
// },
52+
meta: {
53+
title: '元数据',
54+
functions: [],
55+
},
5656
};
5757

5858
function setContent(fnName, module, moduleName) {
@@ -87,9 +87,9 @@ for (let fnName in fileProcess) {
8787
for (let fnName in asr) {
8888
setContent(fnName, asr, 'asr');
8989
}
90-
// for (let fnName in meta) {
91-
// setContent(fnName, meta, 'meta');
92-
// }
90+
for (let fnName in meta) {
91+
setContent(fnName, meta, 'meta');
92+
}
9393

9494
(function () {
9595
const container = document.querySelector('.ci-main');

demo/CIDemos/mediaProcess.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ export const getSnapshot = {
243243
function (err, data) {
244244
if (err) {
245245
// 处理请求失败
246-
console.log(err);
246+
console.log(err.code);
247247
} else {
248248
// 处理请求成功
249249
console.log(data.Body);
@@ -341,7 +341,7 @@ export const getPrivateM3U8 = {
341341
function (err, data) {
342342
if (err) {
343343
// 处理请求失败
344-
console.log(err);
344+
console.log(err.code);
345345
} else {
346346
// 处理请求成功
347347
console.log(data.Body);

demo/CIDemos/meta.js

Lines changed: 37 additions & 53 deletions
Large diffs are not rendered by default.

demo/demo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -944,7 +944,7 @@ function putObject() {
944944
},
945945
},
946946
function (err, data) {
947-
logger.log('putObject:', err || data);
947+
logger.log('putObject:', err.code || data);
948948
}
949949
);
950950
}

dist/cos-js-sdk-v5.js

Lines changed: 68 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7281,7 +7281,7 @@ module.exports = function(module) {
72817281
/*! exports provided: name, version, description, main, types, scripts, repository, keywords, author, license, bugs, homepage, dependencies, devDependencies, default */
72827282
/***/ (function(module) {
72837283

7284-
module.exports = JSON.parse("{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.8.0\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js lib/request.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"@xmldom/xmldom\":\"^0.8.6\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"^29.3.1\",\"jest-environment-jsdom\":\"^29.3.1\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}");
7284+
module.exports = JSON.parse("{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.8.1\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js lib/request.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"@xmldom/xmldom\":\"^0.8.6\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"^29.3.1\",\"jest-environment-jsdom\":\"^29.3.1\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}");
72857285

72867286
/***/ }),
72877287

@@ -7340,7 +7340,9 @@ function sliceUploadFile(params, callback) {
73407340
var metaHeaders = {};
73417341
util.each(params.Headers, function (val, k) {
73427342
var shortKey = k.toLowerCase();
7343-
if (shortKey.indexOf('x-cos-meta-') === 0 || shortKey === 'pic-operations') metaHeaders[k] = val;
7343+
if (shortKey.indexOf('x-cos-meta-') === 0 || shortKey === 'pic-operations') {
7344+
metaHeaders[k] = val;
7345+
}
73447346
});
73457347
uploadSliceComplete.call(self, {
73467348
Bucket: Bucket,
@@ -12576,42 +12578,40 @@ function _submitRequest(params, callback) {
1257612578
var statusSuccess = Math.floor(statusCode / 100) === 2; // 200 202 204 206
1257712579

1257812580
// 不对 body 进行转换,body 直接挂载返回
12579-
if (rawBody && statusSuccess) return cb(null, {
12580-
body: body
12581-
});
12582-
// if (rawBody) {
12583-
// if (statusSuccess) {
12584-
// return cb(null, { body: body });
12585-
// } else {
12586-
// // 兼容body返回了 json 格式的 error
12587-
// var errorBody = {};
12588-
// try {
12589-
// errorBody = JSON.parse(body);
12590-
// } catch (e) {}
12591-
// return cb(
12592-
// util.error(new Error(errorBody.Message || 'response body error'), { code: errorBody.Code, error: errorBody })
12593-
// );
12594-
// }
12595-
// }
12596-
12597-
// 解析 xml body
12598-
var json;
12599-
try {
12600-
json = body && body.indexOf('<') > -1 && body.indexOf('>') > -1 && util.xml2json(body) || {};
12601-
} catch (e) {
12602-
json = {};
12581+
if (rawBody) {
12582+
if (statusSuccess) {
12583+
return cb(null, {
12584+
body: body
12585+
});
12586+
} else {
12587+
// 兼容报错时返回了 blob,需要解析成 string
12588+
if (body instanceof Blob) {
12589+
util.readAsBinaryString(body, function (content) {
12590+
var json = util.parseResBody(content);
12591+
var errorBody = json.Error || json;
12592+
return cb(util.error(new Error(errorBody.Message || 'response body error'), {
12593+
code: errorBody.Code,
12594+
error: errorBody
12595+
}));
12596+
});
12597+
return;
12598+
}
12599+
}
1260312600
}
1260412601

12602+
// 解析body,兼容 xml、json,解析失败时完整返回
12603+
var json = util.parseResBody(body);
12604+
1260512605
// 处理返回值
12606-
var xmlError = json && json.Error;
12606+
var errorBody = json.Error || json;
1260712607
if (statusSuccess) {
1260812608
// 正确返回,状态码 2xx 时,body 不会有 Error
1260912609
cb(null, json);
12610-
} else if (xmlError) {
12610+
} else if (errorBody) {
1261112611
// 正常返回了 xml body,且有 Error 节点
12612-
cb(util.error(new Error(xmlError.Message), {
12613-
code: xmlError.Code,
12614-
error: xmlError
12612+
cb(util.error(new Error(errorBody.Message), {
12613+
code: errorBody.Code,
12614+
error: errorBody
1261512615
}));
1261612616
} else if (statusCode) {
1261712617
// 有错误的状态码
@@ -14483,6 +14483,40 @@ var simplifyPath = function simplifyPath(path) {
1448314483
}
1448414484
return '/' + stack.join('/');
1448514485
};
14486+
14487+
// 解析响应体,兼容 xml、json
14488+
var parseResBody = function parseResBody(responseBody) {
14489+
var json;
14490+
if (responseBody && typeof responseBody === 'string') {
14491+
var trimBody = responseBody.trim();
14492+
var isXml = trimBody.indexOf('<') === 0;
14493+
var isJson = trimBody.indexOf('{') === 0;
14494+
if (isXml) {
14495+
// xml 解析,解析失败返回{}
14496+
json = util.xml2json(responseBody) || {};
14497+
} else if (isJson) {
14498+
// json解析,解析失败返回原始 Body
14499+
try {
14500+
// 替换 json 中的换行符为空格,否则解析会出错
14501+
var formatBody = responseBody.replace(/\n/g, ' ');
14502+
var parsedBody = JSON.parse(formatBody);
14503+
// 确保解析出 json 对象
14504+
if (Object.prototype.toString.call(parsedBody) === '[object Object]') {
14505+
json = parsedBody;
14506+
} else {
14507+
json = responseBody;
14508+
}
14509+
} catch (e) {
14510+
json = responseBody;
14511+
}
14512+
} else {
14513+
json = responseBody;
14514+
}
14515+
} else {
14516+
json = responseBody || {};
14517+
}
14518+
return json;
14519+
};
1448614520
var util = {
1448714521
noop: noop,
1448814522
formatParams: formatParams,
@@ -14519,7 +14553,9 @@ var util = {
1451914553
isCIHost: isCIHost,
1452014554
isIOS_QQ: isIOS && isQQ,
1452114555
encodeBase64: encodeBase64,
14522-
simplifyPath: simplifyPath
14556+
simplifyPath: simplifyPath,
14557+
readAsBinaryString: readAsBinaryString,
14558+
parseResBody: parseResBody
1452314559
};
1452414560
module.exports = util;
1452514561
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/process/browser.js */ "./node_modules/process/browser.js")))

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

Lines changed: 1 addition & 1 deletion
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": "1.8.0",
3+
"version": "1.8.1",
44
"description": "JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)",
55
"main": "dist/cos-js-sdk-v5.js",
66
"types": "index.d.ts",

src/advance.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ function sliceUploadFile(params, callback) {
4848
var metaHeaders = {};
4949
util.each(params.Headers, function (val, k) {
5050
var shortKey = k.toLowerCase();
51-
if (shortKey.indexOf('x-cos-meta-') === 0 || shortKey === 'pic-operations') metaHeaders[k] = val;
51+
if (shortKey.indexOf('x-cos-meta-') === 0 || shortKey === 'pic-operations') {
52+
metaHeaders[k] = val;
53+
}
5254
});
5355
uploadSliceComplete.call(
5456
self,

src/base.js

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4202,38 +4202,38 @@ function _submitRequest(params, callback) {
42024202
var statusSuccess = Math.floor(statusCode / 100) === 2; // 200 202 204 206
42034203

42044204
// 不对 body 进行转换,body 直接挂载返回
4205-
if (rawBody && statusSuccess) return cb(null, { body: body });
4206-
// if (rawBody) {
4207-
// if (statusSuccess) {
4208-
// return cb(null, { body: body });
4209-
// } else {
4210-
// // 兼容body返回了 json 格式的 error
4211-
// var errorBody = {};
4212-
// try {
4213-
// errorBody = JSON.parse(body);
4214-
// } catch (e) {}
4215-
// return cb(
4216-
// util.error(new Error(errorBody.Message || 'response body error'), { code: errorBody.Code, error: errorBody })
4217-
// );
4218-
// }
4219-
// }
4220-
4221-
// 解析 xml body
4222-
var json;
4223-
try {
4224-
json = (body && body.indexOf('<') > -1 && body.indexOf('>') > -1 && util.xml2json(body)) || {};
4225-
} catch (e) {
4226-
json = {};
4205+
if (rawBody) {
4206+
if (statusSuccess) {
4207+
return cb(null, { body: body });
4208+
} else {
4209+
// 兼容报错时返回了 blob,需要解析成 string
4210+
if (body instanceof Blob) {
4211+
util.readAsBinaryString(body, function (content) {
4212+
var json = util.parseResBody(content);
4213+
var errorBody = json.Error || json;
4214+
return cb(
4215+
util.error(new Error(errorBody.Message || 'response body error'), {
4216+
code: errorBody.Code,
4217+
error: errorBody,
4218+
})
4219+
);
4220+
});
4221+
return;
4222+
}
4223+
}
42274224
}
42284225

4226+
// 解析body,兼容 xml、json,解析失败时完整返回
4227+
var json = util.parseResBody(body);
4228+
42294229
// 处理返回值
4230-
var xmlError = json && json.Error;
4230+
var errorBody = json.Error || json;
42314231
if (statusSuccess) {
42324232
// 正确返回,状态码 2xx 时,body 不会有 Error
42334233
cb(null, json);
4234-
} else if (xmlError) {
4234+
} else if (errorBody) {
42354235
// 正常返回了 xml body,且有 Error 节点
4236-
cb(util.error(new Error(xmlError.Message), { code: xmlError.Code, error: xmlError }));
4236+
cb(util.error(new Error(errorBody.Message), { code: errorBody.Code, error: errorBody }));
42374237
} else if (statusCode) {
42384238
// 有错误的状态码
42394239
cb(util.error(new Error(response.statusMessage), { code: '' + statusCode }));

src/util.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,40 @@ var simplifyPath = function (path) {
859859
return '/' + stack.join('/');
860860
};
861861

862+
// 解析响应体,兼容 xml、json
863+
var parseResBody = function (responseBody) {
864+
var json;
865+
if (responseBody && typeof responseBody === 'string') {
866+
var trimBody = responseBody.trim();
867+
var isXml = trimBody.indexOf('<') === 0;
868+
var isJson = trimBody.indexOf('{') === 0;
869+
if (isXml) {
870+
// xml 解析,解析失败返回{}
871+
json = util.xml2json(responseBody) || {};
872+
} else if (isJson) {
873+
// json解析,解析失败返回原始 Body
874+
try {
875+
// 替换 json 中的换行符为空格,否则解析会出错
876+
var formatBody = responseBody.replace(/\n/g, ' ');
877+
var parsedBody = JSON.parse(formatBody);
878+
// 确保解析出 json 对象
879+
if (Object.prototype.toString.call(parsedBody) === '[object Object]') {
880+
json = parsedBody;
881+
} else {
882+
json = responseBody;
883+
}
884+
} catch (e) {
885+
json = responseBody;
886+
}
887+
} else {
888+
json = responseBody;
889+
}
890+
} else {
891+
json = responseBody || {};
892+
}
893+
return json;
894+
};
895+
862896
var util = {
863897
noop: noop,
864898
formatParams: formatParams,
@@ -896,6 +930,8 @@ var util = {
896930
isIOS_QQ: isIOS && isQQ,
897931
encodeBase64: encodeBase64,
898932
simplifyPath: simplifyPath,
933+
readAsBinaryString: readAsBinaryString,
934+
parseResBody: parseResBody,
899935
};
900936

901937
module.exports = util;

0 commit comments

Comments
 (0)