/* exported Script */
/* globals Store */
class Script {
prepare_outgoing_request({ request }) {
let match;
match = request.data.text.match(/^ns servers\s(ls|list)\s*(.*)?$/);
if (match) {
let u = request.url + 'servers?perpage=99&token='+request.data.token;
return {
url: u,
headers: request.headers,
method: 'GET'
};
}
match = request.data.text.match(/^ns graphs\s(.*)?$/);
if (match) {
var matched = false;
var options;
var serverrequest = HTTP('GET', request.url + 'servers?perpage=99&token='+request.data.token, options);
var serverlist = []
JSON.parse(serverrequest.result.content).servers.forEach(function(pr) {
serverlist.push({'name': pr.name, 'id': pr.id});
});
serverlist.forEach(function(serv) {
if(serv.id == match[1])
{
matched = serv.id;
}
if(serv.name == match[1])
{
matched = serv.id;
}
});
if(!matched){
return {
message: {
text: 'Server not found.'
}
};
}
else
{
let u = request.url + 'server/'+matched+'?charts=yes&token='+request.data.token;
return {
url: u,
headers: request.headers,
method: 'GET'
};
}
}
match = request.data.text.match(/^help$/);
if (match) {
return {
message: {
text: [
'**Nixstats commands**',
'```',
' ns servers ls|list',
' ns graphs serverid|servername',
'```'
].join('\n')
}
};
}
}
process_outgoing_response({ request, response }) {
var text = [];
var attach = [];
if(response.content.charts)
{
response.content.charts.forEach(function(pr) {
attach.push({
"color": "#000000",
"text": pr.title+" on "+response.content.name,
"image_url": pr.url,
});
});
text.push('Performance of '+response.content.name);
}
else
{
text.push('```');
response.content.servers.forEach(function(pr) {
text.push(''+pr.id+"\t "+pr.last_data.load.replace(",",",\t")+"\t"+pr.name+'');
});
text.push('```');
}
return {
content: {
text: text.join('\n'),
attachments: attach,
parseUrls: false
}
};
}
}