diff options
Diffstat (limited to 'test/map-client')
-rwxr-xr-x | test/map-client | 231 |
1 files changed, 0 insertions, 231 deletions
diff --git a/test/map-client b/test/map-client deleted file mode 100755 index f3c657f7..00000000 --- a/test/map-client +++ /dev/null @@ -1,231 +0,0 @@ -#!/usr/bin/python - -from __future__ import absolute_import, print_function, unicode_literals - -import gobject - -import sys -import os -import dbus -import dbus.mainloop.glib -from optparse import OptionParser - -from pprint import pformat - -BUS_NAME='org.bluez.obex' -PATH = '/org/bluez/obex' -CLIENT_INTERFACE = 'org.bluez.obex.Client1' -SESSION_INTERFACE = 'org.bluez.obex.Session1' -MESSAGE_ACCESS_INTERFACE = 'org.bluez.obex.MessageAccess1' -MESSAGE_INTERFACE = 'org.bluez.obex.Message1' -TRANSFER_INTERFACE = 'org.bluez.obex.Transfer1' - -def unwrap(x): - """Hack to unwrap D-Bus values, so that they're easier to read when - printed. Taken from d-feet """ - - if isinstance(x, list): - return map(unwrap, x) - - if isinstance(x, tuple): - return tuple(map(unwrap, x)) - - if isinstance(x, dict): - return dict([(unwrap(k), unwrap(v)) for k, v in x.iteritems()]) - - for t in [unicode, str, long, int, float, bool]: - if isinstance(x, t): - return t(x) - - return x - -def parse_options(): - parser.add_option("-d", "--device", dest="device", - help="Device to connect", metavar="DEVICE") - parser.add_option("-c", "--chdir", dest="new_dir", - help="Change current directory to DIR", metavar="DIR") - parser.add_option("-l", "--lsdir", action="store_true", dest="ls_dir", - help="List folders in current directory") - parser.add_option("-v", "--verbose", action="store_true", dest="verbose") - parser.add_option("-L", "--lsmsg", action="store", dest="ls_msg", - help="List messages in supplied CWD subdir") - parser.add_option("-g", "--get", action="store", dest="get_msg", - help="Get message contents") - parser.add_option("-p", "--push", action="store", dest="push_msg", - help="Push message") - parser.add_option("--get-properties", action="store", dest="get_msg_properties", - help="Get message properties") - parser.add_option("--mark-read", action="store", dest="mark_msg_read", - help="Marks the messages as read") - parser.add_option("--mark-unread", action="store", dest="mark_msg_unread", - help="Marks the messages as unread") - parser.add_option("--mark-deleted", action="store", dest="mark_msg_deleted", - help="Deletes the message from the folder") - parser.add_option("--mark-undeleted", action="store", dest="mark_msg_undeleted", - help="Undeletes the message") - parser.add_option("-u", "--update-inbox", action="store_true", dest="update_inbox", - help="Checks for new mails") - - return parser.parse_args() - -def set_folder(session, new_dir): - session.SetFolder(new_dir) - -class MapClient: - def __init__(self, session_path, verbose=False): - self.progress = 0 - self.transfer_path = None - self.props = dict() - self.verbose = verbose - self.path = session_path - bus = dbus.SessionBus() - obj = bus.get_object(BUS_NAME, session_path) - self.session = dbus.Interface(obj, SESSION_INTERFACE) - self.map = dbus.Interface(obj, MESSAGE_ACCESS_INTERFACE) - bus.add_signal_receiver(self.properties_changed, - dbus_interface="org.freedesktop.DBus.Properties", - signal_name="PropertiesChanged", - path_keyword="path") - - def create_transfer_reply(self, path, properties): - self.transfer_path = path - self.props[path] = properties - if self.verbose: - print("Transfer created: %s (file %s)" % (path, - properties["Filename"])) - - def generic_reply(self): - if self.verbose: - print("Operation succeeded") - - def error(self, err): - print(err) - mainloop.quit() - - def transfer_complete(self, path): - if self.verbose: - print("Transfer finished") - properties = self.props.get(path) - if properties == None: - return - f = open(properties["Filename"], "r") - os.remove(properties["Filename"]) - print(f.readlines()) - - def transfer_error(self, path): - print("Transfer %s error" % path) - mainloop.quit() - - def properties_changed(self, interface, properties, invalidated, path): - req = self.props.get(path) - if req == None: - return - - if properties['Status'] == 'complete': - self.transfer_complete(path) - return - - if properties['Status'] == 'error': - self.transfer_error(path) - return - - def set_folder(self, new_dir): - self.map.SetFolder(new_dir) - - def list_folders(self): - for i in self.map.ListFolders(dict()): - print("%s/" % (i["Name"])) - - def list_messages(self, folder): - ret = self.map.ListMessages(folder, dict()) - print(pformat(unwrap(ret))) - - def get_message(self, handle): - self.map.ListMessages("", dict()) - path = self.path + "/message" + handle - obj = bus.get_object(BUS_NAME, path) - msg = dbus.Interface(obj, MESSAGE_INTERFACE) - msg.Get("", True, reply_handler=self.create_transfer_reply, - error_handler=self.error) - - def push_message(self, filename): - self.map.PushMessage(filename, "telecom/msg/outbox", dict(), - reply_handler=self.create_transfer_reply, - error_handler=self.error) - - def get_message_properties(self, handle): - self.map.ListMessages("", dict()) - path = self.path + "/message" + handle - obj = bus.get_object(BUS_NAME, path) - msg = dbus.Interface(obj, "org.freedesktop.DBus.Properties") - ret = msg.GetAll(MESSAGE_INTERFACE) - print(pformat(unwrap(ret))) - - def set_message_property(self, handle, prop, flag): - self.map.ListMessages("", dict()) - path = self.path + "/message" + handle - obj = bus.get_object(BUS_NAME, path) - msg = dbus.Interface(obj, MESSAGE_INTERFACE) - msg.SetProperty (prop, flag); - - def update_inbox(self): - self.map.UpdateInbox() - - -if __name__ == '__main__': - - dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - - parser = OptionParser() - - (options, args) = parse_options() - - if not options.device: - parser.print_help() - exit(0) - - bus = dbus.SessionBus() - mainloop = gobject.MainLoop() - - client = dbus.Interface(bus.get_object(BUS_NAME, PATH), - CLIENT_INTERFACE) - - print("Creating Session") - path = client.CreateSession(options.device, { "Target": "map" }) - - map_client = MapClient(path, options.verbose) - - if options.new_dir: - map_client.set_folder(options.new_dir) - - if options.ls_dir: - map_client.list_folders() - - if options.ls_msg is not None: - map_client.list_messages(options.ls_msg) - - if options.get_msg is not None: - map_client.get_message(options.get_msg) - - if options.push_msg is not None: - map_client.push_message(options.push_msg) - - if options.get_msg_properties is not None: - map_client.get_message_properties(options.get_msg_properties) - - if options.mark_msg_read is not None: - map_client.set_message_property(options.mark_msg_read, "Read", True) - - if options.mark_msg_unread is not None: - map_client.set_message_property(options.mark_msg_unread, "Read", False) - - if options.mark_msg_deleted is not None: - map_client.set_message_property(options.mark_msg_deleted, "Deleted", True) - - if options.mark_msg_undeleted is not None: - map_client.set_message_property(options.mark_msg_undeleted, "Deleted", False) - - if options.update_inbox: - map_client.update_inbox() - - mainloop.run() |