Sample Code to Update Access Token - CassiaNetworks/CassiaSDKGuide GitHub Wiki

const request = require('superagent');

const requestTimeout = 5000;
const refreshCycle = 30 * 60;

// ac configuration
const acConf = {
  host: 'http://192.168.0.226',
  developer: 'cassia',
  secret: 'cassia'
};

let token = null;

const apiRouters = {
  TOKEN: `${acConf.host}/api/oauth2/token`,
  APS_STATUS: `${acConf.host}/api/cassia/hubs`,
};

// get auth header
function _getAuthHeader() {
  let auth = `${acConf.developer}:${acConf.secret}`;
  auth = new Buffer(auth).toString('base64');
  return {Authorization: `Basic ${auth}`};
}

// get token header
function _getTokenHeader() {
  return  {Authorization : `Bearer ${token}`};
}

// get token
function _apiGetAcToken(callback) {
  request.post(apiRouters.TOKEN)
    .timeout(requestTimeout) // time out
    .retry(3) // try 3 times
    .set(_getAuthHeader())
    .send({grant_type: 'client_credentials'})
    .end(function(err, res) {
      return callback(err, res.body.access_token);
    });
}

// get token in every 30 minutes
setInterval(function() {
  _apiGetAcToken(function(err, ret) {
    if (err) return console.log(err);
    token = ret;
  })
}, refreshCycle * 1000);


// get the status of all router
function apiGetApsStatus(callback) {
  return request.get(apiRouters.APS_STATUS)
    .timeout(requestTimeout)
    .set(_getTokenHeader())
    .end(function(err, res) {
      return callback(err, res.body);
    });
}

// example
_apiGetAcToken(function(err, ret) {
  if (err) return console.log(err);
  token = ret;
  apiGetApsStatus(function(err, res) {
    console.log(err, res);
  });
})