From 1ccb54e571d62955c0fffa19edb0a83547766a75 Mon Sep 17 00:00:00 2001 From: Goffi Date: Sun, 14 Apr 2019 08:21:51 +0200 Subject: [PATCH] tools (sat_defer), plugin XEP-0060: added a function "stanza2NotFound" to convert item-not-found StanzaError to exceptions.NotFound in an errback --- sat/plugins/plugin_xep_0060.py | 1 + sat/tools/sat_defer.py | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/sat/plugins/plugin_xep_0060.py b/sat/plugins/plugin_xep_0060.py index b9a1c213..c87609d0 100644 --- a/sat/plugins/plugin_xep_0060.py +++ b/sat/plugins/plugin_xep_0060.py @@ -611,6 +611,7 @@ class XEP_0060(object): ) # we have no MAM data here, so we add None d.addCallback(lambda data: data + (None,)) + d.addErrback(sat_defer.stanza2NotFound) d.addTimeout(TIMEOUT, reactor) else: # if mam is requested, we have to do a totally different query diff --git a/sat/tools/sat_defer.py b/sat/tools/sat_defer.py index 820efe56..82a7cf51 100644 --- a/sat/tools/sat_defer.py +++ b/sat/tools/sat_defer.py @@ -26,6 +26,7 @@ from sat.core import exceptions from twisted.internet import defer from twisted.internet import error as internet_error from twisted.internet import reactor +from twisted.words.protocols.jabber import error as jabber_error from twisted.python import failure from sat.core.constants import Const as C from sat.memory import memory @@ -34,6 +35,14 @@ KEY_DEFERREDS = "deferreds" KEY_NEXT = "next_defer" +def stanza2NotFound(failure_): + """Convert item-not-found StanzaError to exceptions.NotFound""" + failure_.trap(jabber_error.StanzaError) + if failure_.value.condition == u'item-not-found': + raise exceptions.NotFound(failure_.value.text or failure_.value.condition) + return failure_ + + class DelayedDeferred(object): """A Deferred-like which is launched after a delay"""