In order to avoid a double effort, I'd like to understand the status (and targets) for the XEP-0009 Jabber-RPC plug-in.
I'm currently implementing missing pieces in the outgoing RPC functionality, as it seems a lot of the incoming part is already in place.
If you can provide me some feedback and pointers, it will allow me to shape this contribution in the spirit of the project.
The current goals for the XEP-0009 plugin are to possibly have it use stanza objects instead of directly manipulating XML, be PEP-8 compliant, and use the new layout for plugins if stanza objects are used (see either the new XEP-0030 plugin or the new_plugin branch with the XEP-0060 plugin).
PEP-8 compliance would be the main thing to aim for right now.
However, any improvements are welcome; XEP-0009 has been fairly low priority for now. Be sure to join the MUC (email@example.com) if you have any questions.
Thanks! I'll put this on the plan:
(1) PEP-8 compliance
(2) introduce stanza object pattern
(3) align plug-in layout
I'll take a look at the testing strategies involved. To be continued...
I've done an extensive overhaul; there are still a few issues, but it looks quite alright already.
I have a problem with the construction of Jabber-RPC error messages as outlined in the XEP.
I've created the stanza objects RPCQuery (iq['rpc_query]'), MethodCall and MethodResponse
However, for error messages returned after a method call,
iq.reply().error().set_payload(iq['rpc_query'].xml) does not fill in the entire original RPC query as I expected, just an empty element <query xmlns="jabber:iq:rpc />
I then add the error stanza
which comes out alright.
Any idea what is causing the payload problem?
That last post was truncated as it contained XML. ;)
<query xmlns="jabber:iq:rpc" />
The rest of the error code is filled in
iq['error']['code'] = ... etc.
which works as expected.
Any idea what might cause the payload to shrink like that? A XML namespace problem?
The payload issue is due to the ordering of things. The error() call removes all of the content from the Iq stanza. By the time you access iq['rpc_query'].xml, the XML has been cleared due to the .error() call. You will need to save the xml first, and then add it as the payload.
I have updated the master branch of my fork at git://github.com/TOMOTON/SleekXMPP.git with a major overhaul of the XEP-0009 plug-in.
I've tried as much as possible to:
- introduce PEP-8 compliance,
- create stanza objects,
- adopted the new plug-in layout.
The other changes are quite considerable: the plug-in now provides an additional extensive Python language binding. This binding allows developers to create Python classes and add methods to them, which can call or be called remotely.
I would appreciate some feedback on how to proceed from here. I'm not sure if it is possible to provide backwards compatibility with the previous implementation of the plug-in.
@dannmartens I'm going to mark this issue as closed due to it's age
XEP-0009 plugin is in SleekXMPP - if it is not working for you then please do open a new issue so I can see what needs to change.