zdc-client

1.2.0 • Public • Published

zdc-client

CircleCI

Generate namespaced http client based on schema definition using Bearer token authentication protocol or Basic authentication protocol.

install

npm install --save zdc-client

usage

const factory = require('zdc-client').bearer;
const schema={
    list:{
        method:'get', // the HTTP verb
        path:'/', //the path
        query:['page','size'] // a list of authorized query parameters
    },
    self:{
        method:'get',
        path:'/:userId'//a mandatory query parameters,
 
    },
    create:{
        method:'post',
        path:'/',
        body:['email','username'] // list of allowed parameters
    }
};
 
const users = factory({
    schema,
    namespace:'users',
    endpoint:{
        protocol:'https',
        host:'api.zdc.com'
    });
 
users({token:'foobar'})
    .list({page:4}) // GET https://api.zdc.com/users/?page=4 Authorization: Bearer foobar
    .then(result => {})
    .catch(e=>{});
 
users({token:'whatever')
    .self({userId:666) // GET https://api.zdc.com/users/666 Authorization: Bearer whatever
    .then(user=>{})
 
users({token:'foobar')
    .create({email:'foo@bar.com',username:'oufGuedin'}) // POST https://api.zdc.com/users/ Authorization: Bearer foobar, body : {email:'foo@bar.com', username:'oufGuedin'}
    .then(user=>{})
 
 
//OR
 
const basic = require('zdc-client').basic;
 
const users = basic({/* .. options */);
 
users({username:'foo',password:'bar'})
    .list()
    .then(users=>{});

Note: factories created are composable using stampit

const bearer = require('zdc-client').bearer;
const users = bearer({schema:{},namespace:'users'});
 
const extendUsers  = users.compose(/* some other stamp */);

Readme

Keywords

Package Sidebar

Install

npm i zdc-client

Weekly Downloads

0

Version

1.2.0

License

MIT

Last publish

Collaborators

  • lorenzofox3