cuddle

1.3.4 • Public • Published

Cuddle

Build Status NPM version

Cuddle is a minimal, chainable, retryable and "readability first" node http client. It's built to use for calling third-party APIs. Just what you need.

npm i cuddle@latest -S

Use Cases

Important notes

  • Status code < 200 or >= 300 will be classifed as an error.
  • Request will not fire unless .then or .end is called

Simple

const cudl = require('cuddle');
 
cudl.post
    .to('http://localhost:8082/api/user/1')
    .set_header('Authorization', 'Token sampletoken')
    .send({
        username: 'rvnjl',
        sex: 'male'
    })
    .then((err, result) => {
 
        if (err) {
            //handle error
        }
 
        console.log(result);
    });

Promise:

const cudl = require('cuddle');
 
cudl.post
    .to('http://localhost:8082/api/user/1')
    .set_header('Authorization', 'Token sampletoken')
    .send({
        username: 'rvnjl',
        sex: 'male'
    })
    .promise()
    .then(success)
    .catch(fail);

Using with generators:

const cudl = require('cuddle');
const co = require('co');
 
function* foo () {
    let user = yield cudl.get
        .to('http://localhost:8082/api/user/1')
        .set_header('Authorization', 'Token sampletoken')
        .promise();
 
    console.log(user);
}
 
co(foo);

Throttling requests

// will only let 50 concurrent requests
cudl.throttle(50);

Easy scoping through args:

const cudl = require('cuddle');
 
function foo () {
    const users = [
        {id: 1, name: 'jeff'},
        {id: 2, name: 'jenny'},
        {id: 3, name: 'julius'}
    ];
 
    users.forEach(user => {
        cudl.get
            .to('http://localhost:8082/api/user/' + user.id)
            .args(user)
            //.max_retry(10)    // to set the number of retries
            //.debug()          // to log all
            //.logger(winston)  // to replace the logger (default is console)
            .then(bar);
    });
}
 
function bar (err, result, request, [user]) {
 
    if (err) {
        // cuddle will return a different error after reaching maximum retries
        if (err.code >= 500) {
            return request.retry();
        }
 
        console.error('Error with user ' + user.id + request);
        return;
    }
 
    user.more_info = result;
 
    // ...
}
 
foo();

Package Sidebar

Install

npm i cuddle

Weekly Downloads

86

Version

1.3.4

License

MIT

Unpacked Size

18.6 kB

Total Files

5

Last publish

Collaborators

  • freedom_sherwin
  • anytv_npmjs
  • cirdec