UNPKG

@aarconada/urserver

Version:

Basic Server definitions to develope REST API with a node + express Server

99 lines (95 loc) 4.31 kB
/** * Created by ubuntu on 25/10/18. */ 'use strict'; const _ = require('lodash'); const server = require('./server')(); const Promise = require('bluebird'); const {Storage} = require('@google-cloud/storage'); module.exports.saveFile = function(fileName, fileBuffer, fileContentType) { return new Promise(function(success, reject) { if (server.configuration.google.storage.enabled) { try { const storage = new Storage(server.configuration.google.storage.configuration); const bucket = storage.bucket(server.configuration.google.storage.storageBucket); const fileUpload = bucket.file(fileName); const fileUploadStream = fileUpload.createWriteStream({ metadata: { contentType: fileContentType } }); fileUploadStream.on('error', (err) => { server.debug('Cloud Storage Error:', err); reject(server.defaultResponses.google_cloud_storage_error); }); fileUploadStream.on('finish', () => { server.debug('Cloud Storage Finished'); return fileUpload.makePublic().then(() => { success('gs://' + server.configuration.google.storage.storageBucket + '/' + fileName); }); }); fileUploadStream.end(fileBuffer); } catch(err) { server.debug('Cloud Storage Error:', err); reject(server.defaultResponses.google_cloud_storage_error); } } else { reject(server.defaultResponses.google_cloud_storage_not_configured); } }); }; module.exports.deleteFile = function(fileName) { return new Promise(function(success, reject) { if (server.configuration.google.storage.enabled) { try { const storage = new Storage(server.configuration.google.storage.configuration); const bucket = storage.bucket(server.configuration.google.storage.storageBucket); const fileToDelete = bucket.file(fileName); server.debug('File to Delete', fileToDelete && fileToDelete !== null); if(fileToDelete !== null) { fileToDelete .delete((err, res) => { if (err) { server.debug('Cloud Storage Error'); reject(server.defaultResponses.google_cloud_storage_error) } else { success(res); } }); } else { success({}); } } catch(err) { server.debug('Cloud Storage Error'); reject(server.defaultResponses.google_cloud_storage_error); } } else { reject(server.defaultResponses.google_cloud_storage_not_configured); } }); }; module.exports.downloadFile = function(fileName) { return new Promise(function(success, reject) { if (server.configuration.google.storage.enabled) { try { const storage = new Storage(server.configuration.google.storage.configuration); const bucket = storage.bucket(server.configuration.google.storage.storageBucket); const fileDownload = bucket.file(fileName); const fileDownloadStream = fileDownload .download((err, res) => { if(err) { server.debug('Cloud Storage Error:', err); reject(server.defaultResponses.google_cloud_storage_error) } else { success(res); } }); } catch(err) { server.debug('Cloud Storage Error:', err); reject(server.defaultResponses.google_cloud_storage_error); } } else { reject(server.defaultResponses.google_cloud_storage_not_configured); } }); };