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