cuddle v1.3.4
Cuddle
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();
5 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago