Skip to content

Instantly share code, notes, and snippets.

@legastero
legastero / XMPP-TDG_ex_2-2.py
Created May 22, 2010 13:00
Changes needed to make XMPP-TDG example 2-2 work with SleekXMPP version 1.0
def handleIncomingMessage(self, message):
self.xmpp.sendMessage(message["from"], message["body"])
@legastero
legastero / XMPP-TDG_ex_14-1.py
Created May 22, 2010 13:02
Changes needed to make XMPP-TDG example 14-1 work with SleekXMPP version 1.0
def handleIncomingXMPPEvent(self, event):
msgLocations = {sleekxmpp.stanza.presence.Presence: "status",
sleekxmpp.stanza.message.Message: "body"}
message = event[msgLocations[type(event)]]
user = self.backend.getUserFromJID(event["from"].jid)
if user is not None:
self.backend.addMessageFromUser(message, user)
def handleMessageAddedToBackend(self, message) :
@legastero
legastero / XMPP-TDG_ex_14-3.py
Created May 22, 2010 13:03
Changes needed to make XMPP-TDG example 14-3 work with SleekXMPP version 1.0
def handleConfigurationCommand(self, form, sessionId):
values = form.getValues()
monitorPresence =values["monitorPresence"]
jid = self.xmpp.plugin["xep_0050"].sessions[sessionId]["jid"]
user = self.backend.getUserFromJID(jid)
self.backend.setShouldMonitorPresenceFromUser(user, monitorPresence)
def handleIncomingXMPPPresence(self, event):
user = self.backend.getUserFromJID(event["from"].jid)
if user is not None:
@legastero
legastero / XMPP-TDG_ex_14-4.py
Created May 22, 2010 13:05
Changes needed to make XMPP-TDG example 14-4 work with SleekXMPP version 1.0
def handleXMPPPresenceProbe(self, event) :
self.xmpp.sendPresence(pto = event["from"])
def handleXMPPPresenceSubscription(self, subscription) :
if subscription["type"] == "subscribe" :
userJID = subscription["from"].jid
self.xmpp.sendPresenceSubscription(pto=userJID, ptype="subscribed")
self.xmpp.sendPresence(pto = userJID)
self.xmpp.sendPresenceSubscription(pto=userJID, ptype="subscribe")
@legastero
legastero / XMPP-TDG_ex_14-7.py
Created May 22, 2010 13:08
Changes needed to make XMPP-TDG example 14-7 work with SleekXMPP version 1.0
def handleIncomingXMPPMessage(self, event) :
message = self.addRecipientToMessage(event["body"], event["to"].jid)
user = self.backend.getUserFromJID(event["from"].jid)
self.backend.addMessageFromUser(message, user)
def handleIncomingXMPPPresence(self, event) :
if event["to"].jid == self.componentDomain :
user = self.backend.getUserFromJID(event["from"].jid)
self.backend.addMessageFromUser(event["status"], user)
@legastero
legastero / message_stanza_example.py
Created May 28, 2010 03:26
handleMessage Example
def handleMessage(self, msg):
print (msg.keys()) # prints (to, from, type, body, subject, mucroom, mucnick)
print (msg['body']) # prints the message body
msg.reply("Thanks for sending me \"%(body)s\"" % msg).send()
@legastero
legastero / task_stanza_example.xml
Created May 28, 2010 04:11
A sample stanza for demonstrating creating stanza objects.
<iq type="set">
<task id="123" xmlns="example:task">
<command>python script.py</command>
<cleanup>rm temp.txt</cleanup>
<param>
<name>foo</name>
<value>fizz</value>
</param>
<param>
<name>bar</name>
@legastero
legastero / stanza_objects_example_1.py
Created May 28, 2010 04:34
Code example #1 in creating custom stanza objects using the Task example.
import sleekxmpp
from sleekxmpp.xmlstream.stanzabase import ElementBase, ET, JID
from sleekxmpp.stanza.iq import Iq
class Param(ElementBase):
namespace = 'example:task'
name = 'param'
plugin_attrib = 'param'
interfaces = set(('name', 'value'))
sub_interfaces = interfaces
@legastero
legastero / stanza_objects_example_2.py
Created May 28, 2010 05:20
Code example #2 for creating custom stanza objects using the Task example.
import sleekxmpp
from sleekxmpp.xmlstream.stanzabase import ElementBase, ET, JID
from sleekxmpp.stanza.iq import Iq
class Param(ElementBase):
namespace = 'example:task'
name = 'param'
plugin_attrib = 'param'
interfaces = set(('name', 'value'))
sub_interfaces = interfaces
@legastero
legastero / stream_event_handler_reg.py
Created May 28, 2010 15:05
Registering a stream event handler.
# If self.xmpp is a SleekXMPP object and Task is a stanza object class
# See the wiki page Stanza Objects for details on Task
self.xmpp.registerHandler(
Callback('Example Handler',
MatchXPath('{%s}iq/{%s}task' % (self.xmpp.default_ns, Task.namespace),
self.handle_task))