From 589c6d95d39c25e2f5307aab90253829ffff0586 Mon Sep 17 00:00:00 2001 From: Marnanel Thurman Date: Sun, 28 Nov 2021 23:32:42 +0000 Subject: [PATCH] Add login2. Using tough-cookie for cookie manipulation. --- package.json | 5 ++-- src/grok.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++--- src/index.js | 18 +++++++++++-- 3 files changed, 89 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index b18491b..dfa33db 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "dependencies": { "jssoup": "^0.0.15", "react": "^17.0.2", - "react-dom": "^17.0.2" + "react-dom": "^17.0.2", + "tough-cookie": "^4.0.0" } -} \ No newline at end of file +} diff --git a/src/grok.js b/src/grok.js index bb4aefb..ba416a8 100644 --- a/src/grok.js +++ b/src/grok.js @@ -1,13 +1,48 @@ +var tough = require('tough-cookie'); var JSSoup = require('jssoup').default; -export function grok_login1() { +var url = 'http://127.0.0.1:6887/login'; + +function set_cookies(url, response) { + + var cookies; + + console.log('Setting cookies from: '); + console.log(response); + + for (var h of response.headers) { + console.log(" -- "+h+" = "+response.headers[h]); + } + + if (!response.headers['set-cookie']) { + console.log(" -- no cookies to set"); + return; + } + + if (response.headers['set-cookie'] instanceof Array) { + cookies = response.headers['set-cookie'].map(Cookie.parse); + } else { + cookies = [Cookie.parse(response.headers['set-cookie'])]; + } + + for (var cookie of cookies) { + console.log("Setting cookie: "+cookie.key+" = "+cookie.value) + cordova.plugin.http.setCookie( + url, + cookie, + ) + } +} + +export function grok_login1(callback) { var result = {}; - cordova.plugin.http.get('http://127.0.0.1:6887/login', + cordova.plugin.http.get(url, {}, {}, function(response) { + var soup = new JSSoup(response.data); // jssoup apparently doesn't let you search @@ -19,13 +54,45 @@ export function grok_login1() { } } + set_cookies(url, response); + result['success'] = true; + callback(result); }, function(response) { result['success'] = false; result['message'] = response.error; + + callback(result); }); +} - return result; +export function grok_login2(callback, auth, username, password) { + + var result = {}; + + cordova.plugin.http.post(url, + { + 'lj_form_auth': auth, + 'user': username, + 'password': password, + 'remember_me': 1, + 'login': 'Log+in', + }, + {}, + function(response) { + console.log('----'); + console.log(response.headers); + console.log('----'); + console.log(response.data); + result['success'] = true; + + callback(result); + }, + function(response) { + result['success'] = false; + result['message'] = response.error; + callback(result); + }); } diff --git a/src/index.js b/src/index.js index 022b703..39fdf1a 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,6 @@ import { grok_login1, + grok_login2, } from './grok.js'; document.addEventListener('deviceready', onDeviceReady, false); @@ -7,6 +8,19 @@ document.addEventListener('deviceready', onDeviceReady, false); function onDeviceReady() { console.log('Running cordova-' + cordova.platformId + '@' + cordova.version); - var login1 = grok_login1(); - console.log(login1); + grok_login1(handle_login1); + +} + +function handle_login1(login1) { + grok_login2( + handle_login2, + login1['auth'], + 'wombat', + 'hunter2', + ) +} + +function handle_login2(login2) { + console.log(login2); } -- 2.30.2