file-management
v1.1.0
Published
A simple lib to support file operations across projects
Downloads
5
Readme
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 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);
Run cloudfront invalidation
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);
});
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'; // 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);
}
});
Delete (deletes a file on storage)
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);