src/utils/getLoginCookies.js
import rp from "request-promise-native";
/* eslint-disable max-len */
/**
* Module for fetching cookies from login service
* @module GetLoginCookies
*/
module.exports = {
/**
* getLoginCookies
* Fetches cookies (A, and CLIENT) for specified user from login service.
* @param {String} email - email of user
* @param {String} password - password of user
* @returns {Object} Contains a, fullA, and fullClient
* @example getLoginCookies('test@lifesize.com', 'password123')
* @example
* // Returns...
* {
* fullA: 'A=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJrIjoiQVFFREFIaUt1cTdOZ1QweWk3czVudkgxQUVjL2FpQ3BQbysveXh1TWNHbjBvQVBOcWdBQUFINHdmQVlKS29aSWh2Y05BUWNHb0c4d2JRSUJBREJvQmdrcWhraUc5dzBCQndFd0hnWUpZSVpJQVdVREJBRXVNQkVFRERiT0s3MGpLRDkwdlJrL1F3SUJFSUE3NkNkQzdJNjEzUFhIK1NhbWRmaWVzV0x4MER0ZTRoMzFyNkhIbkhLOE5CdzhzN2YyVjQ4Snp4bi8vNVR5S0Vkcmd3RW1iYm5QNldXekhmMD0iLCJpdiI6IjVJN3pYTzlLMS9JUm9rLzE5UEZubkE9PSIsInRhZyI6ImRwbjl2NHJlREZuaUFLYUhZbUJ6dFE9PSIsImp0aSI6Ijc4M2QyNDgxLWUxOWYtNGY4YS05MTRiLTBmODRmNWIxMmU1OSIsImV4cCI6MTQ5NTM5ODYzNSwiaWF0IjoxNDkyODA2NjM1LCJjdCI6ImcxTGRFcUlRcHVuYmtReGZ1QjlFdUk0bnVBK0xqbHpwYitGR2dlVmhxMzBnUWdPdGFGS2V4V0JBdEU4bXBWUHBjNUdjazlZaG0vVmw5NWZmbGQ3elpZZDJCeTJpSEx0OUpUbFp1dmpvVk56S2lTa2Nidnh3MjVBL3VXQ2xXTG4wcnZiQXNtaVBSVVBCYTlhb3VjRm1ZSDhVVVl5NDZiM1VjYVFGcU5qcDltTEVuYmYwWjN4ZWQ4YnJ3UkZPeDBnVU1SMUN2NEV1dnAwMExNbm1Ca1B2Umt1R3kwdWMwYWdtREJ4czhJRXVYNGZkSUgyMCsrWERQSTBXZlBMVzU2L2ttS2RVc0VRSExOczh1akZXMDdwZVFKaVZKM1RpQW5KTlZHcFJ2Und1REt0TndBaUhNeDg5UEkyQ3pHc3oyaG1lWk9Vb2V4MzRJekJVMDdPSzYvenJtSXZEYzJPakhBPT0ifQ.jNE77XTU9ifSTsjk0PT_ckU493Ta9dKQ55VT2rvLIyW9NTnUDWX8vY8rHbTIJBRpCIjRf-SyVYyNMSNwC0qFqNTSSMpEFG650AyJ-CdXVB03ihtlc0q0qH9Pk0jvOQxJ; Domain=lifesizecloudbeta.com; expires=Sun, 21-May-2017 20:30:35 GMT; Max-Age=2592000; Path=/; secure',
* a: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJrIjoiQVFFREFIaUt1cTdOZ1QweWk3czVudkgxQUVjL2FpQ3BQbysveXh1TWNHbjBvQVBOcWdBQUFINHdmQVlKS29aSWh2Y05BUWNHb0c4d2JRSUJBREJvQmdrcWhraUc5dzBCQndFd0hnWUpZSVpJQVdVREJBRXVNQkVFRERiT0s3MGpLRDkwdlJrL1F3SUJFSUE3NkNkQzdJNjEzUFhIK1NhbWRmaWVzV0x4MER0ZTRoMzFyNkhIbkhLOE5CdzhzN2YyVjQ4Snp4bi8vNVR5S0Vkcmd3RW1iYm5QNldXekhmMD0iLCJpdiI6IjVJN3pYTzlLMS9JUm9rLzE5UEZubkE9PSIsInRhZyI6ImRwbjl2NHJlREZuaUFLYUhZbUJ6dFE9PSIsImp0aSI6Ijc4M2QyNDgxLWUxOWYtNGY4YS05MTRiLTBmODRmNWIxMmU1OSIsImV4cCI6MTQ5NTM5ODYzNSwiaWF0IjoxNDkyODA2NjM1LCJjdCI6ImcxTGRFcUlRcHVuYmtReGZ1QjlFdUk0bnVBK0xqbHpwYitGR2dlVmhxMzBnUWdPdGFGS2V4V0JBdEU4bXBWUHBjNUdjazlZaG0vVmw5NWZmbGQ3elpZZDJCeTJpSEx0OUpUbFp1dmpvVk56S2lTa2Nidnh3MjVBL3VXQ2xXTG4wcnZiQXNtaVBSVVBCYTlhb3VjRm1ZSDhVVVl5NDZiM1VjYVFGcU5qcDltTEVuYmYwWjN4ZWQ4YnJ3UkZPeDBnVU1SMUN2NEV1dnAwMExNbm1Ca1B2Umt1R3kwdWMwYWdtREJ4czhJRXVYNGZkSUgyMCsrWERQSTBXZlBMVzU2L2ttS2RVc0VRSExOczh1akZXMDdwZVFKaVZKM1RpQW5KTlZHcFJ2Und1REt0TndBaUhNeDg5UEkyQ3pHc3oyaG1lWk9Vb2V4MzRJekJVMDdPSzYvenJtSXZEYzJPakhBPT0ifQ.jNE77XTU9ifSTsjk0PT_ckU493Ta9dKQ55VT2rvLIyW9NTnUDWX8vY8rHbTIJBRpCIjRf-SyVYyNMSNwC0qFqNTSSMpEFG650AyJ-CdXVB03ihtlc0q0qH9Pk0jvOQxJ',
* fullClient: 'CLIENT="ImFnZT0xNDk1Mzk4NjM1JmVuY19kYXRhPTJhODc4NmNlZTdkOGM4YjZhNzA2ZmVkNGE5ZjdkMjk5YmYzNjQ3MWY2N2M1YjAyZWY3NDJlNTU3YWQ4YmFmMmY0ODhhZTM1OTk4ZDA1ODQxMDYxOGE1MmUzNzZkNWIxZSZkaWdlc3Q9N2M2ZWM0NzRkZTlhMTRkZDgwODQ4ZTMwN2E4M2M1ZDQwZmU5YmVlNSI="; Domain=lifesizecloudbeta.com; expires=Sun, 21-May-2017 20:30:35 GMT; Max-Age=2592000; Path=/; secure'
* }
*/
getLoginCookies: (email, password) => {
if (!email) {
throw new Error(`Email is not valid! Email is ${email}`);
}
if (!password) {
throw new Error(`Password is not valid! Password is ${password}`);
}
const options = {
method: "POST",
uri: "https://login.lifesizecloudbeta.com/ls/login/",
port: "443",
form: {
email: email,
password: password
},
headers: {
Origin: "https://eblogin.lifesizecloudbeta.com",
"Content-Type": "application/x-www-form-urlencoded",
Accept:
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"User-Agent": "node " + process.version
},
simple: false,
resolveWithFullResponse: true
};
return rp(options)
.then(body => {
const a = body.headers["set-cookie"][0].split(";")[0].replace("A=", "");
const fullA = body.headers["set-cookie"][0].replace("httponly;", "");
const fullClient = body.headers["set-cookie"][1].replace(
"httponly;",
""
);
return { fullA: fullA, a: a, fullClient: fullClient };
})
.catch(err => {
throw new Error(`Error making cookie request (${err})`);
});
}
};