Skip to content

Commit fa785ae

Browse files
committed
修改字段和用例
1 parent b8922d4 commit fa785ae

File tree

3 files changed

+155
-28
lines changed

3 files changed

+155
-28
lines changed

demo/demo.js

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -892,9 +892,7 @@ var selectCsvOpt = {
892892
QuoteEscapeCharacter: "\""
893893
}
894894
},
895-
RequestProgress: {
896-
Enabled: "FALSE"
897-
}
895+
RequestProgress: {Enabled: "FALSE"}
898896
},
899897
};
900898

@@ -906,19 +904,9 @@ var selectJsonOpt = {
906904
SelectRequest: {
907905
Expression: "Select * from COSObject",
908906
ExpressionType: "SQL",
909-
InputSerialization: {
910-
JSON: {
911-
Type: "DOCUMENT",
912-
},
913-
},
914-
OutputSerialization: {
915-
JSON: {
916-
RecordDelimiter: "\n"
917-
},
918-
},
919-
RequestProgress: {
920-
Enabled: "FALSE"
921-
}
907+
InputSerialization: {JSON: {Type: "DOCUMENT"}},
908+
OutputSerialization: {JSON: {RecordDelimiter: "\n"}},
909+
RequestProgress: {Enabled: "FALSE"}
922910
},
923911
};
924912

