@@ -20,27 +20,46 @@ class Cos {
20
20
this . cosClient = new cos ( this . credentials ) ;
21
21
}
22
22
23
+ promisify ( callback ) {
24
+ return ( params ) => {
25
+ return new Promise ( ( resolve , reject ) => {
26
+ callback ( params , ( err , res ) => {
27
+ if ( err ) {
28
+ const e = new Error (
29
+ typeof err . error === 'string' ? err . error : `${ err . error . Code } : ${ err . error . Message } ` ,
30
+ ) ;
31
+ if ( err . error && err . error . Code ) {
32
+ e . code = err . error . Code ;
33
+ }
34
+ reject ( e ) ;
35
+ }
36
+ resolve ( res ) ;
37
+ } ) ;
38
+ } ) ;
39
+ } ;
40
+ }
41
+
23
42
async createBucket ( inputs = { } ) {
24
43
console . log ( `Creating bucket: ${ inputs . bucket } in ${ this . region } ...` ) ;
25
44
const createParams = {
26
45
Bucket : inputs . bucket ,
27
46
Region : this . region ,
28
47
} ;
29
- const createHandler = util . promisify ( this . cosClient . putBucket . bind ( this . cosClient ) ) ;
48
+ const createHandler = this . promisify ( this . cosClient . putBucket . bind ( this . cosClient ) ) ;
30
49
try {
31
50
await createHandler ( createParams ) ;
32
51
} catch ( e ) {
33
- if ( e . error . Code == 'BucketAlreadyExists' || e . error . Code == 'BucketAlreadyOwnedByYou' ) {
52
+ if ( e . code == 'BucketAlreadyExists' || e . code == 'BucketAlreadyOwnedByYou' ) {
34
53
if ( ! inputs . force ) {
35
54
throw new TypeError ( `API_COS_putBucket` , JSON . stringify ( e ) , e . stack ) ;
36
55
} else {
37
56
console . log ( `Bucket ${ inputs . bucket } already exist.` ) ;
38
57
}
39
58
} else {
40
- // cos在云函数中可能出现ECONNRESET错误,没办法具体定位,初步猜测是客户端问题,是函数启动网络还没准备好,这个还不确定,所以在这里做兼容
59
+ // TODO: cos在云函数中可能出现ECONNRESET错误,没办法具体定位,初步猜测是客户端问题,是函数启动网络还没准备好,这个还不确定,所以在这里做兼容
41
60
if ( JSON . stringify ( e ) . includes ( 'ECONNRESET' ) ) {
42
61
// 检查bucket是否存在
43
- const headHandler = util . promisify ( this . cosClient . headBucket . bind ( this . cosClient ) ) ;
62
+ const headHandler = this . promisify ( this . cosClient . headBucket . bind ( this . cosClient ) ) ;
44
63
try {
45
64
const isHave = await headHandler ( createParams ) ;
46
65
if ( isHave . statusCode == 200 ) {
@@ -119,7 +138,7 @@ class Cos {
119
138
}
120
139
setAclParams . AccessControlPolicy = accessControlPolicy ;
121
140
}
122
- const setAclHandler = util . promisify ( this . cosClient . putBucketAcl . bind ( this . cosClient ) ) ;
141
+ const setAclHandler = this . promisify ( this . cosClient . putBucketAcl . bind ( this . cosClient ) ) ;
123
142
try {
124
143
await setAclHandler ( setAclParams ) ;
125
144
} catch ( e ) {
@@ -143,7 +162,7 @@ class Cos {
143
162
Tags : tags ,
144
163
} ,
145
164
} ;
146
- const setTagsHandler = util . promisify ( this . cosClient . putBucketTagging . bind ( this . cosClient ) ) ;
165
+ const setTagsHandler = this . promisify ( this . cosClient . putBucketTagging . bind ( this . cosClient ) ) ;
147
166
try {
148
167
await setTagsHandler ( setTagsParams ) ;
149
168
} catch ( e ) {
@@ -153,7 +172,7 @@ class Cos {
153
172
154
173
async deleteTags ( inputs = { } ) {
155
174
console . log ( `Deleting tags for ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
156
- const deleteTagsHandler = util . promisify (
175
+ const deleteTagsHandler = this . promisify (
157
176
this . cosClient . deleteBucketTagging . bind ( this . cosClient ) ,
158
177
) ;
159
178
try {
@@ -193,7 +212,7 @@ class Cos {
193
212
Region : this . region ,
194
213
CORSRules : cors ,
195
214
} ;
196
- const setCorsHandler = util . promisify ( this . cosClient . putBucketCors . bind ( this . cosClient ) ) ;
215
+ const setCorsHandler = this . promisify ( this . cosClient . putBucketCors . bind ( this . cosClient ) ) ;
197
216
try {
198
217
await setCorsHandler ( setCorsParams ) ;
199
218
} catch ( e ) {
@@ -203,7 +222,7 @@ class Cos {
203
222
204
223
async deleteCors ( inputs = { } ) {
205
224
console . log ( `Deleting cors for ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
206
- const deleteCorsHandler = util . promisify ( this . cosClient . deleteBucketCors . bind ( this . cosClient ) ) ;
225
+ const deleteCorsHandler = this . promisify ( this . cosClient . deleteBucketCors . bind ( this . cosClient ) ) ;
207
226
try {
208
227
await deleteCorsHandler ( {
209
228
Bucket : inputs . bucket ,
@@ -260,7 +279,7 @@ class Cos {
260
279
Region : this . region ,
261
280
Rules : lifecycle ,
262
281
} ;
263
- const setLifecycleHandler = util . promisify (
282
+ const setLifecycleHandler = this . promisify (
264
283
this . cosClient . putBucketLifecycle . bind ( this . cosClient ) ,
265
284
) ;
266
285
try {
@@ -272,7 +291,7 @@ class Cos {
272
291
273
292
async deleteLifecycle ( inputs = { } ) {
274
293
console . log ( `Deleting lifecycle for ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
275
- const deleteLifecycle = util . promisify (
294
+ const deleteLifecycle = this . promisify (
276
295
this . cosClient . deleteBucketLifecycle . bind ( this . cosClient ) ,
277
296
) ;
278
297
try {
@@ -295,7 +314,7 @@ class Cos {
295
314
Status : inputs . versioning ,
296
315
} ,
297
316
} ;
298
- const setVersioningHandler = util . promisify (
317
+ const setVersioningHandler = this . promisify (
299
318
this . cosClient . putBucketVersioning . bind ( this . cosClient ) ,
300
319
) ;
301
320
try {
@@ -328,7 +347,7 @@ class Cos {
328
347
await this . setAcl ( inputs ) ;
329
348
}
330
349
331
- const setWebsiteHandler = util . promisify ( this . cosClient . putBucketWebsite . bind ( this . cosClient ) ) ;
350
+ const setWebsiteHandler = this . promisify ( this . cosClient . putBucketWebsite . bind ( this . cosClient ) ) ;
332
351
try {
333
352
await setWebsiteHandler ( staticHostParams ) ;
334
353
} catch ( e ) {
@@ -337,7 +356,7 @@ class Cos {
337
356
}
338
357
339
358
async getBucket ( inputs = { } ) {
340
- const getBucketHandler = util . promisify ( this . cosClient . getBucket . bind ( this . cosClient ) ) ;
359
+ const getBucketHandler = this . promisify ( this . cosClient . getBucket . bind ( this . cosClient ) ) ;
341
360
try {
342
361
const res = await getBucketHandler ( {
343
362
Bucket : inputs . bucket ,
@@ -350,7 +369,7 @@ class Cos {
350
369
}
351
370
352
371
async getObjectUrl ( inputs = { } ) {
353
- const getObjectUrlHandler = util . promisify ( this . cosClient . getObjectUrl . bind ( this . cosClient ) ) ;
372
+ const getObjectUrlHandler = this . promisify ( this . cosClient . getObjectUrl . bind ( this . cosClient ) ) ;
354
373
try {
355
374
const { Url } = await getObjectUrlHandler ( {
356
375
Bucket : inputs . bucket ,
@@ -370,16 +389,14 @@ class Cos {
370
389
}
371
390
372
391
async upload ( inputs = { } ) {
373
- console . log ( `Uploding files to ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
374
-
375
392
const { bucket } = inputs ;
376
393
const { region } = this ;
377
394
378
395
if ( ! bucket ) {
379
- throw new TypeError ( `PARAMETER_COS` , 'Could not find bucket name. ' ) ;
396
+ throw new TypeError ( `PARAMETER_COS` , 'Bucket name is required ' ) ;
380
397
}
381
398
382
- // 上传分为文件夹上传呢和文件上传
399
+ console . log ( `Uploding files to ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
383
400
if ( inputs . dir && ( await fs . existsSync ( inputs . dir ) ) ) {
384
401
const options = { keyPrefix : inputs . keyPrefix } ;
385
402
@@ -415,7 +432,7 @@ class Cos {
415
432
Key : key ,
416
433
Body : fs . createReadStream ( item . path ) ,
417
434
} ;
418
- handler = util . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
435
+ handler = this . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
419
436
uploadItems . push ( handler ( itemParams ) ) ;
420
437
} ) ;
421
438
try {
@@ -430,7 +447,7 @@ class Cos {
430
447
Key : inputs . key || path . basename ( inputs . file ) ,
431
448
Body : fs . createReadStream ( inputs . file ) ,
432
449
} ;
433
- const handler = util . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
450
+ const handler = this . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
434
451
try {
435
452
await handler ( itemParams ) ;
436
453
} catch ( e ) {
@@ -554,7 +571,7 @@ class Cos {
554
571
try {
555
572
detail = await this . getBucket ( inputs ) ;
556
573
} catch ( e ) {
557
- if ( e . error && e . error . Code && e . error . Code === 'NoSuchBucket' ) {
574
+ if ( e . message . indexOf ( 'NoSuchBucket' ) !== - 1 ) {
558
575
console . log ( `Bucket ${ inputs . bucket } not exist` ) ;
559
576
return ;
560
577
}
@@ -569,7 +586,7 @@ class Cos {
569
586
} ) ;
570
587
571
588
try {
572
- const deleteMultipleObjectHandler = util . promisify (
589
+ const deleteMultipleObjectHandler = this . promisify (
573
590
this . cosClient . deleteMultipleObject . bind ( this . cosClient ) ,
574
591
) ;
575
592
await deleteMultipleObjectHandler ( {
@@ -581,15 +598,15 @@ class Cos {
581
598
console . log ( e ) ;
582
599
}
583
600
try {
584
- const deleteBucketHandler = util . promisify (
601
+ const deleteBucketHandler = this . promisify (
585
602
this . cosClient . deleteBucket . bind ( this . cosClient ) ,
586
603
) ;
587
604
await deleteBucketHandler ( {
588
605
Region : this . region ,
589
606
Bucket : inputs . bucket ,
590
607
} ) ;
591
608
} catch ( e ) {
592
- if ( e . error && e . error . Code && e . error . Code === 'NoSuchBucket' ) {
609
+ if ( e . message . indexOf ( 'NoSuchBucket' ) !== - 1 ) {
593
610
console . log ( `Bucket ${ inputs . bucket } not exist` ) ;
594
611
} else {
595
612
throw new TypeError ( `API_APIGW_deleteBucket` , e . message , e . stack ) ;
0 commit comments