diff options
Diffstat (limited to 'slixmpp/xmlstream/matcher/idsender.py')
-rw-r--r-- | slixmpp/xmlstream/matcher/idsender.py | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/slixmpp/xmlstream/matcher/idsender.py b/slixmpp/xmlstream/matcher/idsender.py index 8f5d0303..572f9d87 100644 --- a/slixmpp/xmlstream/matcher/idsender.py +++ b/slixmpp/xmlstream/matcher/idsender.py @@ -4,7 +4,19 @@ # Part of Slixmpp: The Slick XMPP Library # :copyright: (c) 2011 Nathanael C. Fritz # :license: MIT, see LICENSE for more details + from slixmpp.xmlstream.matcher.base import MatcherBase +from slixmpp.xmlstream.stanzabase import StanzaBase +from slixmpp.jid import JID +from slixmpp.types import TypedDict + +from typing import Dict + + +class CriteriaType(TypedDict): + self: JID + peer: JID + id: str class MatchIDSender(MatcherBase): @@ -14,25 +26,26 @@ class MatchIDSender(MatcherBase): interface value as the desired ID, and that the 'from' value is one of a set of approved entities that can respond to a request. """ + _criteria: CriteriaType - def match(self, xml): + def match(self, xml: StanzaBase) -> bool: """Compare the given stanza's ``'id'`` attribute to the stored ``id`` value, and verify the sender's JID. - :param xml: The :class:`~slixmpp.xmlstream.stanzabase.ElementBase` + :param xml: The :class:`~slixmpp.xmlstream.stanzabase.StanzaBase` stanza to compare against. """ selfjid = self._criteria['self'] peerjid = self._criteria['peer'] - allowed = {} + allowed: Dict[str, bool] = {} allowed[''] = True allowed[selfjid.bare] = True - allowed[selfjid.host] = True + allowed[selfjid.domain] = True allowed[peerjid.full] = True allowed[peerjid.bare] = True - allowed[peerjid.host] = True + allowed[peerjid.domain] = True _from = xml['from'] |