anonstream/anonstream/utils/websocket.py

32 行
868 B
Python
Raw 通常表示 履歴

class Malformed(Exception):
pass
def get(t, pairs, key, default=None):
value = pairs.get(key, default)
if isinstance(value, t):
return value
else:
raise Malformed(f'malformed {key}')
def parse_websocket_data(receipt):
if not isinstance(receipt, dict):
raise Malformed('not a json object')
match receipt.get('type'):
case 'message':
form = get(dict, receipt, 'form')
nonce = get(str, form, 'nonce')
comment = get(str, form, 'comment')
digest = get(str, form, 'captcha-digest', '')
answer = get(str, form, 'captcha-answer', '')
return nonce, comment, digest, answer
case 'appearance':
raise NotImplemented
case 'captcha':
return None
case _:
raise Malformed('malformed type')