Package emma :: Package interface :: Package xmpp :: Module xmppclient
[hide private]
[frames] | no frames]

Source Code for Module emma.interface.xmpp.xmppclient

 1  """ 
 2  xmpp client 
 3   
 4  Simple xmpp implementation, is missing a lot of features 
 5   
 6  @copyright: (c) 2011 hackmeeting U{http://sindominio.net/hackmeeting} 
 7  @author: Ales Zabala Alava (Shagi) 
 8  @organization: hackmeeting U{http://sindominio.net/hackmeeting} 
 9  @contact: shagi@gisa-elkartea.org 
10  @license: 
11    This program is free software; you can redistribute it and/or 
12    modify it under the terms of the Do What The Fuck You Want To 
13    Public License, Version 2, as published by Sam Hocevar. See 
14    U{http://sam.zoy.org/projects/COPYING.WTFPL} for more details. 
15  """ 
16   
17  import re 
18  import logging 
19  import sleekxmpp 
20  from sleekxmpp.xmlstream.jid import JID 
21   
22  from emma.events import Event, subscribe, trigger 
23  from message import Message 
24   
25   
26 -class XMPPClient(sleekxmpp.ClientXMPP):
27 - def __init__(self, identifier, jid, password):
28 sleekxmpp.ClientXMPP.__init__(self, jid, password) 29 self.identifier = identifier 30 31 self.add_event_handler("session_start", self.start) 32 self.add_event_handler("message", self.message)
33
34 - def start(self, event):
35 self.send_presence() 36 self.get_roster()
37
38 - def message(self, event):
39 msg = Message(event) 40 self._trigger_rcv(msg) 41 self._trigger_cmd(msg)
42
43 - def _trigger_rcv(self, msg):
44 recv_event = Event(event='receive', interface='xmpp', \ 45 identifier=self.identifier) 46 trigger(recv_event, msg)
47
48 - def _trigger_cmd(self, msg):
49 s = msg['Body'].split(" ", 1) 50 if len(s) == 2: 51 cmd, args = s 52 else: 53 cmd = s[0] 54 args = "" 55 56 logging.info(_("[xmpp %(identifier)s] command received: %(cmd)s: " \ 57 "%(args)s") % {'identifier': self.identifier, 58 'cmd': cmd, 'args': args}) 59 cmd_event = Event(event='command', interface='xmpp', \ 60 identifier=self.identifier) 61 trigger(cmd_event, ((cmd, args), msg))
62
63 - def send_msg(self, to, msg):
64 jid = JID(to) 65 self.send_message(mto=jid, 66 mbody=msg, 67 mtype='chat')
68