quander-node-sdk

1.0.13 • Public • Published

QUANDER NODE SDK

Installation

npm install quander-node-sdk

Usage

To write an app using the SDK

  • Register for a developer account and get your client_id and secret.
  • Add dependency 'quander-node-sdk' in your package.json file.
  • Require 'quander-node-sdk' in your file
var Quander = require('quander-node-sdk').Quander;
  • Create config options, with parameters (mode, client_id, secret).
var quander = new Quander({
  baseUrl: 'http://dev.quander.io/api',
  tokenUrl: 'http://dev.quander.io',
  clientId: '1a1t2u7b9540ggkk8s0gc4wcwcwwow40k4osw40cwo44swcoo0',
  clientSecret: '1a1t2u7b9540ggkk8s0gc4wcwcwwow40k4osw40cwo44swcoo0'
});
  • Login with username/password
quander.login(req.body.username, req.body.password).then((accessToken) => {
});
  • If you already have your access token
quander.setAccessToken(user);

How to use the resources

  • Accessing your resources
var accountManager = quander.createResource('accounts');
var projectManager = quander.createResource('projects', {account: account});
  • getList operation
accountManager.getList().then(function (accounts) {
  res.send(accounts instanceof ResourceCollection); // true
  res.send(accounts);
});
 
// Using Pagination
accountManager.getList({limit: 2, page: 1}).then(function (accounts) {
  res.send(accounts instanceof ResourceCollection); // true  
  res.send(accounts);
});
 
// Example of return for getList operation (ResourceCollection object):
//{
//  "data": [
//    {
//      "id": 115,
//      ...
//    },
//    {
//      "id": 34,
//      ...
//    }
//  ],
//  "page": 1,
//  "limit": 100,
//  "pages": 1,
//  "total": 2
//}
 
  • get operation ".get(uuid)"
accountManager.get('ccfb1d41-7c0b-4cb1-8836-606f0d8d5511').then(function (account) {
  res.send(account);
});
  • post operation ".post(payload, data)"
mediaManager.post({
  posterurl: 'https://www.google.com/logos/doodles/2015/new-years-eve-2015-5985438795825152-hp2x.gif',
  url: 'https://www.google.com/logos/doodles/2015/new-years-eve-2015-5985438795825152-hp2x.gif',
  type: 'image',
  referenceId: 'REFEREFEFEFEF',
  metadata: ''
}).then((media) =>{
  res.send(media);
});
 
// Post multipart/form-data with the payload and files
mediaManager.post({
  type: 'image',
  referenceId: 'REFEREFEFEFEF',
  metadata: ''
}, {
  media: fs.createReadStream('/..../test.gif'),
  poster: fs.createReadStream('/....p/test.gif')
}).then((media) =>{
  res.send(media);
});

Available Resources and Operations

  • Account => getList, get, post
  • Project(account) => getList
  • Experience(project) => getList
  • Media(project) => getList
  • Media(attendee) => getList
  • Media(experience) => post
  • Attendee(project) => post

Handling Error

There are 2 types of error, one coming from the sdk (QuanderSdkError), and the other one from the api responses (QuanderApiError).

accountManager.getList().then(function (accounts) {
  res.send(accounts);
}).catch((error) => {
  res.send(error instanceof Error);
  // return true
  
  res.send(error instanceof QuanderApiError);
  // return true
});
  • Example: Handling expired token
try {
  quander.setAccessToken(token);
} catch (e) {
  if (instanceof QuanderSdkError && QuanderSdkError.TOKEN_EXPIRED === e.errorCode) {
    // Call the api to request the new access token
    return quander.getRefreshedToken(token).then((token) => {
      quander.setAccessToken(token);
    }).catch((e) => {
      // Refresh token also expired or not valid
      if (instanceof QuanderApiError && QuanderApiError.REFRESH_TOKEN_INVALID === e.errorCode) {
        res.redirect('/login');
      }
    });
  }
}

Available Errors

  • QuanderSdkError
Key Description
BAD_RESOURCE Resource not supported by the sdk
BAD_OPERATION Operation not supported by the sdk
TOKEN_EXPIRED Token is expired, you should request a new one through the api
  • QuanderApiError
Key Description
INVALID_GRANT You can't authenticate with that method
REFRESH_TOKEN_INVALID Your refresh token is invalid, you have to authenticate again
BAD_REQUEST General error. The server cannot or will not process the request.
FORBIDDEN The request was a valid request, but the server is refusing to respond to it.
NOT_FOUND Resource could not be found but may be available in the future.
CONFLICT Indicates that the request could not be processed because of conflict in the request.

Debugging

  • Enable debug
Quander.enableDebug();

Readme

Keywords

Package Sidebar

Install

npm i quander-node-sdk

Weekly Downloads

0

Version

1.0.13

License

ISC

Last publish

Collaborators

  • gavinwilliams