UNPKG

@elshaer/homebridge-lg-thinq

Version:

A Homebridge plugin for controlling/monitoring LG ThinQ device via LG ThinQ platform.

119 lines 4.96 kB
#!/usr/bin/env node "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const API_1 = require("./lib/API"); const Auth_1 = require("./lib/Auth"); const url_1 = require("url"); const readline = __importStar(require("readline")); const input = (question) => new Promise((resolve) => { const rl = readline.createInterface(process.stdin, process.stdout); rl.question(question, (answer) => resolve(answer)); }); const program = new commander_1.Command(); const options = { country: 'US', language: 'en-US', }; program .option('-c, --country <type>', 'Country code for account', options.country) .on('option:country', (value) => options.country = value) .option('-l, --language <type>', 'Language code for account', options.language) .on('option:language', (value) => options.language = value); program .command('login') .description('Obtain refresh_token from LG account') .argument('<username>', 'LG username') .argument('<password>', 'LG password') .action(async (username, password) => { // eslint-disable-next-line max-len,no-console console.info('Start login: username =', username, ', password =', password, ', country =', options.country, ', language =', options.language); try { const api = new API_1.API(options.country, options.language); const gateway = await api.gateway(); const auth = new Auth_1.Auth(gateway); const session = await auth.login(username, password); // eslint-disable-next-line no-console console.info('Your refresh_token:', session.refreshToken); } catch (err) { // eslint-disable-next-line no-console console.error(err); } process.exit(0); }); program .command('auth') .description('Obtain refresh_token from account logged by Google Account, Apple ID') .action(async () => { const api = new API_1.API(options.country, options.language); const gateway = await api.gateway(); const auth = new Auth_1.Auth(gateway); const loginUrl = new url_1.URL(await auth.getLoginUrl()); const origin = loginUrl.origin; loginUrl.host = 'us.m.lgaccount.com'; loginUrl.searchParams.set('division', 'ha'); // enable Apple ID loginUrl.searchParams.set('redirect_uri', origin + '/login/iabClose'); loginUrl.searchParams.set('callback_url', origin + '/login/iabClose'); // eslint-disable-next-line no-console console.info('Log in here:', loginUrl.href); const callbackUrl = await input('Then paste the URL where the browser is redirected: '); const url = new url_1.URL(callbackUrl); const refresh_token = url.searchParams.get('refresh_token'); if (refresh_token) { // eslint-disable-next-line no-console console.info('Your refresh_token:', refresh_token); process.exit(0); return; } const username = url.searchParams.get('user_id'), thirdparty_token = url.searchParams.get('user_thirdparty_token'), id_type = url.searchParams.get('user_id_type') || ''; const thirdparty = { APPL: 'apple', FBK: 'facebook', GGL: 'google', AMZ: 'amazon', }; if (!username || !thirdparty_token || typeof thirdparty[id_type] === 'undefined') { // eslint-disable-next-line no-console console.error('redirected url not valid, please try again or use LG account method'); process.exit(0); return; } try { const session = await auth.loginStep2(username, thirdparty_token, { third_party: thirdparty[id_type], }); // eslint-disable-next-line no-console console.info('Your refresh_token:', session.refreshToken); } catch (err) { // eslint-disable-next-line no-console console.error(err); } process.exit(0); }); program.parse(process.argv); //# sourceMappingURL=cli.js.map