1
1
import shortId from 'short-uuid' ;
2
2
import { dateYMD , xAmzDate } from './Date' ;
3
- import { IConfig , DeleteResponse , UploadResponse } from './types' ;
4
- import { throwError } from './ErrorThrower' ;
3
+ import { IConfig , ListFileErrorResponse , ListFileResponse , UploadResponse } from './types' ;
4
+ import { throwUploadError } from './ErrorThrower' ;
5
5
import GetUrl from './Url' ;
6
6
import Policy from './Policy' ;
7
7
import Signature from './Signature' ;
@@ -13,7 +13,7 @@ class ReactS3Client {
13
13
this . config = config ;
14
14
}
15
15
public async uploadFile ( file : File , newFileName ?: string ) : Promise < UploadResponse > {
16
- throwError ( this . config , file ) ;
16
+ throwUploadError ( this . config , file ) ;
17
17
let fileExtension : string ;
18
18
const fd = new FormData ( ) ;
19
19
@@ -78,6 +78,53 @@ class ReactS3Client {
78
78
} ,
79
79
) ;
80
80
}
81
+
82
+ public async listFiles ( ) {
83
+ const awsConfig = ( ( { region, accessKeyId, secretAccessKey } ) => ( { region, accessKeyId, secretAccessKey } ) ) (
84
+ this . config ,
85
+ ) ;
86
+ AWS . config . update ( awsConfig ) ;
87
+
88
+ const s3 = new AWS . S3 ( {
89
+ apiVersion : '2006-03-01' ,
90
+ params : {
91
+ Bucket : this . config . bucketName ,
92
+ } ,
93
+ } ) ;
94
+
95
+ try {
96
+ const req = await s3 . listObjects ( {
97
+ Bucket : this . config . bucketName ,
98
+ } ) . promise ( ) ;
99
+
100
+ if ( req . $response . error ) {
101
+ return Promise . reject < ListFileErrorResponse > ( {
102
+ err : req . $response . error . name ,
103
+ errMessage : req . $response . error . message ,
104
+ data : req . $response . error
105
+ } ) ;
106
+ }
107
+
108
+ if ( ! req . $response . data ) {
109
+ return Promise . reject < ListFileErrorResponse > ( {
110
+ err : 'Something went wrong!' ,
111
+ errMessage : 'Unknown error occured. Please try again' ,
112
+ data : null
113
+ } ) ;
114
+ }
115
+
116
+ return Promise . resolve < ListFileResponse > ( {
117
+ message : 'Objects listed succesfully' ,
118
+ data : req . $response . data
119
+ } ) ;
120
+ } catch ( err ) {
121
+ return Promise . reject < ListFileErrorResponse > ( {
122
+ err : 'Something went wrong!' ,
123
+ errMessage : 'Unknown error occured. Please try again' ,
124
+ data : err
125
+ } ) ;
126
+ }
127
+ }
81
128
}
82
129
83
130
export default ReactS3Client ;
0 commit comments