castor

2.0.3 • Public • Published

Content addressable storage - castor

An ES7 CAS designed file storage for nodejs with a simple API and robust implementation.

castor drawing

Build Status Coverage Status NPM version License Code style

API

const Storage = require('castor');
  // castor internal index file path
var store = new Storage('./some/path/index.json');

  // return an *index* to write and fetch file into
var index = store.getIndex('medias');

async Index.checkEntry(file_name, file_url, file_md5)

  // download, if needed, the requested file, store it in CAS and reference it into current index
  // file_url can be an url.parse'd object
await index.checkEntry("some/storage/path/file.mp4", "http://remoteurl.com/20320930293", "[CURRENT_MD5]");

Index.get(file_name)

// retrieve a file information from current index
index.get("some/storage/path/file.mp4") 
/* retrieve {
  file_size : (an integer),
  file_path : './some/path/00/1/[FULL_MD5]',
  file_md5 : '[FULL_MD5]',
 }
*/

Index.send(req, res, next)

// expose an http/express middleware to delivers content from an existing path
server.use(index.send.bind(index)) // (req, res, next)

Advanced usage

Storage.warmup

// move all existing (and non indexed files) files to CAS design
await store.warmup();

Index.reset()

//reset a local index file_path => hash mapping (no files are deleted at this time)
index.reset();

async Storage.purge()

//remove all unlinked file (files not referenced in any index) from storage folder
await storage.purge();

References

Credits

Readme

Keywords

Package Sidebar

Install

npm i castor

Weekly Downloads

7

Version

2.0.3

License

MIT

Unpacked Size

17 kB

Total Files

7

Last publish

Collaborators

  • 131
  • frodon