8
import dbus.mainloop.glib
10
from gi.repository import GObject
12
class Agent(dbus.service.Object):
13
def __init__(self, conn=None, obj_path=None):
14
dbus.service.Object.__init__(self, conn, obj_path)
16
@dbus.service.method("org.openobex.Agent",
17
in_signature="o", out_signature="s")
18
def Request(self, path):
19
print("Transfer Request")
20
self.transfer = dbus.Interface(bus.get_object("org.openobex.client",
22
"org.openobex.Transfer")
23
properties = self.transfer.GetProperties()
24
for key in list(properties.keys()):
25
print(" %s = %s" % (key, properties[key]))
29
@dbus.service.method("org.openobex.Agent",
30
in_signature="ot", out_signature="")
31
def Progress(self, path, transferred):
33
print("Transfer Started")
34
properties = self.transfer.GetProperties()
35
self.transfer_size = properties['Size']
36
self.start_time = time.time()
39
speed = transferred / abs((time.time() - self.start_time) * 1000)
40
progress = ("(" + str(transferred) + "/" + str(self.transfer_size)
41
+ " bytes) @ " + str(int(speed)) + " kB/s")
42
out = "\rTransfer progress " + progress
47
@dbus.service.method("org.openobex.Agent",
48
in_signature="o", out_signature="")
49
def Complete(self, path):
50
print("\nTransfer finished")
53
@dbus.service.method("org.openobex.Agent",
54
in_signature="os", out_signature="")
55
def Error(self, path, error):
56
print("\nTransfer finished with an error: %s" % (error))
59
@dbus.service.method("org.openobex.Agent",
60
in_signature="", out_signature="")
65
if __name__ == '__main__':
66
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
68
bus = dbus.SessionBus()
69
client = dbus.Interface(bus.get_object("org.openobex.client", "/"),
70
"org.openobex.Client")
72
if (len(sys.argv) < 3):
73
print("Usage: %s <device> <file> [file*]" % (sys.argv[0]))
77
agent = Agent(bus, path)
79
mainloop = GObject.MainLoop()
80
files = [os.path.realpath(f) for f in sys.argv[2:]]
82
client.SendFiles({"Destination": sys.argv[1]}, files, path)