@@ -4,7 +4,9 @@ var COS = require('../index');
44var request = require ( 'request' ) ;
55var util = require ( '../demo/util' ) ;
66var config = require ( '../demo/config' ) ;
7- var Writable = require ( 'stream' ) . Writable ;
7+ var Stream = require ( 'stream' ) ;
8+
9+ var Writable = Stream . Writable ;
810
911var 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
815872group ( '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