racker
v0.0.1-alpha3
Published
Robust Rackspace cloudfiles client
Downloads
5
Readme
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