diff options
author | Lance Stout <lancestout@gmail.com> | 2011-08-12 16:47:58 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2011-08-12 16:47:58 -0700 |
commit | 484efff156e344fc3ca1a7377539132b702c0c78 (patch) | |
tree | fa051515b9dc15eb3a5ab1a8e8b9c2e25b920d17 /sleekxmpp/plugins/xep_0004/dataforms.py | |
parent | 89cffd43f48cfc835b70e137776eb8c2e73a0b67 (diff) | |
parent | 8f1d0e7a79b662e5f2849cea6e73716cc887e226 (diff) | |
download | slixmpp-484efff156e344fc3ca1a7377539132b702c0c78.tar.gz slixmpp-484efff156e344fc3ca1a7377539132b702c0c78.tar.bz2 slixmpp-484efff156e344fc3ca1a7377539132b702c0c78.tar.xz slixmpp-484efff156e344fc3ca1a7377539132b702c0c78.zip |
Merge branch 'develop' into roster
Conflicts:
setup.py
sleekxmpp/clientxmpp.py
Diffstat (limited to 'sleekxmpp/plugins/xep_0004/dataforms.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0004/dataforms.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0004/dataforms.py b/sleekxmpp/plugins/xep_0004/dataforms.py new file mode 100644 index 00000000..5414be5c --- /dev/null +++ b/sleekxmpp/plugins/xep_0004/dataforms.py @@ -0,0 +1,60 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import copy + +from sleekxmpp.thirdparty import OrderedDict + +from sleekxmpp import Message +from sleekxmpp.xmlstream import register_stanza_plugin, ElementBase, ET +from sleekxmpp.xmlstream.handler import Callback +from sleekxmpp.xmlstream.matcher import StanzaPath +from sleekxmpp.plugins.base import base_plugin +from sleekxmpp.plugins.xep_0004 import stanza +from sleekxmpp.plugins.xep_0004.stanza import Form, FormField, FieldOption + + +class xep_0004(base_plugin): + """ + XEP-0004: Data Forms + """ + + def plugin_init(self): + self.xep = '0004' + self.description = 'Data Forms' + self.stanza = stanza + + self.xmpp.registerHandler( + Callback('Data Form', + StanzaPath('message/form'), + self.handle_form)) + + register_stanza_plugin(FormField, FieldOption, iterable=True) + register_stanza_plugin(Form, FormField, iterable=True) + register_stanza_plugin(Message, Form) + + def make_form(self, ftype='form', title='', instructions=''): + f = Form() + f['type'] = ftype + f['title'] = title + f['instructions'] = instructions + return f + + def post_init(self): + base_plugin.post_init(self) + self.xmpp.plugin['xep_0030'].add_feature('jabber:x:data') + + def handle_form(self, message): + self.xmpp.event("message_xform", message) + + def build_form(self, xml): + return Form(xml=xml) + + +xep_0004.makeForm = xep_0004.make_form +xep_0004.buildForm = xep_0004.build_form |