11const  async  =  require ( 'async' ) ; 
22const  assert  =  require ( 'assert' ) ; 
3- const  {  S3  }  =  require ( 'aws-sdk' ) ; 
3+ const  {  S3Client,  
4+     ListObjectVersionsCommand,  
5+     GetObjectCommand, 
6+     DeleteObjectsCommand, 
7+     PutBucketVersioningCommand, 
8+     PutObjectCommand, 
9+     DeleteObjectCommand }  =  require ( '@aws-sdk/client-s3' ) ; 
410
511const  getConfig  =  require ( '../../test/support/config' ) ; 
6- const  config  =  getConfig ( 'default' ,   {   signatureVersion :  'v4'   } ) ; 
7- const  s3  =  new  S3 ( config ) ; 
12+ const  config  =  getConfig ( 'default' ) ; 
13+ const  s3Client  =  new  S3Client ( config ) ; 
814
915const  versioningEnabled  =  {  Status : 'Enabled'  } ; 
1016const  versioningSuspended  =  {  Status : 'Suspended'  } ; 
@@ -19,28 +25,25 @@ function _deleteVersionList(versionList, bucket, callback) {
1925            Key : version . Key ,  VersionId : version . VersionId  } ) ; 
2026    } ) ; 
2127
22-     return  s3 . deleteObjects ( params ,   callback ) ; 
28+     return  s3Client . send ( new   DeleteObjectsCommand ( params ) ) . then ( ( )   =>   callback ( ) ) . catch ( err   =>   callback ( err ) ) ; 
2329} 
2430
2531function  checkOneVersion ( s3 ,  bucket ,  versionId ,  callback )  { 
26-     return  s3 . listObjectVersions ( {  Bucket : bucket  } , 
27-         ( err ,  data )  =>  { 
28-             if  ( err )  { 
29-                 callback ( err ) ; 
30-             } 
32+     return  s3Client . send ( new  ListObjectVersionsCommand ( {  Bucket : bucket  } ) ) . then ( data  =>  { 
3133            assert . strictEqual ( data . Versions . length ,  1 ) ; 
3234            if  ( versionId )  { 
3335                assert . strictEqual ( data . Versions [ 0 ] . VersionId ,  versionId ) ; 
3436            } 
3537            assert . strictEqual ( data . DeleteMarkers . length ,  0 ) ; 
3638            callback ( ) ; 
37-         } ) ; 
39+         } ) . catch ( err   =>   callback ( err ) ) ; 
3840} 
3941
4042function  removeAllVersions ( params ,  callback )  { 
4143    const  bucket  =  params . Bucket ; 
4244    async . waterfall ( [ 
43-         cb  =>  s3 . listObjectVersions ( params ,  cb ) , 
45+         cb  =>  s3Client . send ( new  ListObjectVersionsCommand ( params ) ) . then ( data  => 
46+             cb ( null ,  data ) ) . catch ( err  =>  cb ( err ) ) , 
4447        ( data ,  cb )  =>  _deleteVersionList ( data . DeleteMarkers ,  bucket , 
4548            err  =>  cb ( err ,  data ) ) , 
4649        ( data ,  cb )  =>  _deleteVersionList ( data . Versions ,  bucket , 
@@ -60,25 +63,26 @@ function removeAllVersions(params, callback) {
6063} 
6164
6265function  suspendVersioning ( bucket ,  callback )  { 
63-     s3 . putBucketVersioning ( { 
66+     s3Client . send ( new   PutBucketVersioningCommand ( { 
6467        Bucket : bucket , 
6568        VersioningConfiguration : versioningSuspended , 
66-     } ,   callback ) ; 
69+     } ) ) . then ( ( )   =>   callback ( ) ) . catch ( err   =>   callback ( err ) ) ; 
6770} 
6871
6972function  enableVersioning ( bucket ,  callback )  { 
70-     s3 . putBucketVersioning ( { 
73+     s3Client . send ( new   PutBucketVersioningCommand ( { 
7174        Bucket : bucket , 
7275        VersioningConfiguration : versioningEnabled , 
73-     } ,   callback ) ; 
76+     } ) ) . then ( ( )   =>   callback ( ) ) . catch ( err   =>   callback ( err ) ) ; 
7477} 
7578
7679function  enableVersioningThenPutObject ( bucket ,  object ,  callback )  { 
7780    enableVersioning ( bucket ,  err  =>  { 
7881        if  ( err )  { 
7982            callback ( err ) ; 
8083        } 
81-         s3 . putObject ( {  Bucket : bucket ,  Key : object  } ,  callback ) ; 
84+         s3Client . send ( new  PutObjectCommand ( {  Bucket : bucket ,  Key : object  } ) ) . then ( ( )  =>  
85+             callback ( ) ) . catch ( err  =>  callback ( err ) ) ; 
8286    } ) ; 
8387} 
8488
@@ -102,33 +106,35 @@ function enableVersioningThenPutObject(bucket, object, callback) {
102106function  createDualNullVersion ( s3 ,  bucketName ,  keyName ,  cb )  { 
103107    async . waterfall ( [ 
104108        // put null version 
105-         next  =>  s3 . putObject ( {  Bucket : bucketName ,  Key : keyName   } , 
106-             err  =>  next ( err ) ) , 
109+         next  =>  s3Client . send ( new   PutObjectCommand ( {  Bucket : bucketName ,  Key : keyName ,   Body :  null   } ) ) . then ( ( )   =>   
110+             next ( ) ) . catch ( err  =>  next ( err ) ) , 
107111        next  =>  enableVersioning ( bucketName ,  err  =>  next ( err ) ) , 
108112        // should store null version as separate version before 
109113        // putting new version 
110-         next  =>  s3 . putObject ( {  Bucket : bucketName ,  Key : keyName  } , 
111-             ( err ,  data )  =>  { 
112-                 assert . strictEqual ( err ,  null , 
113-                     'Unexpected err putting new version' ) ; 
114-                 assert ( data . VersionId ) ; 
115-                 next ( null ,  data . VersionId ) ; 
116-             } ) , 
114+         next  =>  s3Client . send ( new  PutObjectCommand ( {  Bucket : bucketName ,  Key : keyName  } ) ) . then ( data  =>  { 
115+             assert ( data . VersionId ) ; 
116+             next ( null ,  data . VersionId ) ; 
117+         } ) . catch ( err  =>  { 
118+             assert . strictEqual ( err ,  null , 
119+                 'Unexpected err putting new version' ) ; 
120+             next ( err ) ; 
121+         } ) , 
117122        // delete version we just created, master version should be updated 
118123        // with value of next most recent version: null version previously put 
119-         ( versionId ,  next )  =>  s3 . deleteObject ( { 
124+         ( versionId ,  next )  =>  s3Client . send ( new   DeleteObjectCommand ( { 
120125            Bucket : bucketName , 
121126            Key : keyName , 
122127            VersionId : versionId , 
123-         } ,   err  =>  next ( err ) ) , 
128+         } ) ) . then ( ( )   =>   next ( ) ) . catch ( err  =>  next ( err ) ) , 
124129        // getting object should return null version now 
125-         next  =>  s3 . getObject ( {  Bucket : bucketName ,  Key : keyName  } , 
126-             ( err ,  data )  =>  { 
127-                 assert . strictEqual ( err ,  null , 
128-                     'Unexpected err getting latest version' ) ; 
129-                 assert . strictEqual ( data . VersionId ,  'null' ) ; 
130-                 next ( ) ; 
131-             } ) , 
130+         next  =>  s3Client . send ( new  GetObjectCommand ( {  Bucket : bucketName ,  Key : keyName  } ) ) . then ( data  =>  { 
131+             assert . strictEqual ( data . VersionId ,  'null' ) ; 
132+             next ( ) ; 
133+         } ) . catch ( err  =>  { 
134+             assert . strictEqual ( err ,  null , 
135+                 'Unexpected err getting latest version' ) ; 
136+             next ( err ) ; 
137+         } ) , 
132138    ] ,  err  =>  cb ( err ) ) ; 
133139} 
134140
0 commit comments