99
1010from more_itertools import first
1111
12- from examples .tutorial .step4 .models import (Message , chat_filename_mimetype , dataclass_to_payload , decode_dataclass ,
13- decode_payload )
12+ from examples .tutorial .step4 .shared import (Message , chat_filename_mimetype , dataclass_to_payload , decode_payload )
1413from reactivestreams .publisher import DefaultPublisher , Publisher
1514from reactivestreams .subscriber import Subscriber
1615from reactivestreams .subscription import DefaultSubscription
@@ -89,7 +88,7 @@ def __init__(self):
8988 self ._session : Optional [UserSessionData ] = None
9089
9190 def router_factory (self ):
92- router = RequestRouter (decode_payload )
91+ router = RequestRouter (payload_mapper = decode_payload )
9392
9493 @router .response ('login' )
9594 async def login (payload : Payload ) -> Awaitable [Payload ]:
@@ -102,15 +101,13 @@ async def login(payload: Payload) -> Awaitable[Payload]:
102101 return create_response (ensure_bytes (session_id ))
103102
104103 @router .response ('channel.join' )
105- async def join_channel (payload : Payload ) -> Awaitable [Payload ]:
106- channel_name = utf8_decode (payload .data )
104+ async def join_channel (channel_name : str ) -> Awaitable [Payload ]:
107105 ensure_channel_exists (channel_name )
108106 chat_data .channel_users [channel_name ].add (self ._session .session_id )
109107 return create_response ()
110108
111109 @router .response ('channel.leave' )
112- async def leave_channel (payload : Payload ) -> Awaitable [Payload ]:
113- channel_name = utf8_decode (payload .data )
110+ async def leave_channel (channel_name : str ) -> Awaitable [Payload ]:
114111 chat_data .channel_users [channel_name ].discard (self ._session .session_id )
115112 return create_response ()
116113
@@ -157,9 +154,7 @@ async def _message_sender(self):
157154 return MessagePublisher (self ._session )
158155
159156 @router .stream ('channel.users' )
160- async def get_channel_users (payload : Payload ) -> Publisher :
161- channel_name = utf8_decode (payload .data )
162-
157+ async def get_channel_users (channel_name : str ) -> Publisher :
163158 if channel_name not in chat_data .channel_users :
164159 return EmptyStream ()
165160
0 commit comments