89 lines
2.0 KiB
Python
89 lines
2.0 KiB
Python
|
from src import network
|
||
|
|
||
|
|
||
|
bbj = network.BBJ("192.168.1.137", 7066)
|
||
|
|
||
|
|
||
|
def geterr(obj):
|
||
|
"""
|
||
|
Returns false if there are no errors in a network response,
|
||
|
else a tuple of (code integer, description string)
|
||
|
"""
|
||
|
error = obj.get("error")
|
||
|
if not error:
|
||
|
return False
|
||
|
return (error["code"], error["description"])
|
||
|
|
||
|
|
||
|
def register_prompt(user, initial=True):
|
||
|
if initial:
|
||
|
print("Register for BBJ as {}?".format(user))
|
||
|
reply = input("(y[es], d[ifferent name], q[uit])> ").lower()
|
||
|
|
||
|
if reply.startswith("d"):
|
||
|
register_prompt(input("(Username)> "))
|
||
|
elif reply.startswith("q"):
|
||
|
exit("bye!")
|
||
|
|
||
|
def getpass(ok):
|
||
|
p1 = input(
|
||
|
"(Choose a password)> " if ok else \
|
||
|
"(Those didn't match. Try again)> ")
|
||
|
p2 = input("(Now type it one more time)> ")
|
||
|
return p1 if p1 == p2 else getpass(False)
|
||
|
|
||
|
# this method will sha256 it for us
|
||
|
bbj.setuser(user, getpass(True))
|
||
|
|
||
|
response = bbj("user_register", quip="", bio="")
|
||
|
error = geterr(response)
|
||
|
if error:
|
||
|
exit("Registration error: " + error[1])
|
||
|
return response
|
||
|
|
||
|
|
||
|
def login(user, ok=True):
|
||
|
if not bbj("is_registered", target_user=user):
|
||
|
register_prompt(user)
|
||
|
else:
|
||
|
bbj.setuser(user, input(
|
||
|
"(Password)> " if ok else \
|
||
|
"(Invalid password, try again)> "))
|
||
|
|
||
|
if not bbj("check_auth"):
|
||
|
login(user, ok=False)
|
||
|
|
||
|
return bbj("user_get", target_user=user)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
# user = input("(BBJ Username)> ")
|
||
|
# if not bbj("is_registered", target_user=user):
|
||
|
|
||
|
|
||
|
login(input("(Username)> "))
|
||
|
|
||
|
import urwid
|
||
|
|
||
|
f = urwid.Frame(
|
||
|
urwid.ListBox(
|
||
|
urwid.SimpleFocusListWalker(
|
||
|
[urwid.Text(i["body"]) for i in bbj("thread_index")["threads"]]
|
||
|
)
|
||
|
)
|
||
|
)
|
||
|
|
||
|
t = urwid.Overlay(
|
||
|
f, urwid.SolidFill('!'),
|
||
|
align='center',
|
||
|
width=('relative', 80),
|
||
|
height=('relative', 80),
|
||
|
valign='middle'
|
||
|
)
|
||
|
|
||
|
loop = urwid.MainLoop(t)
|