XEP-0115: Use the new cache system.

This commit is contained in:
Emmanuel Gil Peyrot 2018-03-31 00:25:28 +02:00
parent 037912ee89
commit 128cc2eeb4
2 changed files with 11 additions and 4 deletions

View File

@ -15,6 +15,7 @@ from slixmpp.stanza import StreamFeatures, Presence, Iq
from slixmpp.xmlstream import register_stanza_plugin, JID from slixmpp.xmlstream import register_stanza_plugin, JID
from slixmpp.xmlstream.handler import Callback from slixmpp.xmlstream.handler import Callback
from slixmpp.xmlstream.matcher import StanzaPath from slixmpp.xmlstream.matcher import StanzaPath
from slixmpp.util import MemoryCache
from slixmpp import asyncio from slixmpp import asyncio
from slixmpp.exceptions import XMPPError, IqError, IqTimeout from slixmpp.exceptions import XMPPError, IqError, IqTimeout
from slixmpp.plugins import BasePlugin from slixmpp.plugins import BasePlugin
@ -37,7 +38,8 @@ class XEP_0115(BasePlugin):
default_config = { default_config = {
'hash': 'sha-1', 'hash': 'sha-1',
'caps_node': None, 'caps_node': None,
'broadcast': True 'broadcast': True,
'cache': None,
} }
def plugin_init(self): def plugin_init(self):
@ -48,6 +50,9 @@ class XEP_0115(BasePlugin):
if self.caps_node is None: if self.caps_node is None:
self.caps_node = 'http://slixmpp.com/ver/%s' % __version__ self.caps_node = 'http://slixmpp.com/ver/%s' % __version__
if self.cache is None:
self.cache = MemoryCache()
register_stanza_plugin(Presence, stanza.Capabilities) register_stanza_plugin(Presence, stanza.Capabilities)
register_stanza_plugin(StreamFeatures, stanza.Capabilities) register_stanza_plugin(StreamFeatures, stanza.Capabilities)

View File

@ -33,7 +33,6 @@ class StaticCaps(object):
self.disco = self.xmpp['xep_0030'] self.disco = self.xmpp['xep_0030']
self.caps = self.xmpp['xep_0115'] self.caps = self.xmpp['xep_0115']
self.static = static self.static = static
self.ver_cache = {}
self.jid_vers = {} self.jid_vers = {}
def supports(self, jid, node, ifrom, data): def supports(self, jid, node, ifrom, data):
@ -128,7 +127,7 @@ class StaticCaps(object):
info = data.get('info', None) info = data.get('info', None)
if not verstring or not info: if not verstring or not info:
return return
self.ver_cache[verstring] = info self.caps.cache.store(verstring, info)
def assign_verstring(self, jid, node, ifrom, data): def assign_verstring(self, jid, node, ifrom, data):
if isinstance(jid, JID): if isinstance(jid, JID):
@ -139,4 +138,7 @@ class StaticCaps(object):
return self.jid_vers.get(jid, None) return self.jid_vers.get(jid, None)
def get_caps(self, jid, node, ifrom, data): def get_caps(self, jid, node, ifrom, data):
return self.ver_cache.get(data.get('verstring', None), None) verstring = data.get('verstring', None)
if verstring is None:
return None
return self.caps.cache.retrieve(verstring)