@@ -17,10 +17,49 @@ function uploadByURL(url, bucket, fileName) {
1717 request ( url )
1818 . on ( 'response' , ( response ) => { response . pause ( ) ; resolve ( response ) ; } )
1919 . on ( 'error' , ( reject ) ) ;
20- } ) . then ( ( response ) => { return response . pipe ( file . createWriteStream ( { gzip : true } ) ) ; } )
20+ //.on('finish', ());
21+ } ) . then ( ( response ) => { return response . pipe ( file . createWriteStream ( { gzip : true } ) ) ; } ) // TODO: Restructure.
2122 . catch ( ( error ) => { return { error } ; } ) ; // TODO: Add more detailed error handling. - statusCode etc.
2223}
24+ // TODO: file.createResumableUpload
2325
2426exports . upload = function ( url , fileName ) {
2527 return uploadByURL ( url , storage . bucket ( config . bucket_name ) , fileName ) ;
2628} ;
29+
30+ function downloadByID ( fileName , bucket ) {
31+ let file = bucket . file ( fileName ) ;
32+ return new Promise ( ( resolve , reject ) => {
33+ file . createReadStream ( )
34+ . on ( 'response' , ( response ) => { response . pause ( ) ; resolve ( response ) ; } )
35+ . on ( 'error' , ( reject ) )
36+ . pipe ( ) ; // localCache
37+ } )
38+ . catch ( ( error ) => { return { error } ; } ) ; // TODO: Add more detailed error handling. - statusCode etc.
39+ }
40+
41+ exports . download = function ( id ) {
42+ return downloadByID ( id , storage . bucket ( config . bucket_name ) ) ;
43+ } ;
44+
45+
46+ /**
47+ * Returns a Signed URL to access the uploaded file
48+ * TODO: set expiry date to match the bucket's expiry rules for files
49+ */
50+ function getURL ( fileName , bucket ) {
51+ let file = bucket . file ( fileName ) ;
52+ file . getSignedUrl ( { action :'read' , expires :'01-01-2020' } , function ( err , url ) {
53+ if ( err ) {
54+ console . error ( err ) ;
55+ return ;
56+ }
57+ return url ;
58+ } ) ;
59+ }
60+
61+
62+
63+ exports . get = function ( fileName ) {
64+ return getURL ( fileName , storage . bucket ( config . bucket_name ) ) ;
65+ } ;
0 commit comments