xep-0231: fix TypeError when BoB cannot be found
Although it is not documented whether the get_bob API call can return None, the default implementation can, which raises a TypeError when the requested BoB is not available. This commit prevents such TypeError by raising a XMPPError instead. References: https://todo.sr.ht/~nicoco/slidcord/23
This commit is contained in:
parent
db8ce9187c
commit
b94c6716f7
@ -10,6 +10,7 @@ from asyncio import Future
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from slixmpp import JID
|
from slixmpp import JID
|
||||||
|
from slixmpp.exceptions import XMPPError
|
||||||
from slixmpp.stanza import Iq, Message, Presence
|
from slixmpp.stanza import Iq, Message, Presence
|
||||||
from slixmpp.xmlstream.handler import CoroutineCallback
|
from slixmpp.xmlstream.handler import CoroutineCallback
|
||||||
from slixmpp.xmlstream.matcher import StanzaPath
|
from slixmpp.xmlstream.matcher import StanzaPath
|
||||||
@ -139,6 +140,13 @@ class XEP_0231(BasePlugin):
|
|||||||
self.xmpp.event('bob', iq)
|
self.xmpp.event('bob', iq)
|
||||||
elif iq['type'] == 'get':
|
elif iq['type'] == 'get':
|
||||||
data = await self.api['get_bob'](iq['to'], None, iq['from'], args=cid)
|
data = await self.api['get_bob'](iq['to'], None, iq['from'], args=cid)
|
||||||
|
|
||||||
|
if data is None:
|
||||||
|
raise XMPPError(
|
||||||
|
"item-not-found",
|
||||||
|
f"Bits of binary '{cid}' is not available",
|
||||||
|
)
|
||||||
|
|
||||||
if isinstance(data, Iq):
|
if isinstance(data, Iq):
|
||||||
data['id'] = iq['id']
|
data['id'] = iq['id']
|
||||||
data.send()
|
data.send()
|
||||||
|
Loading…
Reference in New Issue
Block a user