summaryrefslogtreecommitdiff
path: root/test/map-client
diff options
context:
space:
mode:
Diffstat (limited to 'test/map-client')
-rwxr-xr-xtest/map-client231
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()