racker

Robust Rackspace cloudfiles client

npm install racker
14 downloads in the last month

Racker

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 (err, res) {});

Features

  • Container / Object metadatas.
  • Uploading streams / localfiles / buffers
  • Upload progress support.
  • Elegant API
  • Authenticates automagically.

Installation

$ npm install racker

Getting started

Authentication

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.

Creating a container
racker
  .create('my images')
  .set('X-Container-Meta-Type', 'png')
  .end(function (err, res) {});
Updating a container
racker
  .update('my images')
  .set('X-Container-Meta-Type', 'png, jpg')
  .end(function (err, res) {});
Uploading a file

Local file.

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

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) {});
Deleting a file
racker
  .del('cats container', 'cat.png')
  .end(function (err, res) {});
Deleting a container
racker
  .del('cats container')
  .end(function (err, res){});
Listing stuff

Note that the list is always defaulted to json and will be parsed for you by superagent, the length of the list is defaulted to 50 you can change those with .query() parameters

// containers
racker
  .list(function (err, res) {
    res.body;
    // > an array of containers.
  });

// objects from a container
racker
  .list('my images')
  .end(function (err, res){
    res.body;
    // > an array of objects
  });

// listing more than 50 at once
racker
  .list('my images')
  .query('limit=500')
  .end(function (err, res){
    res.body;
    // > an array of 500 objects.
  });

Running Tests

To run the test suite create a test/auth.json:

{
  "user": "<username>",
  "host": "<host-either-us-or-uk>",
  "test": "<container-name>",
  "key": "<access-key>"
}

Then run:

$ npm install
$ make test

that's it.

Contributing

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

todos

  • 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..

License

MIT

npm loves you