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
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
35 self.send_presence()
36 self.get_roster()
37
42
44 recv_event = Event(event='receive', interface='xmpp', \
45 identifier=self.identifier)
46 trigger(recv_event, msg)
47
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
64 jid = JID(to)
65 self.send_message(mto=jid,
66 mbody=msg,
67 mtype='chat')
68