comparison sat/plugins/plugin_xep_0060.py @ 3791:c61233f51b86

plugin XEP-0060: do not raise an error when not subscribed on unsubscribe: when an error is received on unsubscribe because user was not subscribed, a warning is logged, but no exception is raised anymore, as the expected result is reached.
author Goffi <goffi@goffi.org>
date Fri, 17 Jun 2022 14:15:23 +0200
parents b7cef1b24f83
children 853cbaf56e9e
comparison
equal deleted inserted replaced
3790:24f70a29e382 3791:c61233f51b86
1194 if not await self.host.trigger.asyncPoint( 1194 if not await self.host.trigger.asyncPoint(
1195 "XEP-0060_unsubscribe", client, service, nodeIdentifier, sub_jid, 1195 "XEP-0060_unsubscribe", client, service, nodeIdentifier, sub_jid,
1196 subscriptionIdentifier, sender 1196 subscriptionIdentifier, sender
1197 ): 1197 ):
1198 return 1198 return
1199 await client.pubsub_client.unsubscribe( 1199 try:
1200 await client.pubsub_client.unsubscribe(
1200 service, 1201 service,
1201 nodeIdentifier, 1202 nodeIdentifier,
1202 sub_jid or client.jid.userhostJID(), 1203 sub_jid or client.jid.userhostJID(),
1203 subscriptionIdentifier, 1204 subscriptionIdentifier,
1204 sender, 1205 sender,
1205 ) 1206 )
1207 except error.StanzaError as e:
1208 try:
1209 next(e.getElement().elements(pubsub.NS_PUBSUB_ERRORS, "not-subscribed"))
1210 except StopIteration:
1211 raise e
1212 else:
1213 log.info(
1214 f"{sender.full() if sender else client.jid.full()} was not "
1215 f"subscribed to node {nodeIdentifier!s} at {service.full()}"
1216 )
1206 1217
1207 @utils.ensure_deferred 1218 @utils.ensure_deferred
1208 async def _subscriptions( 1219 async def _subscriptions(
1209 self, 1220 self,
1210 service="", 1221 service="",