]> code.delx.au - monosys/blobdiff - opal-card-tool
aur-check-updates: don't complain if a newer version is installed locally
[monosys] / opal-card-tool
index 9f462f7726e8e95680ee254dd6e9c4be8fa0896d..26fc6c7618923f41948e71ca1126dfee862c3046 100755 (executable)
@@ -12,6 +12,7 @@ import requests
 import subprocess
 import sys
 import tempfile
+import time
 
 
 VERSION = 3
@@ -76,6 +77,17 @@ class Opal(object):
         self.session.headers["User-Agent"] = USER_AGENT
 
     def login(self):
+        print("Attempting login ", end="", flush=True)
+        for i in range(10):
+            print(".", end="", flush=True)
+            self.login_once()
+            if self.check_login():
+                print(" ok")
+                return
+
+            time.sleep(1)
+
+    def login_once(self):
         r = self.session.post(LOGIN_URL, {
             "h_username": self.username,
             "h_password": self.password,
@@ -87,6 +99,14 @@ class Opal(object):
         if json["errorMessage"]:
             raise Exception("Failed to login: %s" % json["errorMessage"])
 
+    def check_login(self):
+        r = self.session.get(CARD_DETAILS_URL)
+        try:
+            r.json()
+            return True
+        except:
+            return False
+
     def load(self):
         self.load_cards()
         for card in self.cards: