# Slixmpp: The Slick XMPP Library# Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout# This file is part of Slixmpp.# See the file LICENSE for copying permission.importloggingfromasyncioimportFuturefromtypingimport(List,Optional,Set,Union,)fromslixmpp.stanzaimportIqfromslixmpp.pluginsimportBasePluginfromslixmpp.xmlstream.handlerimportCallbackfromslixmpp.xmlstream.matcherimportStanzaPathfromslixmpp.xmlstreamimportregister_stanza_plugin,JIDfromslixmpp.plugins.xep_0191importstanza,Block,Unblock,BlockListlog=logging.getLogger(__name__)BlockedJIDs=Union[JID,Set[JID],List[JID]]
[docs]defget_blocked(self,ifrom:Optional[JID]=None,**iqkwargs)->Future:"""Get the list of blocked JIDs."""iq=self.xmpp.make_iq_get(ifrom=ifrom)iq.enable('blocklist')returniq.send(**iqkwargs)
[docs]defblock(self,jids:BlockedJIDs,ifrom:Optional[JID]=None,**iqkwargs)->Future:"""Block a JID or a list of JIDs. :param jids: JID(s) to block. """iq=self.xmpp.make_iq_set(ifrom=ifrom)ifnotisinstance(jids,(set,list)):jids=[jids]iq['block']['items']=jidsreturniq.send(**iqkwargs)
[docs]defunblock(self,jids:BlockedJIDs,ifrom:Optional[JID]=None,**iqkwargs)->Future:"""Unblock a JID or a list of JIDs. :param jids: JID(s) to unblock. """ifjidsisNone:raiseValueError("jids cannot be empty.")iq=self.xmpp.make_iq_set(ifrom=ifrom)ifnotisinstance(jids,(set,list)):jids=[jids]iq['unblock']['items']=jidsreturniq.send(**iqkwargs)