UNPKG

ngrid-electric-login

Version:

Login to the NGrid Electric website using curl

65 lines (63 loc) 2.02 kB
var fs = require('fs') var async = require('async') var rk = require('required-keys'); var getSignInPageData = require('./getSignInPageData') var submitLogin = require('./submitLogin') var validateAuthenticatedCookieData = require('./validateAuthenticatedCookieData') module.exports = function (data, callback) { var keys = ['username', 'password'] var err = rk.truthySync(data, keys) if (err) { return callback({ message: 'error performing login, missing key in data', error: err, stack: new Error().stack }) } var cookiePath var viewState, eventValidation async.series([ function(cb) { getSignInPageData(function (err, reply) { if (err) { return cb(err) } viewState = reply.viewState eventValidation = reply.eventValidation cb() }) }, function(cb) { var loginData = { viewState: viewState, eventValidation: eventValidation, currentLogin: data } submitLogin(loginData, function (err, cookiePathReply) { if (err) { return cb(err) } cookiePath = cookiePathReply fs.readFile(cookiePath, 'utf8', function (err, cookieData) { if (err) { return cb({ message: 'error performing login, failed to read cookie file on disk after submitting login form', cookiePath: cookiePath, error: err, stack: new Error().stack }) } var isGoodLogin = validateAuthenticatedCookieData(cookieData) if (isGoodLogin) { return cb() } return cb({ message: 'error performing login', cookiePath: cookiePath, error: 'cookie is not a valid authenticated cookie, this means submit login post failed and the scraper is not logged in' , stack: new Error().stack }) }) }) } ], function(err) { viewState = eventValidation = null callback(err, cookiePath) }) }