chiark / gitweb /
Add login2.
authorMarnanel Thurman <marnanel@thurman.org.uk>
Sun, 28 Nov 2021 23:32:42 +0000 (23:32 +0000)
committerMarnanel Thurman <marnanel@thurman.org.uk>
Sun, 28 Nov 2021 23:32:42 +0000 (23:32 +0000)
Using tough-cookie for cookie manipulation.

package.json
src/grok.js
src/index.js

index b18491b8c59cf9b245f460279bd5fb35b82155bc..dfa33dbfa46daa0552cdf3111cf96f67702e2679 100644 (file)
@@ -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
+}
index bb4aefbb384b2a96ed6ea041c36b2ede182c126a..ba416a8068d917ed8faf157625f3eb98eed437a9 100644 (file)
@@ -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);
+                });
 }
index 022b7036ea27fa440225f5e1fa2ebe3021f4accb..39fdf1a08ac6494d5ad279d8779fc35a415fc2ba 100644 (file)
@@ -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);
 }