Top |
Functions
Description
GDataContactsService is a subclass of GDataService for communicating with the GData API of Google Contacts. It supports querying for, inserting, editing and deleting contacts from a Google address book.
For more details of Google Contacts' GData API, see the online documentation.
Example 20. Querying for Groups
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
GDataContactsService *service; GDataFeed *feed; GList *i; GError *error = NULL; /* Create a service */ service = create_contacts_service (); /* Query for groups */ feed = gdata_contacts_service_query_groups (service, NULL, NULL, NULL, NULL, &error); g_object_unref (service); if (error != NULL) { g_error ("Error querying for groups: %s", error->message); g_error_free (error); return; } /* Iterate through the returned groups and do something with them */ for (i = gdata_feed_get_entries (feed); i != NULL; i = i->next) { const gchar *system_group_id, *group_name; gboolean is_system_group; GDataContactsGroup *group = GDATA_CONTACTS_GROUP (i->data); /* Determine whether the group's a system group. If so, you should use the system group ID to provide your application's own * translations of the group name, as it's not translated. */ system_group_id = gdata_contacts_group_get_system_group_id (group); is_system_group = (system_group_id != NULL) ? TRUE : FALSE; group_name = (is_system_group == TRUE) ? get_group_name_for_system_group_id (system_group_id) : gdata_entry_get_title (GDATA_ENTRY (group)); /* Do something with the group here, such as insert it into a UI. Note that system groups are not allowed to be deleted, * so you may want to make certain parts of your UI insensitive accordingly if the group is a system group. */ } g_object_unref (feed); |
The Contacts service can be manipulated using batch operations, too. See the
online documentation on batch operations for more information.Example 21. Performing a Batch Operation on Contacts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
GDataContactsService *service; GDataBatchOperation *operation; GDataFeed *feed; GDataLink *batch_link; GList *i; GError *error = NULL; /* Create a service */ service = create_contacts_service (); /* Create the batch operation; this requires that we have done a query first so that we can get the batch link */ feed = do_some_query (service); batch_link = gdata_feed_look_up_link (feed, GDATA_LINK_BATCH); operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_link_get_uri (batch_link)); g_object_unref (feed); gdata_batch_operation_add_query (operation, contact_entry_id_to_query, GDATA_TYPE_CONTACTS_CONTACT, (GDataBatchOperationCallback) batch_query_cb, user_data); gdata_batch_operation_add_insertion (operation, new_entry, (GDataBatchOperationCallback) batch_insertion_cb, user_data); gdata_batch_operation_add_update (operation, old_entry, (GDataBatchOperationCallback) batch_update_cb, user_data); gdata_batch_operation_add_deletion (operation, entry_to_delete, (GDataBatchOperationCallback) batch_deletion_cb, user_data); /* Run the batch operation and handle the results in the various callbacks */ gdata_test_batch_operation_run (operation, NULL, &error); g_object_unref (operation); g_object_unref (service); if (error != NULL) { g_error ("Error running batch operation: %s", error->message); g_error_free (error); return; } static void batch_query_cb (guint operation_id, GDataBatchOperationType operation_type, GDataEntry *entry, GError *error, gpointer user_data) { /* operation_type == GDATA_BATCH_OPERATION_QUERY */ /* Reference and do something with the returned entry. */ } static void batch_insertion_cb (guint operation_id, GDataBatchOperationType operation_type, GDataEntry *entry, GError *error, gpointer user_data) { /* operation_type == GDATA_BATCH_OPERATION_INSERTION */ /* Reference and do something with the returned entry. */ } static void batch_update_cb (guint operation_id, GDataBatchOperationType operation_type, GDataEntry *entry, GError *error, gpointer user_data) { /* operation_type == GDATA_BATCH_OPERATION_UPDATE */ /* Reference and do something with the returned entry. */ } static void batch_deletion_cb (guint operation_id, GDataBatchOperationType operation_type, GDataEntry *entry, GError *error, gpointer user_data) { /* operation_type == GDATA_BATCH_OPERATION_DELETION, entry == NULL */ } |
Functions
gdata_contacts_service_new ()
GDataContactsService *
gdata_contacts_service_new (GDataAuthorizer *authorizer
);
Creates a new GDataContactsService using the given GDataAuthorizer. If authorizer
is NULL
, all requests are made as an unauthenticated user.
Since: 0.9.0
gdata_contacts_service_get_primary_authorization_domain ()
GDataAuthorizationDomain *
gdata_contacts_service_get_primary_authorization_domain
(void
);
The primary GDataAuthorizationDomain for interacting with Google Contacts. This will not normally need to be used, as it's used internally by the GDataContactsService methods. However, if using the plain GDataService methods to implement custom queries or requests which libgdata does not support natively, then this domain may be needed to authorize the requests.
The domain never changes, and is interned so that pointer comparison can be used to differentiate it from other authorization domains.
Since: 0.9.0
gdata_contacts_service_query_contacts ()
GDataFeed * gdata_contacts_service_query_contacts (GDataContactsService *self
,GDataQuery *query
,GCancellable *cancellable
,GDataQueryProgressCallback progress_callback
,gpointer progress_user_data
,GError **error
);
Queries the service to return a list of contacts matching the given query
.
For more details, see gdata_service_query()
.
Parameters
self |
||
query |
a GDataQuery with the query parameters, or |
[allow-none] |
cancellable |
optional GCancellable object, or |
[allow-none] |
progress_callback |
a GDataQueryProgressCallback to call when an entry is loaded, or |
[allow-none][scope call][closure progress_user_data] |
progress_user_data |
data to pass to the |
[closure] |
error |
Since: 0.2.0
gdata_contacts_service_query_contacts_async ()
void gdata_contacts_service_query_contacts_async (GDataContactsService *self
,GDataQuery *query
,GCancellable *cancellable
,GDataQueryProgressCallback progress_callback
,gpointer progress_user_data
,GDestroyNotify destroy_progress_user_data
,GAsyncReadyCallback callback
,gpointer user_data
);
Queries the service to return a list of contacts matching the given query
. self
and
query
are all reffed when this function is called, so can safely be unreffed after this function returns.
For more details, see gdata_contacts_service_query_contacts()
, which is the synchronous version of this function,
and gdata_service_query_async()
, which is the base asynchronous query function.
Parameters
self |
||
query |
a GDataQuery with the query parameters, or |
[allow-none] |
cancellable |
optional GCancellable object, or |
[allow-none] |
progress_callback |
a GDataQueryProgressCallback to call when an entry is loaded, or |
[allow-none][closure progress_user_data] |
progress_user_data |
data to pass to the |
[closure] |
destroy_progress_user_data |
the function to call when |
[allow-none] |
callback |
a GAsyncReadyCallback to call when the query is finished |
|
user_data |
data to pass to the |
[closure] |
Since: 0.9.1
gdata_contacts_service_insert_contact ()
GDataContactsContact * gdata_contacts_service_insert_contact (GDataContactsService *self
,GDataContactsContact *contact
,GCancellable *cancellable
,GError **error
);
Inserts contact
by uploading it to the online contacts service.
For more details, see gdata_service_insert_entry()
.
Parameters
self |
||
contact |
the GDataContactsContact to insert |
|
cancellable |
optional GCancellable object, or |
[allow-none] |
error |
Since: 0.2.0
gdata_contacts_service_insert_contact_async ()
void gdata_contacts_service_insert_contact_async (GDataContactsService *self
,GDataContactsContact *contact
,GCancellable *cancellable
,GAsyncReadyCallback callback
,gpointer user_data
);
Inserts contact
by uploading it to the online contacts service. self
and contact
are both reffed when this function is called, so can safely be
unreffed after this function returns.
callback
should call gdata_service_insert_entry_finish()
to obtain a GDataContactsContact representing the inserted contact and to check for
possible errors.
For more details, see gdata_contacts_service_insert_contact()
, which is the synchronous version of this function,
and gdata_service_insert_entry_async()
, which is the base asynchronous insertion function.
Parameters
self |
||
contact |
the GDataContactsContact to insert |
|
cancellable |
optional GCancellable object, or |
[allow-none] |
callback |
a GAsyncReadyCallback to call when insertion is finished |
|
user_data |
data to pass to the |
[closure] |
Since: 0.7.0
gdata_contacts_service_query_groups ()
GDataFeed * gdata_contacts_service_query_groups (GDataContactsService *self
,GDataQuery *query
,GCancellable *cancellable
,GDataQueryProgressCallback progress_callback
,gpointer progress_user_data
,GError **error
);
Queries the service to return a list of groups matching the given query
.
For more details, see gdata_service_query()
.
Parameters
self |
||
query |
a GDataQuery with the query parameters, or |
[allow-none] |
cancellable |
optional GCancellable object, or |
[allow-none] |
progress_callback |
a GDataQueryProgressCallback to call when an entry is loaded, or |
[allow-none][scope call][closure progress_user_data] |
progress_user_data |
data to pass to the |
[closure] |
error |
Since: 0.7.0
gdata_contacts_service_query_groups_async ()
void gdata_contacts_service_query_groups_async (GDataContactsService *self
,GDataQuery *query
,GCancellable *cancellable
,GDataQueryProgressCallback progress_callback
,gpointer progress_user_data
,GDestroyNotify destroy_progress_user_data
,GAsyncReadyCallback callback
,gpointer user_data
);
Queries the service to return a list of groups matching the given query
. self
and query
are all reffed when this function is called, so can
safely be unreffed after this function returns.
For more details, see gdata_contacts_service_query_groups()
, which is the synchronous version of this function, and gdata_service_query_async()
,
which is the base asynchronous query function.
Parameters
self |
||
query |
a GDataQuery with the query parameters, or |
[allow-none] |
cancellable |
optional GCancellable object, or |
[allow-none] |
progress_callback |
a GDataQueryProgressCallback to call when an entry is loaded, or |
[allow-none][closure progress_user_data] |
progress_user_data |
data to pass to the |
[closure] |
destroy_progress_user_data |
the function to call when |
[allow-none] |
callback |
a GAsyncReadyCallback to call when the query is finished |
|
user_data |
data to pass to the |
[closure] |
Since: 0.9.1
gdata_contacts_service_insert_group ()
GDataContactsGroup * gdata_contacts_service_insert_group (GDataContactsService *self
,GDataContactsGroup *group
,GCancellable *cancellable
,GError **error
);
Inserts a new contact group described by group
. The user must be authenticated to use this function.
Parameters
self |
||
group |
a GDataContactsGroup to create on the server |
|
cancellable |
optional GCancellable object, or |
[allow-none] |
error |
Since: 0.7.0
gdata_contacts_service_insert_group_async ()
void gdata_contacts_service_insert_group_async (GDataContactsService *self
,GDataContactsGroup *group
,GCancellable *cancellable
,GAsyncReadyCallback callback
,gpointer user_data
);
Inserts a new contact group described by group
. The user must be authenticated to use this function. self
and group
are both reffed when this
function is called, so can safely be unreffed after this function returns.
callback
should call gdata_service_insert_entry_finish()
to obtain a GDataContactsGroup representing the inserted group and to check for possible
errors.
For more details, see gdata_contacts_service_insert_group()
, which is the synchronous version of this function, and
gdata_service_insert_entry_async()
, which is the base asynchronous insertion function.
Parameters
self |
||
group |
the GDataContactsGroup to insert |
|
cancellable |
optional GCancellable object, or |
[allow-none] |
callback |
a GAsyncReadyCallback to call when insertion is finished |
|
user_data |
data to pass to the |
[closure] |
Since: 0.7.0
Types and Values
GDataContactsService
typedef struct _GDataContactsService GDataContactsService;
All the fields in the GDataContactsService structure are private and should never be accessed directly.
Since: 0.2.0
GDataContactsServiceClass
typedef struct { } GDataContactsServiceClass;
All the fields in the GDataContactsServiceClass structure are private and should never be accessed directly.
Since: 0.2.0