Fix disco browser example to handle errors.
This commit is contained in:
parent
aebcf6ff82
commit
295d23ccf3
1 changed files with 44 additions and 39 deletions
|
@ -15,6 +15,7 @@ import getpass
|
|||
from optparse import OptionParser
|
||||
|
||||
import sleekxmpp
|
||||
from sleekxmpp.exceptions import IqError, IqTimeout
|
||||
|
||||
|
||||
# Python versions before 3.0 do not use UTF-8 encoding
|
||||
|
@ -83,6 +84,7 @@ class Disco(sleekxmpp.ClientXMPP):
|
|||
self.get_roster()
|
||||
self.send_presence()
|
||||
|
||||
try:
|
||||
if self.get in self.info_types:
|
||||
# By using block=True, the result stanza will be
|
||||
# returned. Execution will block until the reply is
|
||||
|
@ -92,7 +94,7 @@ class Disco(sleekxmpp.ClientXMPP):
|
|||
info = self['xep_0030'].get_info(jid=self.target_jid,
|
||||
node=self.target_node,
|
||||
block=True)
|
||||
if self.get in self.items_types:
|
||||
elif self.get in self.items_types:
|
||||
# The same applies from above. Listen for the
|
||||
# disco_items event or pass a callback function
|
||||
# if you need to process a non-blocking request.
|
||||
|
@ -101,9 +103,12 @@ class Disco(sleekxmpp.ClientXMPP):
|
|||
block=True)
|
||||
else:
|
||||
logging.error("Invalid disco request type.")
|
||||
self.disconnect()
|
||||
return
|
||||
|
||||
except IqError as e:
|
||||
logging.error("Entity returned an error: %s" % e.iq['error']['condition'])
|
||||
except IqTimeout:
|
||||
logging.error("No response received.")
|
||||
else:
|
||||
header = 'XMPP Service Discovery: %s' % self.target_jid
|
||||
print(header)
|
||||
print('-' * len(header))
|
||||
|
@ -125,7 +130,7 @@ class Disco(sleekxmpp.ClientXMPP):
|
|||
print('Items:')
|
||||
for item in items['disco_items']['items']:
|
||||
print(' - %s' % str(item))
|
||||
|
||||
finally:
|
||||
self.disconnect()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue