dialog-router-api
Version:
A wrapper to connect with and query the API on the Huawei 4G routers provided by Dialog Axiata
110 lines (95 loc) • 3.45 kB
JavaScript
var utilities = require('./utilities');
var url = require('url-join');
require('default');
function HuaweiRouter(options) {
this.options = {
gateway: process.env.HUAWEI_GW_IP || '192.168.8.1'
};
this.options = this.options.default(options);
}
var API = HuaweiRouter.prototype;
module.exports = HuaweiRouter;
module.exports.create = create;
API.getMonthStatistics = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/monitoring/month_statistics');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.getSignal = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/device/signal');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.getStatus = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/monitoring/status');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.getTrafficStatistics = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/monitoring/traffic-statistics');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.getBasicSettings = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/wlan/basic-settings');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.getCurrentPLMN = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/net/current-plmn');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.getToken = function(callback) {
var uri = url('http://', this.options.gateway, '/api/webserver/SesTokInfo');
utilities.contactRouter(uri, {}, null, function(error, response) {
callback(error, {
cookies: response.SesInfo[0],
token: response.TokInfo[0]
});
});
};
API.getLedStatus = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/led/circle-switch');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.setLedOn = function(token, value, callback) {
var uri = url('http://', this.options.gateway, '/api/led/circle-switch');
var body = {
ledSwitch: value ? 1 : 0
};
body = `<?xml version:"1.0" encoding="UTF-8"?><request><ledSwitch>${value?'1':'0'}</ledSwitch></request>`
utilities.contactRouter(uri, token, body, function(error, response) {
callback(error, response);
});
};
API.isLoggedIn = function(token, callback) {
var uri = url('http://', this.options.gateway, '/api/user/state-login');
utilities.contactRouter(uri, token, null, function(error, response) {
callback(error, response);
});
};
API.login = function(token, username, password, callback) {
var uri = url('http://', this.options.gateway, '/api/user/login');
var body = {
Username: username,
password_type: 4,
Password: utilities.SHA256andBase64(
username + utilities.SHA256andBase64(password) + token.token
)
};
utilities.contactRouter(uri, token, body, function(error, response) {
callback(error, response);
});
}
function create(options) {
return new HuaweiRouter(options);
}