baozdemir / do-aws-uploader

Digital Ocean and Amazon Web Services uploader with aws-sdk

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 install

Test

Rename secret.example.json to secret.json with valid credentials and bucket-name. Then, run test via ;

$ npm run test

Requirements

  • 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

  • source should be string (file path) or readable stream.

  • s3RemotePath s3 path.

  • options are 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"});

About

Digital Ocean and Amazon Web Services uploader with aws-sdk


Languages

Language:JavaScript 100.0%