@@ -4,7 +4,9 @@ var COS = require('../index');
4
4
var request = require ( 'request' ) ;
5
5
var util = require ( '../demo/util' ) ;
6
6
var config = require ( '../demo/config' ) ;
7
- var Writable = require ( 'stream' ) . Writable ;
7
+ var Stream = require ( 'stream' ) ;
8
+
9
+ var Writable = Stream . Writable ;
8
10
9
11
var dataURItoUploadBody = function ( dataURI ) {
10
12
return Buffer . from ( dataURI . split ( ',' ) [ 1 ] , 'base64' ) ;
@@ -539,6 +541,7 @@ group('putObject()', function () {
539
541
var outputStream = new Writable ( {
540
542
write : function ( chunk , encoding , callback ) {
541
543
objectContent = Buffer . concat ( [ objectContent , chunk ] ) ;
544
+ callback ( ) ;
542
545
}
543
546
} ) ;
544
547
setTimeout ( function ( ) {
@@ -750,7 +753,7 @@ group('putObject()', function () {
750
753
} ) ;
751
754
} ) ;
752
755
753
- group ( 'getObject()' , function ( ) {
756
+ group ( 'getObject(),getObjectStream() ' , function ( ) {
754
757
test ( 'getObject() body' , function ( done , assert ) {
755
758
var key = '1.txt' ;
756
759
var content = Date . now ( ) . toString ( ) ;
@@ -780,6 +783,7 @@ group('getObject()', function () {
780
783
var outputStream = new Writable ( {
781
784
write : function ( chunk , encoding , callback ) {
782
785
objectContent = Buffer . concat ( [ objectContent , chunk ] ) ;
786
+ callback ( ) ;
783
787
}
784
788
} ) ;
785
789
var content = Date . now ( ) . toString ( 36 ) ;
@@ -810,6 +814,59 @@ group('getObject()', function () {
810
814
} ) ;
811
815
} ) ;
812
816
} ) ;
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
+ } ) ;
813
870
} ) ;
814
871
815
872
group ( 'Key 特殊字符' , function ( ) {
@@ -2198,14 +2255,15 @@ group('upload Content-Type', function () {
2198
2255
cos . putObject ( {
2199
2256
Bucket : config . Bucket ,
2200
2257
Region : config . Region ,
2201
- Key : '1.txt ' ,
2258
+ Key : '1' ,
2202
2259
Body : '' ,
2203
2260
} , function ( err , data ) {
2204
2261
cos . headObject ( {
2205
2262
Bucket : config . Bucket ,
2206
2263
Region : config . Region ,
2207
2264
Key : '1' ,
2208
2265
} , function ( err , data ) {
2266
+ console . log ( data . headers [ 'content-type' ] ) ;
2209
2267
assert . ok ( data . headers [ 'content-type' ] === 'application/octet-stream' , 'Content-Type 正确' ) ;
2210
2268
done ( ) ;
2211
2269
} ) ;
@@ -2583,13 +2641,6 @@ group('BucketInventory', function () {
2583
2641
Region : config . Region ,
2584
2642
Id : InventoryConfiguration . Id
2585
2643
} , 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 ( '-----------------------------' ) ;
2593
2644
assert . ok ( comparePlainObject ( InventoryConfiguration , data . InventoryConfiguration ) ) ;
2594
2645
done ( ) ;
2595
2646
} ) ;
@@ -3016,3 +3067,91 @@ group('Query 的键值带有特殊字符', function () {
3016
3067
} ) ;
3017
3068
} ) ;
3018
3069
} ) ;
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