Add stream feature for server support of subscription pre-approvals.

This commit is contained in:
Lance Stout 2012-07-30 19:30:01 -07:00
parent 8742a56b3e
commit 8009b0485e
5 changed files with 78 additions and 2 deletions

View file

@ -113,9 +113,10 @@ class ClientXMPP(BaseXMPP):
self.register_plugin('feature_starttls') self.register_plugin('feature_starttls')
self.register_plugin('feature_bind') self.register_plugin('feature_bind')
self.register_plugin('feature_session') self.register_plugin('feature_session')
self.register_plugin('feature_rosterver')
self.register_plugin('feature_preapproval')
self.register_plugin('feature_mechanisms', self.register_plugin('feature_mechanisms',
pconfig={'use_mech': sasl_mech} if sasl_mech else None) pconfig={'use_mech': sasl_mech} if sasl_mech else None)
self.register_plugin('feature_rosterver')
@property @property
def password(self): def password(self):

View file

@ -11,5 +11,6 @@ __all__ = [
'feature_mechanisms', 'feature_mechanisms',
'feature_bind', 'feature_bind',
'feature_session', 'feature_session',
'feature_rosterver' 'feature_rosterver',
'feature_preapproval'
] ]

View file

@ -0,0 +1,15 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
from sleekxmpp.plugins.base import register_plugin
from sleekxmpp.features.feature_preapproval.preapproval import FeaturePreApproval
from sleekxmpp.features.feature_preapproval.stanza import PreApproval
register_plugin(FeaturePreApproval)

View file

@ -0,0 +1,42 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
import logging
from sleekxmpp.stanza import Iq, StreamFeatures
from sleekxmpp.features.feature_preapproval import stanza
from sleekxmpp.xmlstream import register_stanza_plugin
from sleekxmpp.plugins.base import BasePlugin
log = logging.getLogger(__name__)
class FeaturePreApproval(BasePlugin):
name = 'feature_preapproval'
description = 'RFC 6121: Stream Feature: Subscription Pre-Approval'
dependences = set()
stanza = stanza
def plugin_init(self):
self.xmpp.register_feature('preapproval',
self._handle_preapproval,
restart=False,
order=9001)
register_stanza_plugin(StreamFeatures, stanza.PreApproval)
def _handle_preapproval(self, features):
"""Save notice that the server support subscription pre-approvals.
Arguments:
features -- The stream features stanza.
"""
log.debug("Server supports subscription pre-approvals.")
self.xmpp.features.add('preapproval')

View file

@ -0,0 +1,17 @@
"""
SleekXMPP: The Sleek XMPP Library
Copyright (C) 2012 Nathanael C. Fritz
This file is part of SleekXMPP.
See the file LICENSE for copying permission.
"""
from sleekxmpp.xmlstream import ElementBase
class PreApproval(ElementBase):
name = 'sub'
namespace = 'urn:xmpp:features:pre-approval'
interfaces = set()
plugin_attrib = 'preapproval'