
+ More error handling in case shit goes wrong Basically handling more cases where some initial test could result in the whole script exiting with code(1) Not really that big of a deal since most tests after _that_ point will fail anyway but the fix has revealed issues in the auth code magically so I'm keeping up with the new idea that initial tests should have every resultant case validated to avoid weird behavior > good code results in good results who would have guessed
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
import subprocess
|
|
import os
|
|
import sys
|
|
import json
|
|
|
|
class Server:
|
|
def __init__(self, meta: dict):
|
|
self.url = meta.get('url')
|
|
self.wsurl = meta.get('wsurl')
|
|
self.serv_name = meta.get('name')
|
|
|
|
def __str__(self) -> str:
|
|
fields = {
|
|
'url': self.url,
|
|
'wsurl': self.wsurl,
|
|
'name': self.serv_name
|
|
}
|
|
return str(fields)
|
|
|
|
|
|
class Admin:
|
|
def __init__(self, user: dict, server: dict):
|
|
self.id = user.get('id')
|
|
self.name = user.get('name')
|
|
self.permissions = user.get('permissions')
|
|
self.secret = user.get('secret')
|
|
self.status = user.get('status')
|
|
self.jwt = None
|
|
|
|
self.server = Server(server)
|
|
|
|
def __str__(self) -> str:
|
|
acc = {
|
|
'id': self.id,
|
|
'name': self.name,
|
|
'permissions': self.permissions,
|
|
'secret': self.secret,
|
|
'jwt': self.jwt,
|
|
}
|
|
container = {'user': acc, 'server': str(server)}
|
|
return str(container)
|
|
|
|
def create_admin() -> Admin :
|
|
CARGO_BIN = os.getenv('CARGO_BIN')
|
|
|
|
proc = subprocess.run(
|
|
f'cargo run --release -- -c python-tester'.split(),
|
|
text=True, capture_output=True
|
|
)
|
|
try:
|
|
raw = json.loads(proc.stdout)
|
|
user = raw.get('user')
|
|
server = raw.get('server')
|
|
if user is None or server is None:
|
|
print(f'User/Server Data was not serializable => raw', file=sys.stderr)
|
|
return None
|
|
else:
|
|
return Admin(user, server)
|
|
except Exception as e:
|
|
print(f'General exception caught in parsing => {e}', file=sys.stderr)
|
|
return None
|
|
|