Skip to content

Commit 8cbecbe

Browse files
committed
demo_client: Fix error formatting
1 parent 70f519c commit 8cbecbe

File tree

1 file changed

+40
-8
lines changed

1 file changed

+40
-8
lines changed

demo_client/main.py

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,20 @@
99
import unittest
1010

1111
from dbus_next.aio import MessageBus
12-
from dbus_next import Variant
12+
from dbus_next import DBusError, Message, MessageType, Variant
1313

1414
import util
1515
import webauthn
1616

1717

18+
def dbus_error_from_message(msg: Message):
19+
assert msg.message_type == MessageType.ERROR
20+
return DBusError(msg.error_name, msg.body[0] if msg.body else None, reply=msg)
21+
22+
23+
DBusError._from_message = dbus_error_from_message
24+
25+
1826
async def run(cmd):
1927
bus = await MessageBus().connect()
2028

@@ -36,9 +44,20 @@ async def run(cmd):
3644
username = "user@example.com"
3745

3846
if cmd == "create":
39-
auth_data = await create_passkey(
40-
interface, origin, top_origin, rp_id, user_handle, username
41-
)
47+
try:
48+
auth_data = await create_passkey(
49+
interface, origin, top_origin, rp_id, user_handle, username
50+
)
51+
except DBusError as e:
52+
print(
53+
"Received error: " + e.type + (f": {e.text}" if e.text else ""),
54+
file=sys.stderr,
55+
)
56+
exit(1)
57+
except Exception as e:
58+
print(f"Received error: {e}")
59+
exit(1)
60+
4261
user_data = {
4362
"id": 1,
4463
"name": username,
@@ -56,9 +75,20 @@ async def run(cmd):
5675
elif cmd == "get":
5776
user_data = json.load(open("./user.json", "r"))
5877
cred_id = util.b64_decode(user_data["cred_id"])
59-
auth_data = await get_passkey(
60-
interface, origin, top_origin, rp_id, cred_id, user_data
61-
)
78+
try:
79+
auth_data = await get_passkey(
80+
interface, origin, top_origin, rp_id, cred_id, user_data
81+
)
82+
except DBusError as e:
83+
print(
84+
"Received error: " + e.type + (f": {e.text}" if e.text else ""),
85+
file=sys.stderr,
86+
)
87+
exit(1)
88+
except Exception as e:
89+
print(f"Received error: {e}")
90+
exit(1)
91+
6292
print(auth_data)
6393
else:
6494
print(f"unknown cmd: {cmd}")
@@ -143,6 +173,7 @@ async def create_passkey(interface, origin, top_origin, rp_id, user_handle, user
143173
}
144174

145175
rsp = await interface.call_create_credential(req)
176+
146177
print("Received response")
147178
pprint(rsp)
148179
if rsp["type"].value != "public-key":
@@ -203,7 +234,8 @@ def main():
203234
print("No cmd given. Use 'get' or 'create'")
204235
exit()
205236
cmd = args[0]
206-
loop = asyncio.get_event_loop()
237+
loop = asyncio.new_event_loop()
238+
asyncio.set_event_loop(loop)
207239
loop.run_until_complete(run(cmd))
208240

209241

0 commit comments

Comments
 (0)