@@ -2,6 +2,7 @@ const Promise = require('bluebird');
22const AbstractFileTransfer = require ( 'ms-files-transport' ) ;
33const { merge } = require ( 'lodash' ) ;
44const S3 = require ( 'aws-sdk/clients/s3' ) ;
5+ const SNS = require ( 'aws-sdk/clients/sns' ) ;
56
67const DOWNLOAD_URL_EXPIRES_IN_SEC = 60000 ;
78
@@ -61,7 +62,25 @@ class AWSTransport extends AbstractFileTransfer {
6162 * @return {Subscription }
6263 */
6364 async subscribe ( ) {
64- this . log . warn ( 'the method is not implemented yet' ) ;
65+ const { Topics : topics } = await new SNS ( { region : this . _config . aws . credentials . region } ) . listTopics ( { } ) . promise ( ) ;
66+
67+ const topicArn = `arn:aws:sns:us-west-2:178085672309:${ this . _config . aws . credentials . topicName } ` ;
68+
69+ const topic = topics . find (
70+ ( _topic ) => _topic . TopicArn === topicArn
71+ ) ;
72+
73+ if ( ! topic ) {
74+ await new SNS ( { region : this . _config . aws . credentials . region } ) . createTopic ( { Name : this . _config . aws . credentials . topicName } ) . promise ( ) ;
75+ }
76+
77+ const params = {
78+ Protocol : 'https' ,
79+ TopicArn : topicArn ,
80+ Endpoint : 'localhost:443' ,
81+ } ;
82+
83+ await new SNS ( ) . subscribe ( params ) . promise ( ) ;
6584 }
6685
6786 /**
@@ -93,6 +112,7 @@ class AWSTransport extends AbstractFileTransfer {
93112 if ( ! isBucketExist ) {
94113 const bucketParams = {
95114 Bucket : bucketName ,
115+ region : this . _config . aws . credentials . region ,
96116 } ;
97117
98118 await aws . createBucket ( bucketParams , function handleCreateBucket ( _err ) {
@@ -125,11 +145,9 @@ class AWSTransport extends AbstractFileTransfer {
125145 }
126146
127147 // @todo interface
128- getDownloadUrlSigned ( filename , downloadName ) {
129- this . log . warn ( `${ downloadName } is not implemented yet` ) ;
130-
148+ getDownloadUrlSigned ( filename ) {
131149 const params = {
132- Bucket : this . _config . bucketName ,
150+ Bucket : this . getBucketName ( ) ,
133151 Expires : DOWNLOAD_URL_EXPIRES_IN_SEC ,
134152 Key : filename ,
135153 } ;
@@ -174,11 +192,9 @@ class AWSTransport extends AbstractFileTransfer {
174192 return new Promise ( ( resolve , reject ) => {
175193 this . _aws . getSignedUrl ( 'putObject' , params , ( err , url ) => {
176194 if ( err ) {
177- console . log ( 'init resumable upload err' , err ) ;
178195 return reject ( err ) ;
179196 }
180197
181- console . log ( 'init resumable upload url' , url ) ;
182198 return resolve ( url ) ;
183199 } ) ;
184200 } ) ;
@@ -239,15 +255,11 @@ class AWSTransport extends AbstractFileTransfer {
239255 const params = {
240256 Bucket : this . _config . bucket . name ,
241257 Expires : DOWNLOAD_URL_EXPIRES_IN_SEC ,
242- Key : opts . filename ,
258+ Key : opts . resource ,
243259 } ;
244260
245- params . ContentType = opts . contentType ;
246-
247261 return new Promise ( ( resolve , reject ) => {
248- console . log ( 'signed url params' , params ) ;
249262 this . _aws . getSignedUrl ( 'putObject' , params , ( err , url ) => {
250- console . log ( 'signed url err' , err ) ;
251263 if ( err ) {
252264 return reject ( err ) ;
253265 }
@@ -305,12 +317,10 @@ class AWSTransport extends AbstractFileTransfer {
305317 console . log ( `exists method aws for: ${ filename } ` ) ;
306318
307319 return new Promise ( ( resolve ) => {
308- this . _aws . headObject ( { Key : filename , Bucket : this . _config . bucket . name } , ( err , data ) => {
320+ this . _aws . headObject ( { Key : filename , Bucket : this . _config . bucket . name } , ( err ) => {
309321 if ( err ) {
310- console . log ( 'exists err' , err ) ;
311322 return resolve ( false ) ;
312323 }
313- console . log ( 'exists data' , data ) ;
314324 return resolve ( true ) ;
315325 } ) ;
316326 } ) ;
@@ -322,7 +332,14 @@ class AWSTransport extends AbstractFileTransfer {
322332 * @return {Promise }
323333 */
324334 remove ( filename ) {
325- this . log . warn ( 'the method is not implemented yet' , { filename } ) ;
335+ return new Promise ( ( resolve ) => {
336+ this . _aws . deleteObject ( { Key : filename , Bucket : this . _config . bucket . name } , ( err ) => {
337+ if ( err ) {
338+ return resolve ( false ) ;
339+ }
340+ return resolve ( true ) ;
341+ } ) ;
342+ } ) ;
326343 }
327344}
328345
@@ -348,7 +365,7 @@ AWSTransport.defaultOpts = {
348365 token : undefined ,
349366 } ,
350367 } ,
351- mсetadata : { } ,
368+ metadata : { } ,
352369 } ,
353370} ;
354371
0 commit comments