ngrid-electric-login
Version:
Login to the NGrid Electric website using curl
80 lines (79 loc) • 2.14 kB
JavaScript
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
})
})
})
})
}