This commit is contained in:
Adam Ierymenko 2015-05-16 16:32:13 -07:00
parent c9fd8de007
commit cf51961d52
5 changed files with 87 additions and 80 deletions

View File

@ -1,64 +0,0 @@
'use strict'
var request = require('request');
function ZT1ControllerClient(url,authToken)
{
this.url = url;
this.authToken = authToken;
}
ZT1ControllerClient.prototype.status = function(callback)
{
request({
url: this.url + 'controller',
method: 'GET',
headers: {
'X-ZT1-Auth': this.authToken
}
},function(error,response,body) {
if (error)
return callback(error,{});
if (response.statusCode !== 200)
return callback(new Error('server responded with '+response.statusCode),{});
var controllerStatus = JSON.parse(body);
if (controllerStatus.controller === true) {
request({
url: this.url + 'status',
method: 'GET',
headers: {
'X-ZT1-Auth': this.authToken
}
},function(error,response,body) {
if (error)
return callback(error,{});
if (response.statusCode !== 200)
return callback(new Error('server responded with '+response.statusCode),{});
var nodeStatus = JSON.parse(body);
for(var k in controllerStatus)
nodeStatus[k] = controllerStatus[k];
return callback(null,nodeStatus);
}.bind(this));
} else return callback(new Error('No "controller==true" test value present.'),{});
}.bind(this));
};
ZT1ControllerClient.prototype.listNetworks = function(callback)
{
request({
url: this.url + 'controller/network',
method: 'GET',
headers: {
'X-ZT1-Auth': this.authToken
}
},function(error,response,body) {
if (error)
return callback(error,{});
if (response.statusCode !== 200)
return callback(new Error('server responded with '+response.statusCode),{});
var r = JSON.parse(body);
return callback(null,Array.isArray(r) ? r : []);
});
};
exports.ZT1ControllerClient = ZT1ControllerClient;

View File

@ -1,14 +0,0 @@
var ZT1ControllerClient = require('./index.js').ZT1ControllerClient;
var zt1c = new ZT1ControllerClient('http://127.0.0.1:9993/','5d6181b71fae2684f9cc64ed');
zt1c.status(function(err,status) {
if (err)
console.log(err);
console.log(status);
zt1c.listNetworks(function(err,networks) {
if (err)
console.log(err);
console.log(networks);
});
});

View File

@ -0,0 +1,71 @@
'use strict'
var request = require('request');
function ZT1Client(url,authToken)
{
this.url = url;
this.authToken = authToken;
}
ZT1Client.prototype._jsonGet = function(getPath,callback)
{
request({
url: this.url + getPath,
method: 'GET',
headers: {
'X-ZT1-Auth': this.authToken
}
},function(error,response,body) {
if (error)
return callback(error,{});
if (response.statusCode !== 200)
return callback(new Error('server responded with '+response.statusCode),{});
return callback(null,(typeof body === 'string') ? JSON.parse(body) : null);
});
};
ZT1Client.prototype.status = function(callback)
{
request({
url: this.url + 'controller',
method: 'GET',
headers: {
'X-ZT1-Auth': this.authToken
}
},function(error,response,body) {
if (error)
return callback(error,{});
var controllerStatus = {};
if (typeof body === 'string')
controllerStatus = JSON.parse(body);
request({
url: this.url + 'status',
method: 'GET',
headers: {
'X-ZT1-Auth': this.authToken
}
},function(error,response,body) {
if (error)
return callback(error,{});
if (response.statusCode !== 200)
return callback(new Error('server responded with '+response.statusCode),{});
var nodeStatus = JSON.parse(body);
for(var k in controllerStatus)
nodeStatus[k] = controllerStatus[k];
return callback(null,nodeStatus);
}.bind(this));
}.bind(this));
};
ZT1Client.prototype.networks = function(callback)
{
this._jsonGet('network',callback);
};
ZT1Client.prototype.controllerNetworks = function(callback)
{
this._jsonGet('controller/network',callback);
};
exports.ZT1Client = ZT1Client;

View File

@ -1,7 +1,7 @@
{
"name": "zt1-controller-client",
"name": "nodejs-zt1-client",
"version": "1.0.0",
"description": "ZeroTier One network controller client for NodeJS",
"description": "ZeroTier One Network Virtualization Service JSON API Client",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"

View File

@ -0,0 +1,14 @@
var ZT1Client = require('./index.js').ZT1Client;
var zt1c = new ZT1Client('http://127.0.0.1:9993/','5d6181b71fae2684f9cc64ed');
zt1c.status(function(err,status) {
if (err)
console.log(err);
console.log(status);
zt1c.networks(function(err,networks) {
if (err)
console.log(err);
console.log(networks);
});
});