UNPKG

pdfer-login-imacros

Version:

Login to the pdfer service using iMacros for Firefox

95 lines (88 loc) 2.89 kB
/** * Login to pdfer website using iMacros for Firefox */ module.exports = function(config, cb) { // clear all existing cookies and sessions if (!config) { return cb('"config" parameter missing'); } var uploadURL = 'https://' + config.pdfer.host + '/upload'; var code = iimPlay('CODE:URL GOTO='+uploadURL); var atPage = atUploadPage(); if (atPage) { var username = getUsername(); if (username === config.pdfer.username) { return cb(); } } var loginURL = 'https://'+ config.pdfer.host + '/login/api'; code = iimPlay('CODE:URL GOTO='+loginURL); if (code !==1) { return cb('failed to login to pdfer service, imacros error: ' + iimGetLastError()); } atPage = atLoginPage(); if (!atPage) { var logoutURL = 'http://'+config.pdfer.host + ':' + config.pdfer.port + '/logout'; code = iimPlay('CODE:URL GOTO=' +logoutURL); code = iimPlay('CODE:URL GOTO='+loginURL); atPage = atLoginPage(); if (!atPage) { return cb('not at login page when we should be'); } } fillLogin(config, function (err, reply) { if (err) { return cb(err); } atPage = atUploadPage(); if (!atPage) { return cb('pdfer login failed, not at upload page after submitting login'); } cb(); }); }; function getUsername() { var code = iimPlay('CODE: TAG POS=1 TYPE=SPAN ATTR=ID:username EXTRACT=TXT'); if (code !== 1) { return null; } var extract = iimGetLastExtract().trim(); if (extract === '#EANF#') { return null; } return extract; } function fillLogin(config, cb) { var pdfer = config.pdfer var code = iimPlay('CODE: SET !TIMEOUT_TAG 0\n' + 'TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=ID:id_email CONTENT=' + pdfer.email); if (code !== 1) { return cb('login failed, imacros error when filling in email field: ' + iimGetLastError()); } var password = pdfer.password; code = iimPlay('CODE: SET !TIMEOUT_TAG 0\n' + 'TAG POS=1 TYPE=INPUT:PASSWORD ATTR=ID:id_password CONTENT=' + password); if (code !== 1) { return cb('login failed, imacros error when filling in password field: ' + iimGetLastError()); } code = iimPlay('CODE:SET !TIMEOUT_TAG 0\n' + 'TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:NoFormName ATTR=*'); if (code !== 1) { return cb('login failed, imacros error when pressing submit button on login page: ' + iimGetLastError()); } cb(); } function atLoginPage() { var code = iimPlay('CODE: SET !TIMEOUT_TAG 0\n' + 'TAG POS=1 TYPE=P ATTR=TXT:Use<SP>your<SP>email<SP>and<SP>password<SP>to<SP>login') if (code === 1) { return true; } return false; } function atUploadPage() { var code = iimPlay('CODE:SET !TIMEOUT_TAG 0\n' + 'TAG POS=1 TYPE=H1 ATTR=TXT:Upload<SP>PDF'); if (code === 1) { return true; } return false; }