https://github.com/dial-once/node-file-management
Simple file management via a provider like S3
https://github.com/dial-once/node-file-management
amazon dial-once extensible file-deletion file-download file-management file-upload multi-provider s3 s3-storage simple streaming-data streams
Last synced: about 2 months ago
JSON representation
Simple file management via a provider like S3
- Host: GitHub
- URL: https://github.com/dial-once/node-file-management
- Owner: dial-once
- License: mit
- Created: 2017-07-19T09:21:17.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-11-20T17:34:04.000Z (over 6 years ago)
- Last Synced: 2024-04-29T10:22:53.170Z (about 1 year ago)
- Topics: amazon, dial-once, extensible, file-deletion, file-download, file-management, file-upload, multi-provider, s3, s3-storage, simple, streaming-data, streams
- Language: JavaScript
- Size: 54.7 KB
- Stars: 4
- Watchers: 9
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# file-management
[](http://sonar.dialonce.net/dashboard?id=file-management)
[](http://sonar.dialonce.net/dashboard?id=file-management)
[](http://sonar.dialonce.net/dashboard?id=file-management)
[](http://proxy.dialonce.net/sonar/api/badges/measure?key=file-management&metric=coverage)
[](http://sonar.dialonce.net/dashboard?id=file-management)
[](http://sonar.dialonce.net/dashboard?id=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)
```js
const fileManagement = require('file-management');
const fs = require('fs');const testFileName = '';
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('');
return manager
.uploadFile(testLocation, testFileName, stream)
.then((result) => {
console.log (result);
})
.catch(console.error);
```#### Run cloudfront invalidation
```js
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)
```js
const fileManagement = require('file-management');
const fs = require('fs');const testFileName = '';
const testLocation = 'dialonce-uploads/ci'; // S3 Bucketconst 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)
```js
const fileManagement = require('file-management');const testFileName = '';
const testLocation = 'dialonce-uploads/ci'; // S3 Bucketconst 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);
```