UNPKG

homebridge-irobot

Version:

A homebridge plugin for controlling iRobot devices

119 lines 4.53 kB
#!/usr/bin/env node 'use strict'; const request = require('request'); if (!process.argv[2] || !process.argv[3]) { console.log('Usage: npm run get-password-cloud <iRobot username> <iRobot password> [Gigya API Key]'); process.exit(); } const username = process.argv[2]; const password = process.argv[3]; const apiKey = '3_rWtvxmUKwgOzu3AUPTMLnM46lj-LxURGflmu5PcE_sGptTbD-wMeshVbLvYpq01K'; const gigyaLoginOptions = { 'method': 'POST', 'uri': 'https://accounts.us1.gigya.com/accounts.login', 'json': true, 'qs': { 'apiKey': apiKey, 'targetenv': 'mobile', 'loginID': username, 'password': password, 'format': 'json', 'targetEnv': 'mobile' }, 'headers': { 'Connection': 'close' } }; request(gigyaLoginOptions, loginGigyaResponseHandler); function loginGigyaResponseHandler(error, response, body) { if (error) { console.log('Fatal error login into Gigya API. Please check your credentials or Gigya API Key.'); console.log(error); process.exit(0); } if (response.statusCode === 401 || response.statusCode === 403) { console.log('Authentication error. Check your credentials.'); console.log(response); process.exit(0); } else if (response.statusCode === 400) { console.log(response); process.exit(0); } else if (response.statusCode === 200) { if (body && body.statusCode && body.statusCode === 403) { console.log('Authentication error. Please check your credentials.'); console.log(body); process.exit(0); } if (body && body.statusCode && body.statusCode === 400) { console.log('Error login into Gigya API.'); console.log(body); process.exit(0); } if (body && body.statusCode && body.statusCode === 200 && body.errorCode === 0 && body.UID && body.UIDSignature && body.signatureTimestamp && body.sessionInfo && body.sessionInfo.sessionToken) { const iRobotLoginOptions = { 'method': 'POST', 'uri': 'https://unauth2.prod.iot.irobotapi.com/v2/login', 'json': true, 'body': { 'app_id': 'ANDROID-C7FB240E-DF34-42D7-AE4E-A8C17079A294', 'assume_robot_ownership': 0, 'gigya': { 'signature': body.UIDSignature, 'timestamp': body.signatureTimestamp, 'uid': body.UID } }, 'headers': { 'Connection': 'close' } }; request(iRobotLoginOptions, loginIrobotResponseHandler); } else { console.log('Error login into iRobot account. Missing fields in login response.'); console.log(body); process.exit(0); } } else { console.log('Unespected response. Checking again...'); } } function loginIrobotResponseHandler(error, response, body) { let index = 0; if (error) { console.log('Fatal error login into iRobot account. Please check your credentials or API Key.'); console.log(error); process.exit(0); } if (body && body.robots) { const robotCount = Object.keys(body.robots).length; //console.log('Found ' + robotCount + ' robot(s)!'); console.log('['); Object.keys(body.robots).map(function (r) { index++; console.log('{"name": "' + body.robots[r].name + '", "blid": "' + r + '", "password": "' + body.robots[r].password + '", "ip": "' + body.robots[r].ip + '"}'); /* console.log('Robot "' + body.robots[r].name + '" (sku: ' + body.robots[r].sku + ' SoftwareVer: ' + body.robots[r].softwareVer + '):'); console.log('BLID=> ' + r); console.log('Password=> ' + body.robots[r].password + ' <= Yes, all this string.'); console.log(''); */ if (index == robotCount) { console.log(']'); } else { console.log(','); } }); //console.log('Use this credentials in dorita980 lib :)'); } else { console.log('Fatal error login into iRobot account. Please check your credentials or API Key.'); console.log(body); process.exit(0); } } //# sourceMappingURL=getRoombaCredentials.js.map