hess-select-profile
Version:
Select a given profile value on the hess energy website https://hessenergy.com
51 lines (50 loc) • 1.39 kB
JavaScript
var cheerio = require('cheerio')
var request = require('request')
var rk = require('required-keys');
var getProfileValueOnPage = require('./lib/getProfileValueOnPage')
module.exports = function (data, cb) {
var keys = ['jar', 'value', 'viewState']
var err = rk.truthySync(data, keys)
if (err) {
return cb({
message: 'error selecting profile, missing key in data',
error: err,
stack: new Error().stack
})
}
var value = data.value
var jar = data.jar
var viewState = data.viewState
var url = 'https://www.hessenergy.com/customer/customerservice.aspx'
var opts = {
jar: jar,
url: url,
method: 'post',
form: {
__VIEWSTATE: viewState,
ctl00$MainContentPlaceHolder$ucLeftNavigation$ddlProfile: value
}
}
var r = request(opts, function (err, res, body) {
if (err) {
return cb({
message: 'error submitting login',
error: err,
stack: new Error().stack
})
}
var statusCode = res.statusCode
var $ = cheerio.load(body)
var newValue = getProfileValueOnPage($)
if (newValue === value) {
return cb(null, $)
}
return cb({
message: 'failed to select profile',
error: 'current profile value on page does not match desired profile value',
desiredValue: value,
currentValue: newValue,
stack: new Error().stack
})
})
}