@idiamantino/livepro-utils
Version:
Stuff for LP
229 lines (198 loc) • 7.18 kB
JavaScript
;
let debug = false;
const https = require('https');
const http = require('http');
const querystring = require('querystring');
const axios = require('axios');
let fs = "";
class Utils {
constructor(debug) {
this.debug = debug;
}
async asyncTest(str) {
console.log("Testing async accessible");
return("async true");
}
async httprequest (hostname, path, port = "", method = "", body = "", headers = "", httpsRequest = false) {
let result;
let protocol = "http";
if(httpsRequest) protocol = "https";
if(hostname.substring(0, 4) !== "http") {
hostname = protocol + "://" + hostname;
}
const options = {
baseURL: hostname,
};
if(headers !== "") options.headers = headers;
if(port !== "") options.baseURL += ":" + port;
if(method == "" || method == "GET") {
const response = axios.get(path, options);
result = response.then(function (res) {
return(res.data);
})
}
if(method == "POST") {
const sendPostRequest = async () => {
try {
const resp = await axios.post(path, body, options);
return(resp.data);
} catch (err) {
console.log("Error executing httprequest");
return(err);
}
};
result = sendPostRequest();
}
return result;
}
async httprequestsync (hostname, path, port = "", method = "", body = "", headers = "", httpsRequest = false) {
return await this.httprequest(hostname, path, port, method, body, headers, httpsRequest);
}
httprequestasync (hostname, path, port = "", method = "", body = "", headers = "", httpsRequest = false) {
let result;
let protocol = "http";
if(httpsRequest) protocol = "https";
if(hostname.substring(0, 4) !== "http") {
hostname = protocol + "://" + hostname;
}
const options = {
baseURL: hostname,
};
if(headers !== "") options.headers = headers;
if(port !== "") options.baseURL += ":" + port;
if(method == "" || method == "GET") {
const response = axios.get(path, options);
result = response.then(function (res) {
return(res.data);
})
}
if(method == "POST") {
const sendPostRequest = () => {
try {
const resp = axios.post(path, body, options);
return(resp.data);
} catch (err) {
console.log("Error executing httprequest");
return(err);
}
};
result = sendPostRequest();
}
return result;
}
// Read a JsonFile into a variable
async readJsonFile(filepath) {
fs = require('fs').promises;
const data = await fs.readFile(filepath, "utf-8");
const jsonContent = JSON.parse(data.toString());
return jsonContent;
}
async httprequestold (hostname, path, port, method, body, headers, httpsRequest = true) {
return new Promise((resolve, reject) => {
let httpmode = https;
var options = {
host: hostname,
port: port,
path: path,
method: method,
headers: headers
};
if(!httpsRequest) {
httpmode = http;
this.printDebug("HTTP Request Options:", options);
} else {
this.printDebug("HTTPS Request Options:", options);
}
var req = httpmode.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
resolve(chunk)
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
reject(e.message);
});
req.write(body);
req.end();
});
}
async httprequestold(hostname, path, port, method, body, headers, httpsRequest = true) {
return new Promise((resolve, reject) => {
var jsonObject = body;
const options = {
hostname: hostname,
port: port,
path: path,
method: method,
headers: headers
};
let httpmode = https;
if(!httpsRequest) {
httpmode = http;
this.printDebug("HTTP Request Options:", options);
} else {
this.printDebug("HTTPS Request Options:", options);
}
const req = httpmode.request(options, (res) => {
if (res.statusCode < 200 || res.statusCode >= 300) {
return reject(new Error('statusCode=' + res.statusCode));
}
let body = '';
res.on('data', chunk => body += chunk);
res.on('end', () => resolve(body));
});
req.on('error', (e) => {
reject(e.message);
});
req.write(jsonObject);
req.end();
});
}
setDebug(debug = false) {
this.debug = debug;
}
printDebug(caption = "", message = "") {
if(this.debug) {
if(Array.isArray(message)) {
console.log(caption);
console.log(message);
} else {
console.log(caption, message);
}
}
}
jsonError(code = "", message = "") {
let resultJson = {success: false,
error: {code: code, message: message}
};
return(resultJson);
}
jsonSuccess(message = "") {
let resultJson = {success: true,
message: {message}
};
return(resultJson);
}
debugMode(on = true) {
if(on === false)
this.debug = false;
else
this.debug = true;
}
randomString(length, lowercase = false) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
if(lowercase)
characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
}
module.exports = Utils;