/backblaze-b2

Node.js Library for the Backblaze B2 Storage Service

Primary LanguageJavaScriptMIT LicenseMIT

Backblaze B2 Node.js Library

npm version Build Status

This library uses promises, so all actions on a B2 instance return a promise in the following pattern

b2.instanceFunction(arg1, arg2).then(
    successFn(response) { ... },
    errorFn(err) { ... } 
);

Status of project

All B2 API's have been implemented with the exception of the large file API. See below for usage.

Also see the CHANGELOG for a history of updates.

Contributing and Suggestions for Changes and Fixes

Contributions and questions are welcome. If you are looking for something to help with, please have a look at the ISSUES or add an issue if there is something you would like to see or fix.

Make sure you use the .editorconfig in your IDE/editor when writing code.

Pull Requests should include:

  • Updated example in README.md
  • Update exiting tests, or add new tests to cover code changes

If you are adding tests, add these to /test/unit. Make sure the test is named fooTest.js and is located in a similar folder to the node module that is being tested.

Always run npm test before you commit.

Usage

var B2 = require('backblaze-b2');

// All functions on the b2 instance return the response from the B2 API in the success callback
// i.e. b2.foo(...).then(function(b2JsonResponse) {})

// create b2 object instance
var b2 = new B2({
    accountId: 'accountId',
    applicationKey: 'applicationKey'
});

// authorize with provided credentials
b2.authorize();  // returns promise

// create bucket
b2.createBucket(bucketName, bucketType);  // returns promise

// delete bucket
b2.deleteBucket(bucketId);  // returns promise

// list buckets
b2.listBuckets();  // returns promise

// update bucket2
b2.updateBucket(bucketId, bucketType);  // returns promise

// get upload url
b2.getUploadUrl(bucketId);  // returns promise

// upload file
b2.uploadFile({
    uploadUrl: 'uploadUrl',
    uploadAuthToken: 'uploadAuthToken',
    filename: 'filename',
    mime: '', // optonal mime type, will default to 'b2/x-auto' if not provided
    data: 'data' // this is expecting a Buffer not an encoded string,
    info: { 
        // optional info headers, prepended with X-Bz-Info- when sent, throws error if more than 10 keys set
        // valid characters should be a-z, A-Z and '-', all other characters will cause an error to be thrown
        key1: value
        key2: value
    }
});  // returns promise
    
// list file names
b2.listFileNames({
    bucketId: 'bucketId',
    startFileName: 'startFileName',
    maxFileCount: 100
});  // returns promise
        
// list file versions
b2.listFileVersions({
    bucketId: 'bucketId',
    startFileName: 'startFileName',
    maxFileCount: 100
});  // returns promise
        
// hide file
b2.hideFile({
    bucketId: 'bucketId',
    fileName: 'fileName'
});  // returns promise
            
// get file info
b2.getFileInfo(fileId);  // returns promise

// download file by name
b2.downloadFileByName({
    bucketName: 'bucketName',
    fileName: 'fileName'
});  // returns promise
            
// download file by fileId
b2.downloadFileById(fileId);  // returns promise

// delete file version
b2.deleteFileVersion({
    fileId: 'fileId',
    fileName: 'fileName'
});  // returns promise