diff options
author | Vinicius Costa Gomes <vcgomes@gmail.com> | 2009-05-06 00:17:07 -0300 |
---|---|---|
committer | Vinicius Costa Gomes <vcgomes@gmail.com> | 2009-05-06 00:17:07 -0300 |
commit | 65952ab428b3b0e765798974950ad9f37f323f63 (patch) | |
tree | 3fcac2f565cefddbd9c2aa589357b6b82a4cae61 /test | |
parent | ca0e2cc8f1559b851581d6cccd51de1dc554d952 (diff) | |
download | obexd-65952ab428b3b0e765798974950ad9f37f323f63.tar.gz |
Introduces a FTP client test script
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 2 | ||||
-rwxr-xr-x | test/ftp-client | 128 |
2 files changed, 129 insertions, 1 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index f89614b..ffbe2fc 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -8,6 +8,6 @@ obex_test_LDADD = @GWOBEX_LIBS@ @OPENOBEX_LIBS@ @BLUEZ_LIBS@ @GLIB_LIBS@ AM_CFLAGS = @GLIB_CFLAGS@ @BLUEZ_CFLAGS@ @OPENOBEX_CFLAGS@ @GWOBEX_CFLAGS@ EXTRA_DIST = send-files pull-business-card exchange-business-cards \ - list-folders pbap-client simple-agent + list-folders pbap-client simple-agent ftp-client MAINTAINERCLEANFILES = Makefile.in diff --git a/test/ftp-client b/test/ftp-client new file mode 100755 index 0000000..595fb19 --- /dev/null +++ b/test/ftp-client @@ -0,0 +1,128 @@ +#!/usr/bin/python + +import gobject + +import sys +import dbus +import dbus.service +import dbus.mainloop.glib +import os.path +from optparse import OptionParser + +class Agent(dbus.service.Object): + def __init__(self, conn=None, obj_path=None, verbose=False): + dbus.service.Object.__init__(self, conn, obj_path) + self.verbose = verbose + + @dbus.service.method("org.openobex.Agent", + in_signature="ot", out_signature="") + def Progress(self, path, transferred): + if self.verbose: + print "Transfer progress (%d bytes)" % (transferred) + return + + @dbus.service.method("org.openobex.Agent", + in_signature="o", out_signature="") + def Complete(self, path): + if self.verbose: + print "Transfer finished" + mainloop.quit() + + @dbus.service.method("org.openobex.Agent", + in_signature="os", out_signature="") + def Error(self, path, error): + print "Transfer finished with an error: %s" % (error) + mainloop.quit() + + @dbus.service.method("org.openobex.Agent", + in_signature="", out_signature="") + def Release(self): + mainloop.quit() + + +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("-v", "--verbose", action="store_true", dest="verbose") + + return parser.parse_args() + + +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)) + +def get_file(session, filename): + session.GetFile(os.path.abspath(filename), + os.path.basename(filename)) + + +if __name__ == '__main__': + + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + + parser = OptionParser() + + (options, args) = parse_options() + + if not options.device: + parser.print_help() + sys.exit(0) + + bus = dbus.SessionBus() + mainloop = gobject.MainLoop() + + need_mainloop = False + + path = "/test/agent" + agent = Agent(bus, path, options.verbose) + + client = dbus.Interface(bus.get_object("org.openobex.client", "/"), + "org.openobex.Client") + + session_path = client.CreateSession({ "Destination": options.device, + "Target": "ftp"}) + + session = dbus.Interface(bus.get_object("org.openobex.client", session_path), + "org.openobex.Session") + + session.AssignAgent(path) + + ftp = dbus.Interface(bus.get_object("org.openobex.client", session_path), + "org.openobex.FileTransfer") + + if options.new_dir: + change_folder(ftp, options.new_dir) + + if options.list_dir: + list_folder(ftp) + + if options.get_file: + need_mainloop = True + get_file(ftp, options.get_file) + + if options.put_file: + need_mainloop = True + put_file(ftp, options.put_file) + + if need_mainloop: + mainloop.run() |