@aarconada/urserver
Version:
Basic Server definitions to develope REST API with a node + express Server
99 lines (95 loc) • 4.31 kB
JavaScript
/**
* Created by ubuntu on 25/10/18.
*/
;
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);
}
});
};