diff options
author | Nathan Fritz <fritzy@netflint.net> | 2011-08-12 16:36:03 -0700 |
---|---|---|
committer | Nathan Fritz <fritzy@netflint.net> | 2011-08-12 16:36:03 -0700 |
commit | 8f1d0e7a79b662e5f2849cea6e73716cc887e226 (patch) | |
tree | ec2fe16b50effd4ba5787a57de00c514fad4f333 /sleekxmpp/plugins/xep_0004/dataforms.py | |
parent | 88184ff9556774b1be3dc7fcb97f1f71803d2d61 (diff) | |
parent | 9b7ed73f95145f88887d6fc3daa1bd2a9596b943 (diff) | |
download | slixmpp-8f1d0e7a79b662e5f2849cea6e73716cc887e226.tar.gz slixmpp-8f1d0e7a79b662e5f2849cea6e73716cc887e226.tar.bz2 slixmpp-8f1d0e7a79b662e5f2849cea6e73716cc887e226.tar.xz slixmpp-8f1d0e7a79b662e5f2849cea6e73716cc887e226.zip |
Merge branch 'develop' of github.com:fritzy/SleekXMPP into develop
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 |