UNPKG

@idiamantino/livepro-utils

Version:

Stuff for LP

229 lines (198 loc) 7.18 kB
"use strict"; 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;