var cloud = 'wbc.weble.ch'
var proxyUsername = 'YOUR_CLOUD_USERNAME'
var proxyPassword = 'YOUR_CLOUD_PASSWORD'
var host = "HOST_ID"
var username = 'HOST_USERNAME'
var password = 'HOST_PASSWORD'
var access_token;
var https = require('https')
function request(options, callback){
var body = options.data
var finish = false
delete options.data
if(!options.headers){
options.headers = {}
}
if(typeof body == 'object'){
options.headers['Content-Type'] = 'application/json'
}
if(access_token){
options.headers['Authorization'] = 'Bearer '+access_token.access_token
}
function done(){
if(finish) return
finish = true
callback(...arguments)
}
var req = https.request({
...options,
}, res => {
var chunks = [];
res.on('data', data => chunks.push(data))
res.on('end', () => {
let resBody = Buffer.concat(chunks)+''
try{resBody = JSON.parse(resBody);} catch(e){}
callback(res.statusCode == 200 ? null : res.statusCode || new Error('request error'),resBody)
})
})
req.on('error',done);
if(typeof body == 'object'){
req.write(JSON.stringify(body))
}
else if(body){
req.write(body);
}
req.end();
}
function getToken(username,password,callback){
request({
host : cloud,
path : '/api/token',
method : 'POST',
data : {
username : username,
password : password
}
}, function(err, result){
if(err) callback(err)
access_token = result
callback(null,access_token)
})
}
function getGatewayToken(host, username, password, callback){
request({
host : cloud,
path : '/api/hosts/'+host+'/api/auth',
method : 'POST',
data : {
username : username,
password : password
}
}, function(err, result){
if(err) return callback(err)
callback(null, result.sessionId)
})
};
function gatewayRequest(host, token, options, callback){
options.path = '/api/hosts/'+host+'/api'+options.path
request(Object.assign({
host : cloud,
headers : {
'Cookie' : 'WBLSUPSID='+token
}
}, options || {}), callback)
}
getToken(proxyUsername,proxyPassword , function(err){
if(err) throw "Unable to get token "+err
console.log('login on the cloud success')
console.log('Getting token access for',host,'...')
getGatewayToken(host,username,password,function(err, token){
if(err) throw "Unable to get device token "+err
console.log('Token receive from gateway',token)
gatewayRequest(host, token, {
method : 'GET',
path : '/supervision/gateways/getGateways'
}, function(){
console.error(arguments)
})
})
})```