Fix disco browser example to handle errors.

This commit is contained in:
Lance Stout 2012-08-07 16:44:52 -07:00
parent aebcf6ff82
commit 295d23ccf3

View file

@ -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()