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.handler import Callback
from slixmpp.xmlstream.matcher import StanzaPath
from slixmpp.util import MemoryCache
from slixmpp import asyncio
from slixmpp.exceptions import XMPPError, IqError, IqTimeout
from slixmpp.plugins import BasePlugin
@ -37,7 +38,8 @@ class XEP_0115(BasePlugin):
default_config = {
'hash': 'sha-1',
'caps_node': None,
'broadcast': True
'broadcast': True,
'cache': None,
}
def plugin_init(self):
@ -48,6 +50,9 @@ class XEP_0115(BasePlugin):
if self.caps_node is None:
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(StreamFeatures, stanza.Capabilities)

View file

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