moog-graze
Version:
Interact with MOOG.AIOps via Graze (REST)
115 lines (95 loc) • 3.84 kB
JavaScript
/**
* Created by stephen on 16/05/2016.
*/
// Just to test out the auth endpoint and a promise with retries
//
var https = require('https');
var util = require('util');
var graze = require('../lib/moog-graze.js')({hostname: 'moogtest', port: 0});
var connectionObject = {};
connectionObject.authUser = 'graze';
connectionObject.authPass = 'graze';
connectionObject.authRetry = 3;
connectionObject.authURI = 'https://moogtest/graze/v1/authenticate';
var retryCount = 0;
authenticate().then(function(response) {
console.log("Top level Success!", response);
// put test calls here
graze.getAlertDetails(2, function (err, data) {
console.log('Return data from getAlertDetails '+util.inspect(data));
console.log('Return error from getAlertDetails '+util.inspect(err));
});
// end of test calls
}, function(error) {
console.error("Top level Failed!", error);
});
function authenticate() {
return new Promise(function(resolve, reject) {
var grazeUser="graze";
var grazePass="graze";
var grazeBasePath="/graze/v1";
var grazeAuthPath=grazeBasePath+"/authenticate?username="+grazeUser+"&password="+grazePass;
var grazeLoginHeaders = {
'Accept' : 'application/json',
'Content-Type' : 'application/json'
};
var grazeLoginOpts = {
host : "moogtest",
//port : 0,
path : grazeAuthPath,
method : 'GET',
headers : grazeLoginHeaders,
rejectUnauthorized : false
};
// We use an agent so we can add a proxy if needed
//
grazeLoginOpts.agent = new https.Agent(grazeLoginOpts);
var req = https.request(grazeLoginOpts, (res) => {
var tokenData={};
var loginToken;
var returnString="";
console.log('statusCode: ', res.statusCode);
//console.log('headers: ', res.headers);
res.on('data', function(d) {
returnString += d;
});
res.on('end', function() {
try { tokenData=JSON.parse(returnString.toString('utf8')); }
catch(e) {
console.log("Failed to parse login token string: " + e);
reject(e);
}
if ( tokenData.auth_token ) {
loginToken=tokenData.auth_token;
console.log("Received a graze login token " + res.statusCode+': '+res.statusMessage +': '+loginToken);
resolve(loginToken);
}
else if ( tokenData.message ) {
console.log("Did not receive a login token from graze, error : " + tokenData.message);
reject(res.statusCode+': '+res.statusMessage +': '+tokenData.message);
}
else {
console.log("Failed to get a graze login token"+res.statusCode+': '+res.statusMessage +': ');
reject('Failed to get token');
}
});
});
req.on('error', function(err) {
console.log("Connection to graze failed: " + err);
if (retryCount < connectionObject.authRetry) {
console.log("Retry "+retryCount++ +' of '+connectionObject.authRetry);
authenticate().then(function(response) {
console.log("Success!", response);
resolve(response);
}, function(error) {
console.error("Failed!", error);
reject(error);
});
} else {
console.log('Retry count exceded');
reject('Retry limit exceded ' +err);
}
});
req.end();
});
}