do-aws-forklift v1.0.1
aws-sdk based kinda high level s3 uploader for AWS and Digital Ocean. It wraps upload method of aws-sdk. For file upload, ContentType automatically added. Also, it can remove uploaded file from the file system, after upload completed successfully.
Install
$ npm installTest
Rename secret.example.json to secret.json with valid credentials and bucket-name. Then, run test via ;
$ npm run testRequirements
Node.js 6+
Initialize
const Forklift = require("/path/forklift");
// Initialize;
const forklift = new Forklift({
cloud: "<CLOUD_NAME>" // do or aws
accessKey: "<YOUR_ACCESS_KEY>",
secretKey: "<YOUR_SECRET_KEY>",
bucket: "<BUCKET_NAME>",
region: "<REGION>"
s3params: {ACL: "bucket-owner-read"} // optional, default: {ACL: "public-read"}
});Upload
sourceshould be string (file path) or readable stream.s3RemotePaths3 path.optionsare optional. Besides the all the options of original AWS upload, Digital Ocean upload you can pass{remove: true}to remove the source if the source is a file after upload completed successfully.
const url = await forklift.upload(source, s3RemotePath, /*options*/);
// region + bucket merged to get url as absolute
// like; https://s3.amazonaws.com/bucket_name/file_path
// like; https://digitaloceanspaces.com/bucket_name/file_path
What should I do with the version change?
- Format is should be ( Major . Minor . Fix ) (1.0.0)
- If the change is bug fix, Fix version should be increased (1.0.1)
- If changes is made in prerequisite, requires testing, requires changes to the test documentation, add new endpoint or edit existing endpoint Minor version should be increased (1.1.0)
If the usage is changed, added new features or big changes Major version should be increased (2.0.0)
Contribution guidelines
- Writing tests
- Code review
Other guidelines
Example
// To upload file
// ContentType automatically retrieved from file name and passed to S3.upload
// if you want to override it, you should pass {ContentType:"<CONTENT_TYPE>"} as options.
const url = await forklift.upload("test.jpg", "test/test.jpg");
// example for version 1.0.0
// To upload and then remove the file with callback
forklift.upload("test.jpg", "test/test.jpg", {remove: true}, (error, url) => {
});
// To upload a stream without ContentType
const url = await forklift.upload(fs.createReadStream("test.jpg"), "test/test.jpg");
// To upload a stream with ContentType
const url = await forklift.upload(fs.createReadStream("test.jpg"), "test/test.jpg", {ContentType:"image/jpeg"});