| #!/usr/bin/python |
| |
| import dbus, flimflam |
| import gobject, dbus.service, dbus.mainloop.glib |
| import sys |
| |
| FLIMFLAM = "org.chromium.flimflam" |
| |
| class Canceled(dbus.DBusException): |
| _dbus_error_name = FLIMFLAM + ".Error.Canceled" |
| |
| class Agent(dbus.service.Object): |
| AGENT = FLIMFLAM + ".Agent" |
| |
| @dbus.service.method(AGENT, in_signature='', out_signature='') |
| def Release(self): |
| print("Release") |
| mainloop.quit() |
| |
| @dbus.service.method(AGENT, in_signature='oa{sv}', out_signature='a{sv}') |
| def RequestInput(self, path, fields): |
| print "RequestInput (%s, %s)" % (path, fields) |
| |
| for k, v in fields.items(): |
| value = raw_input('%s [%s]: ' % (k, v)) |
| if value != '': |
| fields[k] = dbus.String(value); |
| |
| print "returning (%s)" % (fields) |
| |
| return fields |
| |
| @dbus.service.method(AGENT, in_signature='os', out_signature='') |
| def ReportError(self, path, error): |
| print "ReportError %s, %s" % (path, error) |
| retry = raw_input("Retry service (yes/no): ") |
| if (retry == "yes"): |
| class Retry(dbus.DBusException): |
| _dbus_error_name = AGENT + ".Error.Retry" |
| |
| raise Retry("retry service") |
| else: |
| return |
| |
| @dbus.service.method(AGENT, in_signature='', out_signature='') |
| def Cancel(self): |
| print "Cancel" |
| |
| if __name__ == '__main__': |
| dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
| bus = dbus.SystemBus() |
| flim = flimflam.FlimFlam(bus) |
| |
| path = "/test/agent" |
| object = Agent(bus, path) |
| flim.RegisterAgent(path) |
| |
| mainloop = gobject.MainLoop() |
| mainloop.run() |