2e82c9c0603149074f6e70aff265d62ef6ec1d12
[python-purple] / nullclient.py
1 import purple
2 import ecore
3 import getpass
4 import sys
5
6 cbs = {}
7 conv_cbs = {}
8
9 def callback(name):
10     print "---- callback example: %s" % name
11
12 conv_cbs["create_conversation"] = callback
13 conv_cbs["destroy_conversation"] = callback
14 conv_cbs["write_chat"] = callback
15 conv_cbs["write_im"] = callback
16 conv_cbs["write_conv"] = callback
17 conv_cbs["chat_add_users"] = callback
18 conv_cbs["chat_rename_user"] = callback
19 conv_cbs["chat_remove_users"] = callback
20 conv_cbs["chat_update_user"] = callback
21 conv_cbs["present"] = callback
22 conv_cbs["has_focus"] = callback
23 conv_cbs["custom_smiley_add"] = callback
24 conv_cbs["custom_smiley_write"] = callback
25 conv_cbs["custom_smiley_close"] = callback
26 conv_cbs["send_confirm"] = callback
27
28 cbs["conversation"] = conv_cbs
29
30 class NullClient:
31     def __init__(self):
32         self.p = purple.Purple()
33         self.account = None
34
35     def execute(self):
36         global cbs
37         self.p.purple_init(cbs)
38
39     def set_protocol(self, protocol):
40         for i in self.p.get_protocols():
41             if i[1] == protocol:
42                 print "-- NULLCLIENT --: Choosing %s as protocol" % protocol
43                 self.protocol = i[0]
44                 print "-- NULLCLIENT --: Protocol successfully chosen: %s" % i[0]
45                 return
46
47     def new_account(self, username, protocol, password):
48         self.account = purple.Account(username, protocol)
49         self.account.set_password(password)
50         self.account.set_enabled("carman-purple-python", True)
51     def get_buddies(self):
52         buddies = self.account.get_buddies_online()
53         print buddies
54
55 def getuser():
56     sys.stdout.write("GTalk account: ")
57     username = sys.stdin.readline()
58     return username[:-1]
59
60 def getpassword():
61     return getpass.getpass()
62
63 if __name__ == '__main__':
64
65     client = NullClient()
66     client.execute()
67     client.set_protocol("XMPP")
68     username = getuser()
69     password = getpassword()
70     client.new_account(username, client.protocol, password)
71
72     client.p.connect()
73     ecore.timer_add(20, client.get_buddies)
74     ecore.main_loop_begin()