diff options
Diffstat (limited to 'sleekxmpp/plugins/xep_0079')
-rw-r--r-- | sleekxmpp/plugins/xep_0079/__init__.py | 18 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0079/amp.py | 79 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0079/stanza.py | 96 |
3 files changed, 0 insertions, 193 deletions
diff --git a/sleekxmpp/plugins/xep_0079/__init__.py b/sleekxmpp/plugins/xep_0079/__init__.py deleted file mode 100644 index 09e66715..00000000 --- a/sleekxmpp/plugins/xep_0079/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -""" - SleekXMPP: The Sleek XMPP Library - Copyright (C) 2013 Nathanael C. Fritz, Lance J.T. Stout - This file is part of SleekXMPP. - - See the file LICENSE for copying permission. -""" - -from sleekxmpp.plugins.base import register_plugin - -from sleekxmpp.plugins.xep_0079.stanza import ( - AMP, Rule, InvalidRules, UnsupportedConditions, - UnsupportedActions, FailedRules, FailedRule, - AMPFeature) -from sleekxmpp.plugins.xep_0079.amp import XEP_0079 - - -register_plugin(XEP_0079) diff --git a/sleekxmpp/plugins/xep_0079/amp.py b/sleekxmpp/plugins/xep_0079/amp.py deleted file mode 100644 index 918fb841..00000000 --- a/sleekxmpp/plugins/xep_0079/amp.py +++ /dev/null @@ -1,79 +0,0 @@ -""" - SleekXMPP: The Sleek XMPP Library - Copyright (C) 2013 Nathanael C. Fritz, Lance J.T. Stout - This file is part of SleekXMPP. - - See the file LICENSE for copying permissio -""" - -import logging - -from sleekxmpp.stanza import Message, Error, StreamFeatures -from sleekxmpp.xmlstream import register_stanza_plugin -from sleekxmpp.xmlstream.matcher import StanzaPath, MatchMany -from sleekxmpp.xmlstream.handler import Callback -from sleekxmpp.plugins import BasePlugin -from sleekxmpp.plugins.xep_0079 import stanza - - -log = logging.getLogger(__name__) - - -class XEP_0079(BasePlugin): - - """ - XEP-0079 Advanced Message Processing - """ - - name = 'xep_0079' - description = 'XEP-0079: Advanced Message Processing' - dependencies = set(['xep_0030']) - stanza = stanza - - def plugin_init(self): - register_stanza_plugin(Message, stanza.AMP) - register_stanza_plugin(Error, stanza.InvalidRules) - register_stanza_plugin(Error, stanza.UnsupportedConditions) - register_stanza_plugin(Error, stanza.UnsupportedActions) - register_stanza_plugin(Error, stanza.FailedRules) - - self.xmpp.register_handler( - Callback('AMP Response', - MatchMany([ - StanzaPath('message/error/failed_rules'), - StanzaPath('message/amp') - ]), - self._handle_amp_response)) - - if not self.xmpp.is_component: - self.xmpp.register_feature('amp', - self._handle_amp_feature, - restart=False, - order=9000) - register_stanza_plugin(StreamFeatures, stanza.AMPFeature) - - def plugin_end(self): - self.xmpp.remove_handler('AMP Response') - - def _handle_amp_response(self, msg): - log.debug('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - if msg['type'] == 'error': - self.xmpp.event('amp_error', msg) - elif msg['amp']['status'] in ('alert', 'notify'): - self.xmpp.event('amp_%s' % msg['amp']['status'], msg) - - def _handle_amp_feature(self, features): - log.debug('Advanced Message Processing is available.') - self.xmpp.features.add('amp') - - def discover_support(self, jid=None, **iqargs): - if jid is None: - if self.xmpp.is_component: - jid = self.xmpp.server_host - else: - jid = self.xmpp.boundjid.host - - return self.xmpp['xep_0030'].get_info( - jid=jid, - node='http://jabber.org/protocol/amp', - **iqargs) diff --git a/sleekxmpp/plugins/xep_0079/stanza.py b/sleekxmpp/plugins/xep_0079/stanza.py deleted file mode 100644 index cb6932d6..00000000 --- a/sleekxmpp/plugins/xep_0079/stanza.py +++ /dev/null @@ -1,96 +0,0 @@ -""" - SleekXMPP: The Sleek XMPP Library - Copyright (C) 2013 Nathanael C. Fritz, Lance J.T. Stout - This file is part of SleekXMPP. - - See the file LICENSE for copying permission. -""" - -from __future__ import unicode_literals - -from sleekxmpp.xmlstream import ElementBase, register_stanza_plugin - - -class AMP(ElementBase): - namespace = 'http://jabber.org/protocol/amp' - name = 'amp' - plugin_attrib = 'amp' - interfaces = set(['from', 'to', 'status', 'per_hop']) - - def get_from(self): - return JID(self._get_attr('from')) - - def set_from(self, value): - return self._set_attr('from', str(value)) - - def get_to(self): - return JID(self._get_attr('from')) - - def set_to(self, value): - return self._set_attr('to', str(value)) - - def get_per_hop(self): - return self._get_attr('per-hop') == 'true' - - def set_per_hop(self, value): - if value: - return self._set_attr('per-hop', 'true') - else: - return self._del_attr('per-hop') - - def del_per_hop(self): - return self._del_attr('per-hop') - - def add_rule(self, action, condition, value): - rule = Rule(parent=self) - rule['action'] = action - rule['condition'] = condition - rule['value'] = value - - -class Rule(ElementBase): - namespace = 'http://jabber.org/protocol/amp' - name = 'rule' - plugin_attrib = name - plugin_multi_attrib = 'rules' - interfaces = set(['action', 'condition', 'value']) - - -class InvalidRules(ElementBase): - namespace = 'http://jabber.org/protocol/amp' - name = 'invalid-rules' - plugin_attrib = 'invalid_rules' - - -class UnsupportedConditions(ElementBase): - namespace = 'http://jabber.org/protocol/amp' - name = 'unsupported-conditions' - plugin_attrib = 'unsupported_conditions' - - -class UnsupportedActions(ElementBase): - namespace = 'http://jabber.org/protocol/amp' - name = 'unsupported-actions' - plugin_attrib = 'unsupported_actions' - - -class FailedRule(Rule): - namespace = 'http://jabber.org/protocol/amp#errors' - - -class FailedRules(ElementBase): - namespace = 'http://jabber.org/protocol/amp#errors' - name = 'failed-rules' - plugin_attrib = 'failed_rules' - - -class AMPFeature(ElementBase): - namespace = 'http://jabber.org/features/amp' - name = 'amp' - - -register_stanza_plugin(AMP, Rule, iterable=True) -register_stanza_plugin(InvalidRules, Rule, iterable=True) -register_stanza_plugin(UnsupportedConditions, Rule, iterable=True) -register_stanza_plugin(UnsupportedActions, Rule, iterable=True) -register_stanza_plugin(FailedRules, FailedRule, iterable=True) |