diff options
author | Mikel Astiz <mikel.astiz@bmw-carit.de> | 2012-06-04 11:37:55 +0200 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2012-06-04 23:57:21 +0300 |
commit | 6510ff727fd4716de2e2e341d2f227ddb4db7a7b (patch) | |
tree | 7c442576ee3ba56af4b6c5ff6a5f83ce85af12e5 /test | |
parent | 06dad1a032ea48c5ccc4a649b19251218deb44f3 (diff) | |
download | obexd-6510ff727fd4716de2e2e341d2f227ddb4db7a7b.tar.gz |
client-test: ftp-client uses new API
Diffstat (limited to 'test')
-rwxr-xr-x | test/ftp-client | 236 |
1 files changed, 133 insertions, 103 deletions
diff --git a/test/ftp-client b/test/ftp-client index 8421ade..7cf9bfc 100755 --- a/test/ftp-client +++ b/test/ftp-client @@ -10,124 +10,154 @@ import os.path from optparse import OptionParser 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", "--list", action="store_true", dest="list_dir", - help="List the current directory") - parser.add_option("-g", "--get", dest="get_file", - help="Get FILE", metavar="FILE") - parser.add_option("-p", "--put", dest="put_file", - help="Put FILE", metavar="FILE") - parser.add_option("-y", "--copy", dest="copy_file", - help="Copy FILE", metavar="FILE") - parser.add_option("-m", "--move", dest="move_file", - help="Move FILE", metavar="FILE") - parser.add_option("-n", "--destname", dest="dest_file", - help="Destination FILE", metavar="FILE") - parser.add_option("-r", "--remove", dest="remove_file", - help="Remove FILE", metavar="FILE") - parser.add_option("-v", "--verbose", action="store_true", dest="verbose") - - return parser.parse_args() - -def error(err): - print err - -def void_reply(): - pass - -def transfer_complete(): - if options.verbose: - print "Transfer finished" - mainloop.quit() - -def change_folder(session, new_dir): - for node in new_dir.split("/"): - session.ChangeFolder(node) - -def list_folder(session): - for i in session.ListFolder(): - if i["Type"] == "folder": - print "%s/" % (i["Name"]) - else: - print "%s" % (i["Name"]) - -def put_file(session, filename): - session.PutFile(os.path.abspath(filename), - os.path.basename(filename), - reply_handler=transfer_complete, - error_handler=error) - -def get_file(session, filename): - session.GetFile(os.path.abspath(filename), - os.path.basename(filename), - reply_handler=transfer_complete, - error_handler=error) - -def remove_file(session, filename): - session.Delete(filename, - reply_handler=void_reply, - error_handler=error) - -def move_file(session, filename, destname): - session.MoveFile(filename, - destname, - reply_handler=void_reply, - error_handler=error) - -def copy_file(session, filename, destname): - session.CopyFile(filename, - destname, - reply_handler=void_reply, - error_handler=error) + 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", "--list", action="store_true", dest="list_dir", + help="List the current directory") + parser.add_option("-g", "--get", dest="get_file", + help="Get FILE", metavar="FILE") + parser.add_option("-p", "--put", dest="put_file", + help="Put FILE", metavar="FILE") + parser.add_option("-y", "--copy", dest="copy_file", + help="Copy FILE", metavar="FILE") + parser.add_option("-m", "--move", dest="move_file", + help="Move FILE", metavar="FILE") + parser.add_option("-n", "--destname", dest="dest_file", + help="Destination FILE", metavar="FILE") + parser.add_option("-r", "--remove", dest="remove_file", + help="Remove FILE", metavar="FILE") + parser.add_option("-v", "--verbose", action="store_true", + dest="verbose") + + return parser.parse_args() + +class FtpClient: + def __init__(self, session_path, verbose=False): + self.transfer_path = None + self.verbose = verbose + bus = dbus.SessionBus() + obj = bus.get_object("org.openobex.client", session_path) + self.session = dbus.Interface(obj, "org.openobex.Session") + self.ftp = dbus.Interface(obj, "org.openobex.FileTransfer") + bus.add_signal_receiver(self.transfer_complete, + dbus_interface="org.openobex.Transfer", + signal_name="Complete", + path_keyword="path") + bus.add_signal_receiver(self.transfer_error, + dbus_interface="org.openobex.Transfer", + signal_name="Error", + path_keyword="path") + + def create_transfer_reply(self, reply): + (path, properties) = reply + self.transfer_path = path + if self.verbose: + print "Transfer created: %s" % path + + def generic_reply(self): + if self.verbose: + print "Operation succeeded" + + def error(self, err): + print err + mainloop.quit() + + def transfer_complete(self, path): + if path != self.transfer_path: + return + if self.verbose: + print "Transfer finished" + mainloop.quit() + + def transfer_error(self, code, message, path): + if path != self.transfer_path: + return + print "Transfer finished with error %s: %s" % (code, message) + mainloop.quit() + + def change_folder(self, new_dir): + for node in new_dir.split("/"): + self.ftp.ChangeFolder(node) + + def list_folder(self): + for i in self.ftp.ListFolder(): + if i["Type"] == "folder": + print "%s/" % (i["Name"]) + else: + print "%s" % (i["Name"]) + + def put_file(self, filename): + self.ftp.PutFile(os.path.abspath(filename), + os.path.basename(filename), + reply_handler=self.create_transfer_reply, + error_handler=self.error) + + def get_file(self, filename): + self.ftp.GetFile(os.path.abspath(filename), + os.path.basename(filename), + reply_handler=self.create_transfer_reply, + error_handler=self.error) + + def remove_file(self, filename): + self.ftp.Delete(filename, + reply_handler=self.generic_reply, + error_handler=self.error) + + def move_file(self, filename, destname): + self.ftp.MoveFile(filename, destname, + reply_handler=self.generic_reply, + error_handler=self.error) + + def copy_file(self, filename, destname): + self.ftp.CopyFile(filename, destname, + reply_handler=self.generic_reply, + error_handler=self.error) if __name__ == '__main__': - dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - parser = OptionParser() + parser = OptionParser() - (options, args) = parse_options() + (options, args) = parse_options() - if not options.device: - parser.print_help() - sys.exit(0) + if not options.device: + parser.print_help() + sys.exit(0) - bus = dbus.SessionBus() - mainloop = gobject.MainLoop() + bus = dbus.SessionBus() + mainloop = gobject.MainLoop() - client = dbus.Interface(bus.get_object("org.openobex.client", "/"), - "org.openobex.Client") + client = dbus.Interface(bus.get_object("org.openobex.client", "/"), + "org.openobex.Client") - session_path = client.CreateSession(options.device, { "Target": "ftp" }) + print "Creating Session" + session_path = client.CreateSession(options.device, + { "Target": "ftp" }) - session = dbus.Interface(bus.get_object("org.openobex.client", session_path), - "org.openobex.Session") + ftp_client = FtpClient(session_path) - ftp = dbus.Interface(bus.get_object("org.openobex.client", session_path), - "org.openobex.FileTransfer") + if options.new_dir: + ftp_client.change_folder(options.new_dir) - if options.new_dir: - change_folder(ftp, options.new_dir) + if options.list_dir: + ftp_client.list_folder() - if options.list_dir: - list_folder(ftp) + if options.get_file: + ftp_client.get_file(options.get_file) - if options.get_file: - get_file(ftp, options.get_file) + if options.put_file: + ftp_client.put_file(options.put_file) - if options.put_file: - put_file(ftp, options.put_file) + if options.move_file: + ftp_client.move_file(options.move_file, options.dest_file) - if options.move_file: - move_file(ftp, options.move_file, options.dest_file) + if options.copy_file: + ftp_client.copy_file(options.copy_file, options.dest_file) - if options.copy_file: - copy_file(ftp, options.copy_file, options.dest_file) + if options.remove_file: + ftp_client.remove_file(options.remove_file) - if options.remove_file: - remove_file(ftp, options.remove_file) - - mainloop.run() + mainloop.run() |