XEP-0115: Use the new cache system.
This commit is contained in:
parent
037912ee89
commit
128cc2eeb4
@ -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)
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user