Fixing non-ascii support
[theonering] / hand_tests / tp_account.py
1 #!/usr/bin/env python
2
3 import logging
4
5 import dbus
6 import telepathy
7
8
9 _moduleLogger = logging.getLogger(__name__)
10
11
12 DBUS_PROPERTIES = 'org.freedesktop.DBus.Properties'
13
14
15 class Account(telepathy.client.interfacefactory.InterfaceFactory):
16
17         def __init__(self, object_path, bus=None):
18                 if not bus:
19                         bus = dbus.Bus()
20                 service_name = 'org.freedesktop.Telepathy.AccountManager'
21                 #service_name = object_path.replace('/', '.')[1:]
22
23                 object = bus.get_object(service_name, object_path)
24                 telepathy.client.interfacefactory.InterfaceFactory.__init__(self, object, telepathy.interfaces.ACCOUNT)
25
26                 self[DBUS_PROPERTIES].Get(
27                         telepathy.interfaces.ACCOUNT,
28                         'Interfaces',
29                         reply_handler=self._on_get,
30                         error_handler=self._on_error,
31                 )
32
33         def _on_get(self, stuff):
34                 self.get_valid_interfaces().update(stuff)
35
36         def _on_error(self, *args):
37                 _moduleLogger.error(args)
38
39
40 def _process_acct_path(acct_path):
41         print "Account:", acct_path
42         acct = Account(acct_path)
43         conn = acct[DBUS_PROPERTIES].Get(telepathy.interfaces.ACCOUNT, 'Connection')
44         print "Connection:", conn
45         if conn == "/":
46                 return
47         conn = telepathy.client.Connection(conn.replace('/', '.')[1:], conn)
48         conn.call_when_ready(lambda con: _show_conn(acct, acct_path, con))
49
50
51 def _show_conn(acct, path, conn):
52         print path
53         print "\t", repr(acct)
54         print "\t", repr(conn)
55         acct["com.nokia.Account.Interface.ChannelRequests"].EnsureChannel(
56                 {
57                         telepathy.interfaces.CHANNEL+".ChannelType": telepathy.interfaces.CHANNEL_TYPE_STREAMED_MEDIA,
58                         telepathy.interfaces.CHANNEL+".TargetHandleType": telepathy.constants.HANDLE_TYPE_CONTACT,
59                         telepathy.interfaces.CHANNEL+".TargetID": "512-961-6001",
60                 },
61                 0,
62                 "",
63                 reply_handler=lambda *args: _on_ensure("good", path, *args),
64                 error_handler=lambda *args: _on_ensure("bad", path, *args),
65         )
66
67
68 def _on_ensure(state, acct_path, *args):
69         print state
70         print "\t", acct_path
71         print "\tEnsure:", args
72
73
74 if __name__ == '__main__':
75         import gobject
76         from dbus.mainloop.glib import DBusGMainLoop
77         import accountmgr
78
79         DBusGMainLoop(set_as_default=True)
80
81         am = accountmgr.AccountManager()
82         for acct_path in am[DBUS_PROPERTIES].Get(telepathy.interfaces.ACCOUNT_MANAGER, 'ValidAccounts'):
83                 _process_acct_path(acct_path)
84
85         gobject.MainLoop().run()