sdk/base.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2595,8 +2595,8 @@ function selectObjectContent(params, callback) {
25952595
};
25962596
// 只要流里有解析出 stats,就返回 Stats
25972597
if (selectResult.stats) result.Stats = selectResult.stats;
2598-
// 只要有 records,就返回 PayLoad
2599-
if (selectResult.records) result.PayLoad = Buffer.concat(selectResult.records);
2598+
// 只要有 records,就返回 Payload
2599+
if (selectResult.records) result.Payload = Buffer.concat(selectResult.records);
26002600
callback(null, result);
26012601
});
26022602
if (!params.ReturnStream && params.DataType !== 'raw') {

test/test.js

Lines changed: 149 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ var COS = require('../index');
44
var request = require('request');
55
var util = require('../demo/util');
66
var config = require('../demo/config');
7-
var Writable = require('stream').Writable;
7+
var Stream = require('stream');
8+
9+
var Writable = Stream.Writable;
810

911
var dataURItoUploadBody = function (dataURI) {
1012
return Buffer.from(dataURI.split(',')[1], 'base64');
@@ -539,6 +541,7 @@ group('putObject()', function () {
539541
var outputStream = new Writable({
540542
write: function (chunk, encoding, callback) {
541543
objectContent = Buffer.concat([objectContent, chunk]);
544+
callback();
542545
}
543546
});
544547
setTimeout(function () {
@@ -750,7 +753,7 @@ group('putObject()', function () {
750753
});
751754
});
752755

753-
group('getObject()', function () {
756+
group('getObject(),getObjectStream()', function () {
754757
test('getObject() body', function (done, assert) {
755758
var key = '1.txt';
756759
var content = Date.now().toString();
@@ -780,6 +783,7 @@ group('getObject()', function () {
780783
var outputStream = new Writable({
781784
write: function (chunk, encoding, callback) {
782785
objectContent = Buffer.concat([objectContent, chunk]);
786+
callback();
783787
}
784788
});
785789
var content = Date.now().toString(36);
@@ -810,6 +814,59 @@ group('getObject()', function () {
810814
});
811815
});
812816
});
817+
test('getObjectStream', function (done, assert) {
818+
var content = Date.now().toString();
819+
var key = '1.json';
820+
cos.putObject({
821+
Bucket: config.Bucket,
822+
Region: config.Region,
823+
Key: key,
824+
Body: content,
825+
}, function (err, data) {
826+
var bufList = [];
827+
var writeStream = new Writable({
828+
write: function (chunk, encoding, callback) {
829+
bufList.push(chunk);
830+
callback();
831+
},
832+
});
833+
cos.getObjectStream({
834+
Bucket: config.Bucket,
835+
Region: config.Region,
836+
Key: key,
837+
}, function (err, data) {
838+
assert.ok(Buffer.concat(bufList).toString() === content);
839+
done();
840+
}).pipe(writeStream);
841+
});
842+
});
843+
test('getObject Output', function (done, assert) {
844+
var content = Date.now().toString();
845+
var key = '1.json';
846+
cos.putObject({
847+
Bucket: config.Bucket,
848+
Region: config.Region,
849+
Key: key,
850+
Body: content,
851+
}, function (err, data) {
852+
var bufList = [];
853+
var writeStream = new Writable({
854+
write: function (chunk, encoding, callback) {
855+
bufList.push(chunk);
856+
callback();
857+
},
858+
});
859+
cos.getObject({
860+
Bucket: config.Bucket,
861+
Region: config.Region,
862+
Key: key,
863+
Output: writeStream,
864+
}, function (err, data) {
865+
assert.ok(Buffer.concat(bufList).toString() === content);
866+
done();
867+
});
868+
});
869+
});
813870
});
814871

815872
group('Key 特殊字符', function () {
@@ -2198,14 +2255,15 @@ group('upload Content-Type', function () {
21982255
cos.putObject({
21992256
Bucket: config.Bucket,
22002257
Region: config.Region,
2201-
Key: '1.txt',
2258+
Key: '1',
22022259
Body: '',
22032260
}, function (err, data) {
22042261
cos.headObject({
22052262
Bucket: config.Bucket,
22062263
Region: config.Region,
22072264
Key: '1',
22082265
}, function (err, data) {
2266+
console.log(data.headers['content-type']);
22092267
assert.ok(data.headers['content-type'] === 'application/octet-stream', 'Content-Type 正确');
22102268
done();
22112269
});
@@ -2583,13 +2641,6 @@ group('BucketInventory', function () {
25832641
Region: config.Region,
25842642
Id: InventoryConfiguration.Id
25852643
}, function(err, data) {
2586-
console.log('-----------------------------');
2587-
console.log(JSON.stringify(config));
2588-
console.log('-----------------------------');
2589-
console.log(JSON.stringify(InventoryConfiguration));
2590-
console.log('-----------------------------');
2591-
console.log(JSON.stringify(data.InventoryConfiguration));
2592-
console.log('-----------------------------');
25932644
assert.ok(comparePlainObject(InventoryConfiguration, data.InventoryConfiguration));
25942645
done();
25952646
});
@@ -3016,3 +3067,91 @@ group('Query 的键值带有特殊字符', function () {
30163067
});
30173068
});
30183069
});
3070+
3071+
group('selectObjectContent(),selectObjectContentStream()', function () {
3072+
var key = '1.json';
3073+
var selectJsonOpt = {
3074+
Bucket: config.Bucket,
3075+
Region: config.Region,
3076+
Key: key,
3077+
SelectType: 2,
3078+
SelectRequest: {
3079+
Expression: "Select * from COSObject",
3080+
ExpressionType: "SQL",
3081+
InputSerialization: {JSON: {Type: "DOCUMENT",},},
3082+
OutputSerialization: {JSON: {RecordDelimiter: "\n"},},
3083+
RequestProgress: {Enabled: "FALSE"}
3084+
},
3085+
};
3086+
test('selectObjectContent', function (done, assert) {
3087+
var time = Date.now();
3088+
var content = `{"a":123,"b":"${time}","c":{"d":456}}`;
3089+
cos.putObject({
3090+
Bucket: config.Bucket,
3091+
Region: config.Region,
3092+
Key: key,
3093+
Body: content,
3094+
}, function (err, data) {
3095+
var bufList = [];
3096+
var writeStream = new Writable({
3097+
write: function (chunk, encoding, callback) {
3098+
bufList.push(chunk);
3099+
callback();
3100+
},
3101+
});
3102+
cos.selectObjectContent(selectJsonOpt, function (err, data) {
3103+
assert.ok(data.Payload.toString() === content + '\n');
3104+
done();
3105+
});
3106+
});
3107+
});
3108+
test('selectObjectContentStream', function (done, assert) {
3109+
var time = Date.now();
3110+
var content = `{"a":123,"b":"${time}","c":{"d":456}}`;
3111+
cos.putObject({
3112+
Bucket: config.Bucket,
3113+
Region: config.Region,
3114+
Key: key,
3115+
Body: content,
3116+
}, function (err, data) {
3117+
var bufList = [];
3118+
var writeStream = new Writable({
3119+
write: function (chunk, encoding, callback) {
3120+
bufList.push(chunk);
3121+
callback();
3122+
},
3123+
});
3124+
cos.selectObjectContentStream(selectJsonOpt, function (err, data) {
3125+
assert.ok(Buffer.concat(bufList).toString() === content + '\n');
3126+
done();
3127+
}).pipe(writeStream);
3128+
});
3129+
});
3130+
test('selectObjectContentStream raw', function (done, assert) {
3131+
var time = Date.now();
3132+
var content = `{"a":123,"b":"${time}","c":{"d":456}}`;
3133+
var key = '1.json';
3134+
cos.putObject({
3135+
Bucket: config.Bucket,
3136+
Region: config.Region,
3137+
Key: key,
3138+
Body: content,
3139+
}, function (err, data) {
3140+
var bufList = [];
3141+
var writeStream = new Writable({
3142+
write: function (chunk, encoding, callback) {
3143+
bufList.push(chunk);
3144+
callback();
3145+
},
3146+
});
3147+
cos.selectObjectContentStream({
3148+
...selectJsonOpt,
3149+
DataType: 'raw',
3150+
}, function (err, data) {
3151+
var result = Buffer.concat(bufList).toString();
3152+
assert.ok(result.includes('<BytesScanned>') && result.includes(content));
3153+
done();
3154+
}).pipe(writeStream);
3155+
});
3156+
});
3157+
});

0 commit comments

Comments
 (0)