static DBusMessage* service_property_get (GkdSecretService *self, DBusMessage *message) { DBusMessage *reply = NULL; DBusMessageIter iter; const gchar *interface; const gchar *name; if (!dbus_message_get_args (message, NULL, DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &name, DBUS_TYPE_INVALID)) return NULL; if (!gkd_dbus_interface_match (SECRET_SERVICE_INTERFACE, interface)) return dbus_message_new_error_printf (message, DBUS_ERROR_FAILED, "Object does not have properties on interface '%s'", interface); /* The "Collections" property */ if (g_str_equal (name, "Collections")) { reply = dbus_message_new_method_return (message); dbus_message_iter_init_append (reply, &iter); gkd_secret_objects_append_collection_paths (self->objects, &iter, message); /* No such property */ } else { reply = dbus_message_new_error_printf (message, DBUS_ERROR_FAILED, "Object does not have the '%s' property", name); } return reply; }
static DBusMessage* service_property_getall (GkdSecretService *self, DBusMessage *message) { DBusMessage *reply = NULL; DBusMessageIter array; DBusMessageIter dict; DBusMessageIter iter; const gchar *interface; const gchar *name; if (!dbus_message_get_args (message, NULL, DBUS_TYPE_STRING, &interface, DBUS_TYPE_INVALID)) return NULL; if (!gkd_dbus_interface_match (SECRET_SERVICE_INTERFACE, interface)) return dbus_message_new_error_printf (message, DBUS_ERROR_FAILED, "Object does not have properties on interface '%s'", interface); reply = dbus_message_new_method_return (message); dbus_message_iter_init_append (reply, &iter); dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "{sv}", &array); name = "Collections"; dbus_message_iter_open_container (&array, DBUS_TYPE_DICT_ENTRY, NULL, &dict); dbus_message_iter_append_basic (&dict, DBUS_TYPE_STRING, &name); gkd_secret_objects_append_collection_paths (self->objects, &dict, message); dbus_message_iter_close_container (&array, &dict); dbus_message_iter_close_container (&iter, &array); return reply; }
static void service_append_all_properties (GkdSecretService *self, DBusMessageIter *iter) { DBusMessageIter array; DBusMessageIter dict; const gchar *name; dbus_message_iter_open_container (iter, DBUS_TYPE_ARRAY, "{sv}", &array); name = "Collections"; dbus_message_iter_open_container (&array, DBUS_TYPE_DICT_ENTRY, NULL, &dict); dbus_message_iter_append_basic (&dict, DBUS_TYPE_STRING, &name); gkd_secret_objects_append_collection_paths (self->objects, &dict, NULL); dbus_message_iter_close_container (&array, &dict); dbus_message_iter_close_container (iter, &array); }