UNPKG

ngrid-electric-login

Version:

Login to the NGrid Electric website using curl

80 lines (79 loc) 2.14 kB
var https = require('https') var cheerio = require('cheerio') var exec = require('child_process').exec; var request = require('request') var rk = require('required-keys'); var atSignInPage = require('./atSignInPage') module.exports = function (cb) { var jar = request.jar() var url = 'https://www1.nationalgridus.com/CorporateHub' var opts = { url: url, jar: jar, followAllRedirects: false, rejectUnauthorized: false, followRedirects: false, maxRedirects: 20 } request(opts, function (err, res, body) { res = null body = null if (err) { return cb({ message: 'error getting viewState and event validation for login', error: err, url: url, stack: new Error().stack }) } var url = 'https://www1.nationalgridus.com/Massachusetts' var opts = { url: url, jar: jar, followAllRedirects: false, followRedirects: true, maxRedirects: 20, rejectUnauthorized: false } request(opts, function (err, res, body) { if (err) { return cb({ message: 'error getting sign in page, failed to load page', error: err, url: url, stack: new Error().stack }) } var headers = res.headers var cookieStrings = headers['set-cookie'] var url = 'https://www1.nationalgridus.com/SignIn' var opts = { url: url, jar: jar, followAllRedirects: false, followRedirects: false, rejectUnauthorized: false } request(opts, function (err, res, body) { if (err) { return cb({ message: 'error getting viewState and event validation for login', error: err, url: url, stack: new Error().stack }) } var $ = cheerio.load(body) var atPage = atSignInPage($) if (atPage) { return cb(null, $) } return cb({ message: 'perform login failed, failed to get sign in page html', error: err, stack: new Error().stack }) }) }) }) }