@@ -20,27 +20,46 @@ class Cos {
2020 this . cosClient = new cos ( this . credentials ) ;
2121 }
2222
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+
2342 async createBucket ( inputs = { } ) {
2443 console . log ( `Creating bucket: ${ inputs . bucket } in ${ this . region } ...` ) ;
2544 const createParams = {
2645 Bucket : inputs . bucket ,
2746 Region : this . region ,
2847 } ;
29- const createHandler = util . promisify ( this . cosClient . putBucket . bind ( this . cosClient ) ) ;
48+ const createHandler = this . promisify ( this . cosClient . putBucket . bind ( this . cosClient ) ) ;
3049 try {
3150 await createHandler ( createParams ) ;
3251 } catch ( e ) {
33- if ( e . error . Code == 'BucketAlreadyExists' || e . error . Code == 'BucketAlreadyOwnedByYou' ) {
52+ if ( e . code == 'BucketAlreadyExists' || e . code == 'BucketAlreadyOwnedByYou' ) {
3453 if ( ! inputs . force ) {
3554 throw new TypeError ( `API_COS_putBucket` , JSON . stringify ( e ) , e . stack ) ;
3655 } else {
3756 console . log ( `Bucket ${ inputs . bucket } already exist.` ) ;
3857 }
3958 } else {
40- // cos在云函数中可能出现ECONNRESET错误,没办法具体定位,初步猜测是客户端问题,是函数启动网络还没准备好,这个还不确定,所以在这里做兼容
59+ // TODO: cos在云函数中可能出现ECONNRESET错误,没办法具体定位,初步猜测是客户端问题,是函数启动网络还没准备好,这个还不确定,所以在这里做兼容
4160 if ( JSON . stringify ( e ) . includes ( 'ECONNRESET' ) ) {
4261 // 检查bucket是否存在
43- const headHandler = util . promisify ( this . cosClient . headBucket . bind ( this . cosClient ) ) ;
62+ const headHandler = this . promisify ( this . cosClient . headBucket . bind ( this . cosClient ) ) ;
4463 try {
4564 const isHave = await headHandler ( createParams ) ;
4665 if ( isHave . statusCode == 200 ) {
@@ -119,7 +138,7 @@ class Cos {
119138 }
120139 setAclParams . AccessControlPolicy = accessControlPolicy ;
121140 }
122- const setAclHandler = util . promisify ( this . cosClient . putBucketAcl . bind ( this . cosClient ) ) ;
141+ const setAclHandler = this . promisify ( this . cosClient . putBucketAcl . bind ( this . cosClient ) ) ;
123142 try {
124143 await setAclHandler ( setAclParams ) ;
125144 } catch ( e ) {
@@ -143,7 +162,7 @@ class Cos {
143162 Tags : tags ,
144163 } ,
145164 } ;
146- const setTagsHandler = util . promisify ( this . cosClient . putBucketTagging . bind ( this . cosClient ) ) ;
165+ const setTagsHandler = this . promisify ( this . cosClient . putBucketTagging . bind ( this . cosClient ) ) ;
147166 try {
148167 await setTagsHandler ( setTagsParams ) ;
149168 } catch ( e ) {
@@ -153,7 +172,7 @@ class Cos {
153172
154173 async deleteTags ( inputs = { } ) {
155174 console . log ( `Deleting tags for ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
156- const deleteTagsHandler = util . promisify (
175+ const deleteTagsHandler = this . promisify (
157176 this . cosClient . deleteBucketTagging . bind ( this . cosClient ) ,
158177 ) ;
159178 try {
@@ -193,7 +212,7 @@ class Cos {
193212 Region : this . region ,
194213 CORSRules : cors ,
195214 } ;
196- const setCorsHandler = util . promisify ( this . cosClient . putBucketCors . bind ( this . cosClient ) ) ;
215+ const setCorsHandler = this . promisify ( this . cosClient . putBucketCors . bind ( this . cosClient ) ) ;
197216 try {
198217 await setCorsHandler ( setCorsParams ) ;
199218 } catch ( e ) {
@@ -203,7 +222,7 @@ class Cos {
203222
204223 async deleteCors ( inputs = { } ) {
205224 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 ) ) ;
207226 try {
208227 await deleteCorsHandler ( {
209228 Bucket : inputs . bucket ,
@@ -260,7 +279,7 @@ class Cos {
260279 Region : this . region ,
261280 Rules : lifecycle ,
262281 } ;
263- const setLifecycleHandler = util . promisify (
282+ const setLifecycleHandler = this . promisify (
264283 this . cosClient . putBucketLifecycle . bind ( this . cosClient ) ,
265284 ) ;
266285 try {
@@ -272,7 +291,7 @@ class Cos {
272291
273292 async deleteLifecycle ( inputs = { } ) {
274293 console . log ( `Deleting lifecycle for ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
275- const deleteLifecycle = util . promisify (
294+ const deleteLifecycle = this . promisify (
276295 this . cosClient . deleteBucketLifecycle . bind ( this . cosClient ) ,
277296 ) ;
278297 try {
@@ -295,7 +314,7 @@ class Cos {
295314 Status : inputs . versioning ,
296315 } ,
297316 } ;
298- const setVersioningHandler = util . promisify (
317+ const setVersioningHandler = this . promisify (
299318 this . cosClient . putBucketVersioning . bind ( this . cosClient ) ,
300319 ) ;
301320 try {
@@ -328,7 +347,7 @@ class Cos {
328347 await this . setAcl ( inputs ) ;
329348 }
330349
331- const setWebsiteHandler = util . promisify ( this . cosClient . putBucketWebsite . bind ( this . cosClient ) ) ;
350+ const setWebsiteHandler = this . promisify ( this . cosClient . putBucketWebsite . bind ( this . cosClient ) ) ;
332351 try {
333352 await setWebsiteHandler ( staticHostParams ) ;
334353 } catch ( e ) {
@@ -337,7 +356,7 @@ class Cos {
337356 }
338357
339358 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 ) ) ;
341360 try {
342361 const res = await getBucketHandler ( {
343362 Bucket : inputs . bucket ,
@@ -350,7 +369,7 @@ class Cos {
350369 }
351370
352371 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 ) ) ;
354373 try {
355374 const { Url } = await getObjectUrlHandler ( {
356375 Bucket : inputs . bucket ,
@@ -370,16 +389,14 @@ class Cos {
370389 }
371390
372391 async upload ( inputs = { } ) {
373- console . log ( `Uploding files to ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
374-
375392 const { bucket } = inputs ;
376393 const { region } = this ;
377394
378395 if ( ! bucket ) {
379- throw new TypeError ( `PARAMETER_COS` , 'Could not find bucket name. ' ) ;
396+ throw new TypeError ( `PARAMETER_COS` , 'Bucket name is required ' ) ;
380397 }
381398
382- // 上传分为文件夹上传呢和文件上传
399+ console . log ( `Uploding files to ${ this . region } 's bucket: ${ inputs . bucket } ...` ) ;
383400 if ( inputs . dir && ( await fs . existsSync ( inputs . dir ) ) ) {
384401 const options = { keyPrefix : inputs . keyPrefix } ;
385402
@@ -415,7 +432,7 @@ class Cos {
415432 Key : key ,
416433 Body : fs . createReadStream ( item . path ) ,
417434 } ;
418- handler = util . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
435+ handler = this . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
419436 uploadItems . push ( handler ( itemParams ) ) ;
420437 } ) ;
421438 try {
@@ -430,7 +447,7 @@ class Cos {
430447 Key : inputs . key || path . basename ( inputs . file ) ,
431448 Body : fs . createReadStream ( inputs . file ) ,
432449 } ;
433- const handler = util . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
450+ const handler = this . promisify ( this . cosClient . putObject . bind ( this . cosClient ) ) ;
434451 try {
435452 await handler ( itemParams ) ;
436453 } catch ( e ) {
@@ -554,7 +571,7 @@ class Cos {
554571 try {
555572 detail = await this . getBucket ( inputs ) ;
556573 } catch ( e ) {
557- if ( e . error && e . error . Code && e . error . Code === 'NoSuchBucket' ) {
574+ if ( e . message . indexOf ( 'NoSuchBucket' ) !== - 1 ) {
558575 console . log ( `Bucket ${ inputs . bucket } not exist` ) ;
559576 return ;
560577 }
@@ -569,7 +586,7 @@ class Cos {
569586 } ) ;
570587
571588 try {
572- const deleteMultipleObjectHandler = util . promisify (
589+ const deleteMultipleObjectHandler = this . promisify (
573590 this . cosClient . deleteMultipleObject . bind ( this . cosClient ) ,
574591 ) ;
575592 await deleteMultipleObjectHandler ( {
@@ -581,15 +598,15 @@ class Cos {
581598 console . log ( e ) ;
582599 }
583600 try {
584- const deleteBucketHandler = util . promisify (
601+ const deleteBucketHandler = this . promisify (
585602 this . cosClient . deleteBucket . bind ( this . cosClient ) ,
586603 ) ;
587604 await deleteBucketHandler ( {
588605 Region : this . region ,
589606 Bucket : inputs . bucket ,
590607 } ) ;
591608 } catch ( e ) {
592- if ( e . error && e . error . Code && e . error . Code === 'NoSuchBucket' ) {
609+ if ( e . message . indexOf ( 'NoSuchBucket' ) !== - 1 ) {
593610 console . log ( `Bucket ${ inputs . bucket } not exist` ) ;
594611 } else {
595612 throw new TypeError ( `API_APIGW_deleteBucket` , e . message , e . stack ) ;
0 commit comments