summaryrefslogtreecommitdiff
path: root/cat.py
diff options
context:
space:
mode:
Diffstat (limited to 'cat.py')
-rw-r--r--cat.py48
1 files changed, 33 insertions, 15 deletions
diff --git a/cat.py b/cat.py
index 1761540..286dc0e 100644
--- a/cat.py
+++ b/cat.py
@@ -9,29 +9,47 @@ import hnnews
import catdb
import emojis
-# TODO re-organize auth mgmt. But it involves a lot of mamual testing so I'll
-# leave it to the future...
-def init_app(config):
- Mastodon.create_app(config.APPNAME, api_base_url=config.BASEURL,
- to_file=config.CLIENTID)
- session = login_refresh_token()
+class VnilCat:
+ # recover session > login > init_app
+ def init_app(self):
+ try:
+ Mastodon.create_app(self.config.APPNAME, api_base_url=self.config.BASEURL, to_file=self.config.CLIENTID)
+ self.session = Mastodon(client_id=self.config.CLIENTID, access_token=self.config.TOKEN, feature_set="pleroma")
+ except Exception as e:
+ print("[booting] app init failed")
-def login_refresh_token(config):
- session = Mastodon(client_id=config.CLIENTID)
- session.log_in(username=config.UNAME,
- password=config.PW, to_file=config.TOKEN)
- return session
+ def login(self):
+ print("[auth] trying manual login")
+ if self.config.UNAME == "" or self.config.PW == "":
+ (self.config.UNAME, self.config.PW) = cfg.get_secrets_from_input()
+ try:
+ self.session.log_in(username=self.config.UNAME,password=self.config.PW, to_file=self.config.TOKEN)
+ except Exception as e:
+ print("[auth] log in failed: ", e)
+ exit()
-def restore_session(config):
- return Mastodon(client_id=config.CLIENTID, access_token=config.TOKEN, feature_set='pleroma')
+ def init_session(self):
+ if not os.path.isfile(self.config.CLIENTID):
+ print("[booting] first time? creating new app..")
+ self.init_app()
+ self.login()
+ return
+ else:
+ self.session = Mastodon(client_id=self.config.CLIENTID, access_token=self.config.TOKEN, feature_set="pleroma")
+ try:
+ self.session.account_verify_credentials()
+ print("[auth] credentials valid")
+ except:
+ print("[auth] invalid credentials, trying to log in with pw")
+ self.login()
-class VnilCat:
def __init__(self, config=cfg):
self.config = cfg
- self.session = restore_session(self.config)
+ self.init_session()
self.news = []
self.tl_lastseen_sid = None
+
print("[booting] checking client data")
if not os.path.isfile(self.config.CLIENTID):
print("[booting] client data doesn't exist..creating...")