0

I'm trying to rewrite Glib/dbus related C code to python. Corresponding C code:

GVariant *real_value;
JsonNode *root;
JsonGenerator *generator;
gsize json_length;
gchar *json;

GDBusProxy  *proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
                                          G_DBUS_PROXY_FLAGS_NONE,
                                          NULL, /* interface info */
                                          "org.gnome.Shell",
                                          "/org/gnome/Shell",
                                          "org.gnome.Shell.Extensions",
                                          NULL, /* GCancellable */
                                          &error);
GVariant *variant = g_dbus_proxy_call_sync (obj->proxy,
                            "ListExtensions",
                            NULL, /* parameters */
                            G_DBUS_CALL_FLAGS_NONE,
                            -1, /* timeout */
                            NULL, /* cancellable */
                            &error);

g_variant_get (variant, "(@*)", &real_value);
root = json_gvariant_serialize (real_value);
generator = json_generator_new ();
json_generator_set_root (generator, root);
json = json_generator_to_data (generator, &json_length);

My python code is:

proxy = Gio.DBusProxy.new_for_bus_sync(Gio.BusType.SESSION,
                    Gio.DBusProxyFlags.NONE,
                    None,
                    'org.gnome.Shell',
                    '/org/gnome/Shell',
                    'org.gnome.Shell.Extensions',
                    None)
result = proxy.call_sync("ListExtensions",
                None,
                Gio.DBusCallFlags.NONE,
                -1,
                None)

real_value = ???
root = Json.gvariant_serialize(real_value)
generator = Json.Generator.new()
generator.set_root(root)
data = generator.to_data()

The problem is that i don't see any g_variant_get() binding to obtain "real_value". How can i do that in python?

Thanks!

nE0sIghT
  • 73
  • 1
  • 5

1 Answers1

1

So i used that:

proxy = Gio.DBusProxy.new_for_bus_sync(Gio.BusType.SESSION,
                Gio.DBusProxyFlags.NONE,
                None,
                'org.gnome.Shell',
                '/org/gnome/Shell',
                'org.gnome.Shell.Extensions',
                None)
result = proxy.call_sync("ListExtensions",
            None,
            Gio.DBusCallFlags.NONE,
            -1,
            None)
jsonStr = json.dumps(result.unpack()[0])
nE0sIghT
  • 73
  • 1
  • 5