Library for easy file storage and management supporting upload, downloads and deletes
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
TO run integration tests (test/integration dir) you must provide 'AWS_ACCESS_KEY_ID', AWS_SECRET_ACCESS_KEY and AWS_REGION env vars
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 creds need to be provided
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,
},
// s3 options as needed
options: {}
});
const stream = fs.createReadStream('<path to your file>');
return manager
.uploadFile(testLocation, testFileName, stream)
.then((result) => {
console.log (result);
})
.catch(console.error);
const fileManagement = require('file-management');
const manager = fileManagement.create('S3', {
auth: {
// AWS creds need to be provided
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,
},
// s3 options as needed
options: {}
});
const invalidationPaths = ['/css/*', '/img/*']; // ['/*'] by default
const distributionId = '123ABC456EFG' || process.env.CLOUDFRONT_DISTRIBUTION_ID;
manager.invalidate(invalidationPaths, distributionId)
.then((result) => {
console.log(result);
});
const fileManagement = require('file-management');
const fs = require('fs');
const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci'; // S3 Bucket
const manager = fileManagement.create('S3', {
auth: {
// AWS creds need to be provided
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,
},
// s3 options as needed
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 {
// all ok, file downloaded, delete it
fs.unlinkSync(testFileName);
}
});
const fileManagement = require('file-management');
const testFileName = '<your file name>';
const testLocation = 'dialonce-uploads/ci'; // S3 Bucket
const manager = fileManagement.create('S3', {
auth: {
// AWS creds need to be provided
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,
},
// s3 options as needed
options: {}
});
manager
.deleteFile(testLocation, testFileName)
.then(() => {
console.log('File deleted!');
})
.catch(console.error);