141 lines
3.6 KiB
Python
141 lines
3.6 KiB
Python
import time
|
|
import sqlite3
|
|
|
|
class session_info():
|
|
def __init__(self):
|
|
self._logged_in = False
|
|
self.username = None
|
|
self.server_code = None
|
|
self.cycle_count = 0
|
|
self.auth_tokens = []
|
|
self.transfer = None
|
|
self.status = None
|
|
|
|
@property
|
|
def logged_in(self):
|
|
return self._logged_in
|
|
@logged_in.setter
|
|
def logged_in(self, value):
|
|
self._logged_in = value
|
|
self.cycle_count += 1
|
|
|
|
@property
|
|
def transfer(self):
|
|
return self._transfer
|
|
@transfer.setter
|
|
def transfer(self, value):
|
|
self._transfer = value
|
|
self.cycle_count += 1
|
|
|
|
def clear(self):
|
|
db().execute("DELETE FROM tokens")
|
|
self.__init__()
|
|
|
|
class wait():
|
|
def __init__(self, session):
|
|
self.session = session
|
|
self.update()
|
|
|
|
def update(self):
|
|
self.last = self.session.cycle_count
|
|
self.current = self.session.cycle_count
|
|
|
|
def current_update(self):
|
|
self.current = self.session.cycle_count
|
|
|
|
def wait(self, status=None):
|
|
while self.last == self.current:
|
|
time.sleep(0.05)
|
|
self.current_update()
|
|
return
|
|
|
|
def wait_username(self):
|
|
while not self.session.username:
|
|
time.sleep(0.05)
|
|
return
|
|
|
|
class db():
|
|
def __init__(self):
|
|
self.path = "./data/database.db"
|
|
self._create()
|
|
|
|
def _create(self):
|
|
con, cur = self._connect()
|
|
|
|
cur.execute("""CREATE TABLE IF NOT EXISTS tokens (
|
|
token TEXT NOT NULL PRIMARY KEY,
|
|
username TEXT NOT NULL,
|
|
expire TEXT NOT NULL
|
|
)""")
|
|
|
|
cur.execute("""CREATE TABLE IF NOT EXISTS settings (
|
|
title TEXT NOT NULL PRIMARY KEY,
|
|
description TEXT,
|
|
state BOOL,
|
|
value TEXT,
|
|
icon TEXT
|
|
)""")
|
|
|
|
self._close(con)
|
|
|
|
def _connect(self):
|
|
con = sqlite3.connect(self.path)
|
|
cur = con.cursor()
|
|
return con, cur
|
|
|
|
def execute(self, command, values=None):
|
|
rez = None
|
|
con, cur = self._connect()
|
|
|
|
if values:
|
|
cur.execute(command, values)
|
|
else:
|
|
cur.execute(command)
|
|
|
|
if "SELECT" in command:
|
|
rez = cur.fetchall()
|
|
|
|
self._close(con)
|
|
if rez:
|
|
return rez
|
|
|
|
def _commit(self, con):
|
|
con.commit()
|
|
|
|
def _close(self, con):
|
|
con.commit()
|
|
con.close()
|
|
|
|
class setting():
|
|
def __init__(self, title):
|
|
self.title = title
|
|
self.db = db()
|
|
self.__fetch()
|
|
|
|
def __fetch(self):
|
|
setting_data = self.db.execute("SELECT * FROM settings WHERE title = ?", (self.title,))
|
|
if setting_data:
|
|
self.title = setting_data[0][0]
|
|
self.description = setting_data[0][1]
|
|
if not self.description:
|
|
self.description = ""
|
|
|
|
if setting_data[0][3] != None:
|
|
self.value = setting_data[0][3]
|
|
self.type = "text_field"
|
|
else:
|
|
self.value = setting_data[0][2]
|
|
self.type = "swtich"
|
|
|
|
if setting_data[0][4] != None:
|
|
self.icon = setting_data[0][4]
|
|
else:
|
|
self.icon = "cog"
|
|
|
|
def change_value(self, new_value):
|
|
if self.type == "swtich" and isinstance(new_value, bool):
|
|
self.db.execute("UPDATE settings SET state = ?", (new_value,))
|
|
elif self.type == "text_field" and isinstance(new_value, str):
|
|
self.db.execute("UPDATE settings SET value = ?", (new_value,))
|
|
|