9 _moduleLogger = logging.getLogger(__name__)
12 DBUS_PROPERTIES = 'org.freedesktop.DBus.Properties'
15 class Account(telepathy.client.interfacefactory.InterfaceFactory):
17 def __init__(self, object_path, bus=None):
20 service_name = 'org.freedesktop.Telepathy.AccountManager'
21 #service_name = object_path.replace('/', '.')[1:]
23 object = bus.get_object(service_name, object_path)
24 telepathy.client.interfacefactory.InterfaceFactory.__init__(self, object, telepathy.interfaces.ACCOUNT)
26 self[DBUS_PROPERTIES].Get(
27 telepathy.interfaces.ACCOUNT,
29 reply_handler=self._on_get,
30 error_handler=self._on_error,
33 def _on_get(self, stuff):
34 self.get_valid_interfaces().update(stuff)
36 def _on_error(self, *args):
37 _moduleLogger.error(args)
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
47 conn = telepathy.client.Connection(conn.replace('/', '.')[1:], conn)
48 conn.call_when_ready(lambda con: _show_conn(acct, acct_path, con))
51 def _show_conn(acct, path, conn):
53 print "\t", repr(acct)
54 print "\t", repr(conn)
55 acct["com.nokia.Account.Interface.ChannelRequests"].EnsureChannel(
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",
63 reply_handler=lambda *args: _on_ensure("good", path, *args),
64 error_handler=lambda *args: _on_ensure("bad", path, *args),
68 def _on_ensure(state, acct_path, *args):
71 print "\tEnsure:", args
74 if __name__ == '__main__':
76 from dbus.mainloop.glib import DBusGMainLoop
79 DBusGMainLoop(set_as_default=True)
81 am = accountmgr.AccountManager()
82 for acct_path in am[DBUS_PROPERTIES].Get(telepathy.interfaces.ACCOUNT_MANAGER, 'ValidAccounts'):
83 _process_acct_path(acct_path)
85 gobject.MainLoop().run()