Echo_bot: Add documentation for expect_problems

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
Maxime “pep” Buquet 2019-09-02 02:28:39 +02:00
parent 153edfb564
commit e6ce39bcc9
Signed by: pep
GPG key ID: DEDA74AEECA9D0F2

View file

@ -173,7 +173,7 @@ class EchoBot(ClientXMPP):
# `recipients` parameter that requires for a list of JIDs, # `recipients` parameter that requires for a list of JIDs,
# allows you to encrypt for 1:1 as well as groupchats (MUC). # allows you to encrypt for 1:1 as well as groupchats (MUC).
# #
# TODO: Document expect_problems # `expect_problems`: See EncryptionPrepareException handling.
recipients = [mto] recipients = [mto]
encrypt = await self['xep_0384'].encrypt_message(body, recipients, expect_problems) encrypt = await self['xep_0384'].encrypt_message(body, recipients, expect_problems)
msg.append(encrypt) msg.append(encrypt)
@ -186,9 +186,20 @@ class EchoBot(ClientXMPP):
self['xep_0384'].trust(exn.bare_jid, exn.device, exn.ik) self['xep_0384'].trust(exn.bare_jid, exn.device, exn.ik)
# TODO: catch NoEligibleDevicesException # TODO: catch NoEligibleDevicesException
except EncryptionPrepareException as exn: except EncryptionPrepareException as exn:
# This exception is being raised when the library has tried
# all it could and doesn't know what to do anymore. It
# contains a list of exceptions that the user must resolve, or
# explicitely ignore via `expect_problems`.
# TODO: We might need to bail out here if errors are the same? # TODO: We might need to bail out here if errors are the same?
for error in exn.errors: for error in exn.errors:
if isinstance(error, MissingBundleException): if isinstance(error, MissingBundleException):
# We choose to ignore MissingBundleException. It seems
# to be somewhat accepted that it's better not to
# encrypt for a device if it has problems and encrypt
# for the rest, rather than error out. The "faulty"
# device won't be able to decrypt and should display a
# generic message. The receiving end-user at this
# point can bring up the issue if it happens.
self.plain_reply( self.plain_reply(
original_msg, original_msg,
'Could not find keys for device "%d" of recipient "%s". Skipping.' % 'Could not find keys for device "%d" of recipient "%s". Skipping.' %