/** * goa_client_lookup_by_id: * @client: A #GoaClient. * @id: The ID to look for. * * Finds and returns the #GoaObject instance whose * <link * linkend="gdbus-property-org-gnome-OnlineAccounts-Account.Id">"Id"</link> * D-Bus property matches @id. * * Returns: (transfer full): A #GoaObject. Free the returned * object with g_object_unref(). * * Since: 3.6 */ GoaObject * goa_client_lookup_by_id (GoaClient *client, const gchar *id) { GList *accounts; GList *l; GoaObject *ret; ret = NULL; accounts = goa_client_get_accounts (client); for (l = accounts; l != NULL; l = g_list_next (l)) { GoaAccount *account; GoaObject *object = GOA_OBJECT (l->data); account = goa_object_peek_account (object); if (account == NULL) continue; if (g_strcmp0 (goa_account_get_id (account), id) == 0) { ret = g_object_ref (object); break; } } g_list_free_full (accounts, g_object_unref); return ret; }
static void sync_accounts (GisGoaPage *page) { GisGoaPagePrivate *priv = gis_goa_page_get_instance_private (page); GList *accounts, *l; accounts = goa_client_get_accounts (priv->goa_client); for (l = accounts; l != NULL; l = l->next) { GoaObject *object = GOA_OBJECT (l->data); GoaAccount *account = goa_object_get_account (object); const char *account_type = goa_account_get_provider_type (account); ProviderWidget *provider_widget; provider_widget = g_hash_table_lookup (priv->providers, account_type); if (!provider_widget) continue; priv->accounts_exist = TRUE; if (provider_widget->displayed_account) continue; provider_widget->displayed_account = account; sync_provider_widget (provider_widget); } g_list_free_full (accounts, (GDestroyNotify) g_object_unref); sync_visibility (page); gis_page_set_skippable (GIS_PAGE (page), !priv->accounts_exist); gis_page_set_complete (GIS_PAGE (page), priv->accounts_exist); }
gboolean goa_utils_check_duplicate (GoaClient *client, const gchar *identity, const gchar *presentation_identity, const gchar *provider_type, GoaPeekInterfaceFunc func, GError **error) { GList *accounts; GList *l; gboolean ret; ret = FALSE; accounts = goa_client_get_accounts (client); for (l = accounts; l != NULL; l = l->next) { GoaObject *object = GOA_OBJECT (l->data); GoaAccount *account; gpointer *interface; const gchar *identity_from_object; const gchar *presentation_identity_from_object; const gchar *provider_type_from_object; account = goa_object_peek_account (object); interface = (*func) (object); if (interface == NULL) continue; provider_type_from_object = goa_account_get_provider_type (account); if (g_strcmp0 (provider_type_from_object, provider_type) != 0) continue; identity_from_object = goa_account_get_identity (account); presentation_identity_from_object = goa_account_get_presentation_identity (account); if (g_strcmp0 (identity_from_object, identity) == 0 && g_strcmp0 (presentation_identity_from_object, presentation_identity) == 0) { const gchar *provider_name; provider_name = goa_account_get_provider_name (account); g_set_error (error, GOA_ERROR, GOA_ERROR_ACCOUNT_EXISTS, _("A %s account already exists for %s"), provider_name, presentation_identity); goto out; } } ret = TRUE; out: g_list_free_full (accounts, g_object_unref); return ret; }
static void init_model (GoaPanelAccountsModel *model) { GList *accounts; GList *l; accounts = goa_client_get_accounts (model->client); for (l = accounts; l != NULL; l = l->next) { GoaObject *object = GOA_OBJECT (l->data); add_account (model, object); } g_list_foreach (accounts, (GFunc) g_object_unref, NULL); g_list_free (accounts); }
static void photos_source_manager_refresh_accounts (PhotosSourceManager *self) { PhotosSourceManagerPrivate *priv = self->priv; GHashTable *new_sources; GList *accounts; GList *l; accounts = goa_client_get_accounts (priv->client); new_sources = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); for (l = accounts; l != NULL; l = l->next) { GoaAccount *account; GoaObject *object = GOA_OBJECT (l->data); PhotosSource *source; const gchar *id; account = goa_object_peek_account (object); if (account == NULL) continue; if (goa_account_get_photos_disabled (account)) continue; if (goa_object_peek_photos (object) == NULL) continue; source = photos_source_new_from_goa_object (GOA_OBJECT (l->data)); id = photos_filterable_get_id (PHOTOS_FILTERABLE (source)); g_hash_table_insert (new_sources, g_strdup (id), g_object_ref (source)); g_object_unref (source); } photos_base_manager_process_new_objects (PHOTOS_BASE_MANAGER (self), new_sources); g_hash_table_unref (new_sources); g_list_free_full (accounts, g_object_unref); }
static gboolean check_existing_goa_accounts (AddAccountData *data) { GList *goa_accounts = NULL; GList *l = NULL; gboolean found = FALSE; if (data->tp_account == NULL || data->goa_client == NULL) return FALSE; goa_accounts = goa_client_get_accounts (data->goa_client); for (l = goa_accounts; l != NULL; l = l->next) { if (check_goa_object_match (data, l->data)) { found = TRUE; break; } } g_list_free_full (goa_accounts, g_object_unref); return found; }
int main() { GoaObject *goa_object; GDataPicasaWebService *service; GDataPicasaWebAlbum *album, *inserted_album; GDataGoaAuthorizer *authorizer; GError *error; GoaClient *client; GList *accounts_list, *l; error = NULL; /*I am using sync version just to avoid some complexity and keeping it simple.*/ client = goa_client_new_sync (NULL, &error); /*FYI, I have only experimented this with just one google account so account_lists assume 1 account only.*/ accounts_list = goa_client_get_accounts (client); printf ("Accounts : %d\n", g_list_length (accounts_list)); goa_object = accounts_list->data; authorizer = gdata_goa_authorizer_new (goa_object); service = gdata_picasaweb_service_new (GDATA_AUTHORIZER (authorizer)); /* Create a GDataPicasaWebAlbum entry for the new album, setting some information about it */ album = gdata_picasaweb_album_new (NULL); gdata_entry_set_title (GDATA_ENTRY (album), "Test Album"); gdata_entry_set_summary (GDATA_ENTRY (album), "This is just a testing album"); gdata_picasaweb_album_set_location (album, "Ahmedabad"); /* Insert the new album on the server. Note that this is a blocking operation. */ inserted_album = gdata_picasaweb_service_insert_album (service, album, NULL, NULL); g_object_unref (album); g_object_unref (inserted_album); g_object_unref (service); g_object_unref (authorizer); printf("Album Created!"); }
gint main (void) { GDataDocumentsFeed *feed = NULL; GDataDocumentsQuery *query = NULL; GDataDocumentsService *service = NULL; GError *error = NULL; GList *accounts = NULL; GList *entries; GList *l; GoaClient *client = NULL; client = goa_client_new_sync (NULL, &error); if (error != NULL) { g_warning ("%s", error->message); g_error_free (error); goto out; } accounts = goa_client_get_accounts (client); for (l = accounts; l != NULL; l = l->next) { GoaAccount *account; GoaObject *object = GOA_OBJECT (l->data); const gchar *provider_type; account = goa_object_peek_account (object); provider_type = goa_account_get_provider_type (account); if (g_strcmp0 (provider_type, "google") == 0) { GDataGoaAuthorizer *authorizer; authorizer = gdata_goa_authorizer_new (object); service = gdata_documents_service_new (GDATA_AUTHORIZER (authorizer)); g_object_unref (authorizer); } } if (service == NULL) { g_warning ("Account not found"); goto out; } query = gdata_documents_query_new_with_limits (NULL, 1, 10); gdata_documents_query_set_show_folders (query, TRUE); while (TRUE) { feed = gdata_documents_service_query_documents (service, query, NULL, NULL, NULL, &error); if (error != NULL) { g_warning ("%s", error->message); g_error_free (error); goto out; } entries = gdata_feed_get_entries (GDATA_FEED (feed)); if (entries == NULL) { goto out; } for (l = entries; l != NULL; l = l->next) { GDataEntry *entry = GDATA_ENTRY (l->data); const gchar *title; title = gdata_entry_get_title (entry); g_message ("%s", title); } gdata_query_next_page (GDATA_QUERY (query)); g_object_unref (feed); } out: g_clear_object (&feed); g_clear_object (&query); g_clear_object (&service); g_clear_object (&client); g_list_free_full (accounts, g_object_unref); return 0; }