77 lines
1.8 KiB
JavaScript
77 lines
1.8 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
const containerized = require('containerized');
|
|
|
|
const MY_PACKAGE_SELECTOR_ID =
|
|
'table[style="margin-top:-10px;"] tr:first-child+tr';
|
|
const DATA_SELECTOR = 'packagecol3';
|
|
|
|
const DATA_USAGE_REGEX = /\d+\.\d{0,2}/g;
|
|
var browser;
|
|
|
|
async function getUsage() {
|
|
let metrics = {
|
|
used: null,
|
|
total: null,
|
|
};
|
|
|
|
const page = await browser.newPage();
|
|
|
|
try {
|
|
await page.goto('http://portal.actcorp.in/group/blr/myaccount');
|
|
await page.click(MY_PACKAGE_SELECTOR_ID);
|
|
await page.waitFor(3000),
|
|
(text = await page.evaluate(sel => {
|
|
return document.getElementsByClassName(sel)[3].innerText;
|
|
}, DATA_SELECTOR));
|
|
[metrics.used, metrics.total] = text
|
|
.match(DATA_USAGE_REGEX)
|
|
.map(x => parseFloat(x));
|
|
} catch (e) {
|
|
console.log("Couldn't scrape ACT page, faced an error");
|
|
console.log(e);
|
|
return null;
|
|
} finally {
|
|
page.close();
|
|
return metrics;
|
|
}
|
|
}
|
|
|
|
function chromeLaunchConfig() {
|
|
let defaultArgs = [];
|
|
if (containerized()) {
|
|
defaultArgs = ['--no-sandbox', '--disable-setuid-sandbox'];
|
|
}
|
|
var options = {
|
|
// These are set for Docker usage
|
|
// https://github.com/alekzonder/docker-puppeteer#before-usage
|
|
args: defaultArgs.concat(
|
|
process.env.hasOwnProperty('PROXY_SERVER')
|
|
? [`--proxy-server=${process.env['PROXY_SERVER']}`]
|
|
: []
|
|
),
|
|
};
|
|
|
|
if (process.env.hasOwnProperty('DISABLE_HEADLESS')) {
|
|
options.headless = false;
|
|
}
|
|
|
|
if (process.env.hasOwnProperty('CHROME_BIN')) {
|
|
options.executablePath = process.env['CHROME_BIN'];
|
|
}
|
|
|
|
console.log('Launching Chrome with args:');
|
|
console.log(options);
|
|
|
|
return options;
|
|
}
|
|
|
|
// Async IIFE FTW
|
|
(async () => {
|
|
browser = await puppeteer.launch(chromeLaunchConfig());
|
|
console.log('Browser Initialized');
|
|
})();
|
|
|
|
module.exports = {
|
|
getUsage: getUsage,
|
|
};
|