docparse-scraper-nst
Version:
Node Zombie based scraper to scrape bills from the NStar (supplier code "NST)" website
70 lines (62 loc) • 2 kB
JavaScript
var rk = require('required-keys');
module.exports = function(data, cb) {
var keys = ['billIndex', 'numBills', 'currentLogin', 'accountIndex', 'accountNumber', 'bro', 'config', 'billNumbers', 'billNumber', 'billIndex', 'numBills', 'billDateString', 'supplierCode', 'logger'];
var err = rk.nonNullSync(data, keys);
if (err) { return cb(err); }
var logger = data.logger;
var checkData = {
supplierCode: data.supplierCode,
billNumber: data.billNumber,
billNumbers: data.billNumbers,
config: data.config,
logger: logger
};
var check = data.check;
if (!check) {
check = require('docparse-scraper-check-node');
}
var selectBill = data.selectBill;
if (!selectBill) {
selectBill = require('./selectBill');
}
var downloadBill = data.downloadBill;
if (!downloadBill) {
downloadBill = require('./downloadBill');
}
var goToAccountHomepage = data.goToAccountHomepage;
if (!goToAccountHomepage) {
goToAccountHomepage = require('./goToAccountHomepage');
}
check(checkData, function (err, reply) {
if (err) { return cb(err); }
if (!reply) {
logger.debug('bill already download', {
type: 'scraper',
supplierCode: 'NST',
username: data.currentLogin.username,
accountIndex: data.accountIndex,
numAccounts: data.numAccounts,
billIndex: data.billIndex,
numBills: data.numBills
});
return cb();
}
logger.debug('bill not yet download, downloading now', {
type: 'scraper',
supplierCode: 'NST',
username: data.currentLogin.username,
accountIndex: data.accountIndex,
numAccounts: data.numAccounts,
billIndex: data.billIndex,
numBills: data.numBills
});
selectBill(data, function (err, reply) {
if (err) { return cb(err); }
downloadBill(data, function (err, reply) {
if (err) { return cb(err); }
goToAccountHomepage(data, cb);
});
// getCSV(data, cb);
});
});
};