file-management
Library for easy file storage and management supporting upload, downloads and deletes
Description
It relies on an abstract concept of provider to do the work needed. The only concrete implementation, for now, is that of the S3 provider
Tests
TO run integration tests (test/integration dir) you must provide 'AWS_ACCESS_KEY_ID', AWS_SECRET_ACCESS_KEY and AWS_REGION env vars
Examples (S3):
Upload (uploads a file to storage)
const fileManagement = require('file-management');
const fs = require('fs');
const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci';
const manager = fileManagement.create('S3', {
auth: {
AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
AWS_REGION: process.env.AWS_REGION,
},
options: {}
});
const stream = fs.createReadStream('<path to your file>');
return manager
.uploadFile(testLocation, testFileName, stream)
.then((result) => {
console.log (result);
})
.catch(console.error);
Run cloudfront invalidation
const fileManagement = require('file-management');
const manager = fileManagement.create('S3', {
auth: {
AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
AWS_REGION: process.env.AWS_REGION,
},
options: {}
});
const invalidationPaths = ['/css/*', '/img/*'];
const distributionId = '123ABC456EFG' || process.env.CLOUDFRONT_DISTRIBUTION_ID;
manager.invalidate(invalidationPaths, distributionId)
.then((result) => {
console.log(result);
});
Download (Downloads a file from storage)
const fileManagement = require('file-management');
const fs = require('fs');
const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci';
const manager = fileManagement.create('S3', {
auth: {
AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
AWS_REGION: process.env.AWS_REGION,
},
options: {}
});
const stream = fs.createWriteStream(testFileName);
return manager
.downloadFile(testLocation, testFileName, stream)
.then(() => {
if (!fs.existsSync(testFileName)) {
throw new Error('File does not exist');
} else {
fs.unlinkSync(testFileName);
}
});
Delete (deletes a file on storage)
const fileManagement = require('file-management');
const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci';
const manager = fileManagement.create('S3', {
auth: {
AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY,
AWS_REGION: process.env.AWS_REGION,
},
options: {}
});
manager
.deleteFile(testLocation, testFileName)
.then(() => {
console.log('File deleted!');
})
.catch(console.error);