racker

Robust Rackspace cloudfiles client

Elegant Rackspace cloudfiles client.

var racker = require('racker');
 
racker
  .set('user', 'foo')
  .set('key', '...')
  .upload(__dirname + '/Makefile')
  .to('make files')
  .as('makefile')
  .on('progress', console.log.bind(console))
  .end(function (errres) {});
 
// progress has two properties 
// .total and .percent 
  • Container / Object metadatas.
  • Uploading streams / localfiles / buffers
  • Upload progress support.
  • Elegant API
  • Authenticates automagically.
$ npm install racker

Racker authenticates automatically once you attempt to issue a request, it will also re authenticate automatically if the token has expired.

So you just need to set your credentials and you'r ready to issue requests.

var racker = require('racker');
 
racker
  .set('user', 'username')
  .set('key', '...')
  .set('host', 'us'); // defaulted to us

That's it this Racker instance will now wait until you attempt to issue a request.

racker
  .create('my images')
  .set('X-Container-Meta-Type', 'png')
  .end(function (errres) {});
racker
  .update('my images')
  .set('X-Container-Meta-Type', 'png, jpg')
  .end(function (errres) {});

Local file.

racker
  .upload('cat.png')
  .to('my images')
  .as('lion.png')
  .end(function (errres) {});

Stream.

racker
  .upload(fs.createReadStream('cat.png'))
  .to('my images')
  .as('lion.png')
  .end(function (err, res) {});

Buffer.

racker
  .upload(new Buffer('mew'))
  .to('my images')
  .as('roar')
  .end(function (err, res) {});

Create a test/creds.json it should look like this:

{
  "user": "your username",
  "host": "either `us` or `uk` or the full host (defaulted to `us`)",
  "test": "a container name you want the tests to run on",
  "key": "access key"
}

Then run:

$ make test

that's it.

I accept pull requests this library is not yet full featured, i have several features i plan on implementing see todos below.

  • List container objects.
  • List all containers.
  • Tests on updating object metadata.
  • implement request.meta() to set object / container metas.
  • implement response.meta() to get object / container metas.
  • implement large object uploads.
  • Test wether or not re-authentication works..

MIT