comparison libervia/backend/plugins/plugin_xep_0353.py @ 4270:0d7bb4df2343

Reformatted code base using black.
author Goffi <goffi@goffi.org>
date Wed, 19 Jun 2024 18:44:57 +0200
parents 79c8a70e1813
children
comparison
equal deleted inserted replaced
4269:64a85ce8be70 4270:0d7bb4df2343
56 } 56 }
57 57
58 58
59 class RejectException(exceptions.CancelError): 59 class RejectException(exceptions.CancelError):
60 60
61 def __init__(self, reason: str, text: str|None = None): 61 def __init__(self, reason: str, text: str | None = None):
62 super().__init__(text) 62 super().__init__(text)
63 self.reason = reason 63 self.reason = reason
64 64
65 65
66 class TakenByOtherDeviceException(exceptions.CancelError): 66 class TakenByOtherDeviceException(exceptions.CancelError):
205 finally: 205 finally:
206 del client._xep_0353_pending_sessions[session["id"]] 206 del client._xep_0353_pending_sessions[session["id"]]
207 return True 207 return True
208 208
209 def _terminate_trigger( 209 def _terminate_trigger(
210 self, 210 self, client: SatXMPPEntity, session: dict, reason_elt: domish.Element
211 client: SatXMPPEntity,
212 session: dict,
213 reason_elt: domish.Element
214 ) -> bool: 211 ) -> bool:
215 session_id = session["id"] 212 session_id = session["id"]
216 try: 213 try:
217 response_d = client._xep_0353_pending_sessions[session_id] 214 response_d = client._xep_0353_pending_sessions[session_id]
218 except KeyError: 215 except KeyError:
237 234
238 async def _handle_mess_init( 235 async def _handle_mess_init(
239 self, 236 self,
240 client: SatXMPPEntity, 237 client: SatXMPPEntity,
241 message_elt: domish.Element, 238 message_elt: domish.Element,
242 mess_init_elt: domish.Element 239 mess_init_elt: domish.Element,
243 ) -> None: 240 ) -> None:
244 if mess_init_elt.name == "propose": 241 if mess_init_elt.name == "propose":
245 await self._handle_propose(client, message_elt, mess_init_elt) 242 await self._handle_propose(client, message_elt, mess_init_elt)
246 elif mess_init_elt.name == "retract": 243 elif mess_init_elt.name == "retract":
247 self._handle_retract(client, message_elt, mess_init_elt) 244 self._handle_retract(client, message_elt, mess_init_elt)
255 await self._handle_ringing(client, message_elt, mess_init_elt) 252 await self._handle_ringing(client, message_elt, mess_init_elt)
256 else: 253 else:
257 log.warning(f"invalid element: {mess_init_elt.toXml}") 254 log.warning(f"invalid element: {mess_init_elt.toXml}")
258 255
259 def _get_sid_and_session_d( 256 def _get_sid_and_session_d(
260 self, 257 self, client: SatXMPPEntity, elt: domish.Element
261 client: SatXMPPEntity, 258 ) -> tuple[str, defer.Deferred | list[defer.Deferred]]:
262 elt: domish.Element
263 ) -> tuple[str, defer.Deferred|list[defer.Deferred]]:
264 """Retrieve session ID and deferred or list of deferred from response element""" 259 """Retrieve session ID and deferred or list of deferred from response element"""
265 try: 260 try:
266 session_id = elt["id"] 261 session_id = elt["id"]
267 except KeyError as e: 262 except KeyError as e:
268 assert elt.parent is not None 263 assert elt.parent is not None
278 ) 273 )
279 raise e 274 raise e
280 return session_id, session_d 275 return session_id, session_d
281 276
282 def _get_sid_and_response_d( 277 def _get_sid_and_response_d(
283 self, 278 self, client: SatXMPPEntity, elt: domish.Element
284 client: SatXMPPEntity,
285 elt: domish.Element
286 ) -> tuple[str, defer.Deferred]: 279 ) -> tuple[str, defer.Deferred]:
287 """Retrieve session ID and response_d from response element""" 280 """Retrieve session ID and response_d from response element"""
288 session_id, response_d = self._get_sid_and_session_d(client, elt) 281 session_id, response_d = self._get_sid_and_session_d(client, elt)
289 assert isinstance(response_d, defer.Deferred) 282 assert isinstance(response_d, defer.Deferred)
290 return session_id, response_d 283 return session_id, response_d
291 284
292 def _get_sid_and_preflight_d_list( 285 def _get_sid_and_preflight_d_list(
293 self, 286 self, client: SatXMPPEntity, elt: domish.Element
294 client: SatXMPPEntity,
295 elt: domish.Element
296 ) -> tuple[str, list[defer.Deferred]]: 287 ) -> tuple[str, list[defer.Deferred]]:
297 """Retrieve session ID and list of preflight_d from response element""" 288 """Retrieve session ID and list of preflight_d from response element"""
298 session_id, preflight_d_list = self._get_sid_and_session_d(client, elt) 289 session_id, preflight_d_list = self._get_sid_and_session_d(client, elt)
299 assert isinstance(preflight_d_list, list) 290 assert isinstance(preflight_d_list, list)
300 return session_id, preflight_d_list 291 return session_id, preflight_d_list
301 292
302 async def _handle_propose( 293 async def _handle_propose(
303 self, 294 self, client: SatXMPPEntity, message_elt: domish.Element, elt: domish.Element
304 client: SatXMPPEntity,
305 message_elt: domish.Element,
306 elt: domish.Element
307 ) -> None: 295 ) -> None:
308 peer_jid = jid.JID(message_elt["from"]) 296 peer_jid = jid.JID(message_elt["from"])
309 local_jid = jid.JID(message_elt["to"]) 297 local_jid = jid.JID(message_elt["to"])
310 session_id = elt["id"] 298 session_id = elt["id"]
311 try: 299 try:
330 log.warning("No application specified: {message_elt.toXml()}") 318 log.warning("No application specified: {message_elt.toXml()}")
331 return 319 return
332 320
333 cast(list[tuple[domish.Element, ApplicationData]], desc_and_apps) 321 cast(list[tuple[domish.Element, ApplicationData]], desc_and_apps)
334 desc_and_apps.sort( 322 desc_and_apps.sort(
335 key=lambda desc_and_app: desc_and_app[1].priority, 323 key=lambda desc_and_app: desc_and_app[1].priority, reverse=True
336 reverse=True
337 ) 324 )
338 325
339 session = self._j.create_session( 326 session = self._j.create_session(
340 client, session_id, self._j.ROLE_RESPONDER, peer_jid, local_jid 327 client, session_id, self._j.ROLE_RESPONDER, peer_jid, local_jid
341 ) 328 )
425 412
426 def _handle_proceed( 413 def _handle_proceed(
427 self, 414 self,
428 client: SatXMPPEntity, 415 client: SatXMPPEntity,
429 message_elt: domish.Element, 416 message_elt: domish.Element,
430 proceed_elt: domish.Element 417 proceed_elt: domish.Element,
431 ) -> None: 418 ) -> None:
432 from_jid = jid.JID(message_elt["from"]) 419 from_jid = jid.JID(message_elt["from"])
433 # session_d is the deferred of the session, it can be preflight_d or response_d 420 # session_d is the deferred of the session, it can be preflight_d or response_d
434 if from_jid.userhostJID() == client.jid.userhostJID(): 421 if from_jid.userhostJID() == client.jid.userhostJID():
435 # an other device took the session 422 # an other device took the session