Skip to content

Commit fd28eaa

Browse files
authored
[WebPubSub] Support python 3.13 (#8993)
* Support python 3.13 * Fix after upgrade
1 parent 9bca74b commit fd28eaa

35 files changed

+10289
-2901
lines changed

src/webpubsub/HISTORY.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
Release History
44
===============
55

6+
1.7.2
7+
++++
8+
* Upgrade `vendored_sdks` to ensure the compatibility with Python 3.13
9+
610
1.7.1
711
+++++
812
* Upgrade `websockets` to `13.0.1` to sure the compatibility with Python 3.12

src/webpubsub/azext_webpubsub/client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import json
1111
import websockets
1212
from .vendored_sdks.azure_messaging_webpubsubservice import (
13-
build_authentication_token
13+
WebPubSubServiceClient
1414
)
1515

1616

@@ -54,7 +54,8 @@ async def connect(url):
5454
def start_client(client, resource_group_name, webpubsub_name, hub_name, user_id=None):
5555
keys = client.list_keys(resource_group_name, webpubsub_name)
5656
connection_string = keys.primary_connection_string
57-
token = build_authentication_token(connection_string, hub_name, roles=['webpubsub.sendToGroup', 'webpubsub.joinLeaveGroup'], user=user_id)
57+
service_client = WebPubSubServiceClient.from_connection_string(connection_string, hub_name)
58+
token = service_client.get_client_access_token(roles=['webpubsub.sendToGroup', 'webpubsub.joinLeaveGroup'], user=user_id)
5859
asyncio.get_event_loop().run_until_complete(connect(token['url']))
5960

6061

src/webpubsub/azext_webpubsub/service.py

Lines changed: 31 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -7,116 +7,81 @@
77
from .vendored_sdks.azure_messaging_webpubsubservice import (
88
WebPubSubServiceClient
99
)
10-
from .vendored_sdks.azure_messaging_webpubsubservice.rest import (
11-
build_send_to_all_request,
12-
build_connection_exists_request,
13-
build_close_client_connection_request,
14-
build_send_to_connection_request,
15-
build_add_connection_to_group_request,
16-
build_remove_connection_from_group_request,
17-
build_send_to_group_request,
18-
build_user_exists_request,
19-
build_send_to_user_request,
20-
build_add_user_to_group_request,
21-
build_remove_user_from_group_request,
22-
build_remove_user_from_all_groups_request,
23-
build_grant_permission_request,
24-
build_check_permission_request,
25-
build_revoke_permission_request
26-
)
2710

2811

2912
def broadcast(client, resource_group_name, webpubsub_name, hub_name, payload):
30-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
31-
res = service_client.send_request(build_send_to_all_request(hub_name, content=payload, content_type='text/plain'))
32-
res.raise_for_status()
13+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
14+
service_client.send_to_all(message=payload, content_type='text/plain')
3315

3416

3517
def check_connection_exists(client, resource_group_name, webpubsub_name, hub_name, connection_id):
36-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
37-
res = service_client.send_request(build_connection_exists_request(hub_name, connection_id))
38-
return _get_existence_response(res.status_code == 200)
18+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
19+
return service_client.connection_exists(connection_id)
3920

4021

4122
def close_connection(client, resource_group_name, webpubsub_name, hub_name, connection_id):
42-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
43-
res = service_client.send_request(build_close_client_connection_request(hub_name, connection_id))
44-
res.raise_for_status()
23+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
24+
service_client.close_connection(connection_id)
4525

4626

4727
def send_connection(client, resource_group_name, webpubsub_name, hub_name, connection_id, payload):
48-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
49-
res = service_client.send_request(build_send_to_connection_request(hub_name, connection_id, content=payload, content_type='text/plain'))
50-
res.raise_for_status()
28+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
29+
service_client.send_to_connection(connection_id, message=payload, content_type='text/plain')
5130

5231

5332
def add_connection_to_group(client, resource_group_name, webpubsub_name, hub_name, connection_id, group_name):
54-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
55-
res = service_client.send_request(build_add_connection_to_group_request(hub_name, group_name, connection_id))
56-
res.raise_for_status()
33+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
34+
service_client.add_connection_to_group(group_name, connection_id)
5735

5836

5937
def remove_connection_from_group(client, resource_group_name, webpubsub_name, hub_name, connection_id, group_name):
60-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
61-
res = service_client.send_request(build_remove_connection_from_group_request(hub_name, group_name, connection_id))
62-
res.raise_for_status()
38+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
39+
service_client.remove_connection_from_group(group_name, connection_id)
6340

6441

6542
def send_group(client, resource_group_name, webpubsub_name, hub_name, group_name, payload):
66-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
67-
res = service_client.send_request(build_send_to_group_request(hub_name, group_name, content=payload, content_type='text/plain'))
68-
res.raise_for_status()
43+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
44+
service_client.send_to_group(group_name, payload, content_type='text/plain')
6945

7046

7147
def check_user_exists(client, resource_group_name, webpubsub_name, hub_name, user_id):
72-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
73-
res = service_client.send_request(build_user_exists_request(hub_name, user_id))
74-
return _get_existence_response(res.status_code == 200)
48+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
49+
return service_client.user_exists(user_id)
7550

7651

7752
def send_user(client, resource_group_name, webpubsub_name, hub_name, user_id, payload):
78-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
79-
res = service_client.send_request(build_send_to_user_request(hub_name, user_id, content=payload, content_type='text/plain'))
80-
res.raise_for_status()
53+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
54+
service_client.send_to_user(user_id, payload, content_type='text/plain')
8155

8256

8357
def add_user_to_group(client, resource_group_name, webpubsub_name, hub_name, user_id, group_name):
84-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
85-
res = service_client.send_request(build_add_user_to_group_request(hub_name, group_name, user_id))
86-
res.raise_for_status()
58+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
59+
service_client.add_user_to_group(group_name, user_id)
8760

8861

8962
def remove_user_from_group(client, resource_group_name, webpubsub_name, hub_name, user_id, group_name=None):
90-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
63+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
9164
if group_name:
92-
res = service_client.send_request(build_remove_user_from_group_request(hub_name, group_name, user_id))
65+
service_client.remove_user_from_group(group_name, user_id)
9366
else:
94-
res = service_client.send_request(build_remove_user_from_all_groups_request(hub_name, user_id))
95-
res.raise_for_status()
67+
service_client.remove_user_from_all_groups(user_id)
9668

9769

9870
def grant_permission(client, resource_group_name, webpubsub_name, hub_name, connection_id, permission, group_name):
99-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
100-
res = service_client.send_request(build_grant_permission_request(hub_name, permission, connection_id, target_name=group_name))
101-
res.raise_for_status()
71+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
72+
service_client.grant_permission(permission, connection_id, target_name=group_name)
10273

10374

10475
def revoke_permission(client, resource_group_name, webpubsub_name, hub_name, connection_id, permission, group_name):
105-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
106-
res = service_client.send_request(build_revoke_permission_request(hub_name, permission, connection_id, target_name=group_name))
107-
res.raise_for_status()
76+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
77+
service_client.revoke_permission(permission, connection_id, target_name=group_name)
10878

10979

11080
def check_permission(client, resource_group_name, webpubsub_name, hub_name, connection_id, permission, group_name):
111-
service_client = _get_service_client(client, resource_group_name, webpubsub_name)
112-
res = service_client.send_request(build_check_permission_request(hub_name, permission, connection_id, target_name=group_name))
113-
return _get_existence_response(res.status_code == 200)
81+
service_client = _get_service_client(client, resource_group_name, webpubsub_name, hub_name)
82+
return service_client.has_permission(permission, connection_id, target_name=group_name)
11483

11584

116-
def _get_service_client(client, resource_group_name, webpubsub_name):
85+
def _get_service_client(client, resource_group_name, webpubsub_name, hub) -> WebPubSubServiceClient:
11786
keys = client.list_keys(resource_group_name, webpubsub_name)
118-
return WebPubSubServiceClient.from_connection_string(keys.primary_connection_string)
119-
120-
121-
def _get_existence_response(success):
122-
return {"existence": success}
87+
return WebPubSubServiceClient.from_connection_string(keys.primary_connection_string, hub)

0 commit comments

Comments
 (0)