[libgdata] [core] Add support for atom:icon to GDataFeed
- From: Philip Withnall <pwithnall src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libgdata] [core] Add support for atom:icon to GDataFeed
- Date: Thu, 8 Oct 2009 21:44:44 +0000 (UTC)
commit ceb151b4f8b80722516478a577297431eed056d9
Author: Richard Schwarting <aquarichy gmail com>
Date: Thu Oct 8 22:43:42 2009 +0100
[core] Add support for atom:icon to GDataFeed
Add support for the atom:icon element to GDataFeed. Helps: bgo#589858
docs/reference/gdata-sections.txt | 1 +
gdata/gdata-feed.c | 44 +++++++++++++++++++++++++++++++++++++
gdata/gdata-feed.h | 1 +
gdata/gdata.symbols | 1 +
gdata/tests/picasaweb.c | 1 +
5 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gdata-sections.txt b/docs/reference/gdata-sections.txt
index 9f1b8ab..63d7b27 100644
--- a/docs/reference/gdata-sections.txt
+++ b/docs/reference/gdata-sections.txt
@@ -110,6 +110,7 @@ gdata_feed_get_generator
gdata_feed_get_links
gdata_feed_look_up_link
gdata_feed_get_logo
+gdata_feed_get_icon
gdata_feed_get_updated
gdata_feed_get_start_index
gdata_feed_get_total_results
diff --git a/gdata/gdata-feed.c b/gdata/gdata-feed.c
index 378acf0..3cf0346 100644
--- a/gdata/gdata-feed.c
+++ b/gdata/gdata-feed.c
@@ -60,6 +60,7 @@ struct _GDataFeedPrivate {
GTimeVal updated;
GList *categories; /* GDataCategory */
gchar *logo;
+ gchar *icon;
GList *links; /* GDataLink */
GList *authors; /* GDataAuthor */
GDataGenerator *generator;
@@ -75,6 +76,7 @@ enum {
PROP_TITLE,
PROP_SUBTITLE,
PROP_LOGO,
+ PROP_ICON,
PROP_GENERATOR,
PROP_ITEMS_PER_PAGE,
PROP_START_INDEX,
@@ -184,6 +186,21 @@ gdata_feed_class_init (GDataFeedClass *klass)
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
/**
+ * GDataFeed:icon:
+ *
+ * The URI of an icon for the feed.
+ *
+ * API reference: <ulink type="http" url="http://www.atomenabled.org/developers/syndication/atom-format-spec.php#element.icon">atom:icon</ulink>
+ *
+ * Since: 0.6.0
+ **/
+ g_object_class_install_property (gobject_class, PROP_ICON,
+ g_param_spec_string ("icon",
+ "Icon", "The URI of an icon for the feed.",
+ NULL,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ /**
* GDataFeed:generator:
*
* Details of the software used to generate the feed.
@@ -299,6 +316,7 @@ gdata_feed_finalize (GObject *object)
xmlFree (priv->id);
xmlFree (priv->etag);
xmlFree (priv->logo);
+ xmlFree (priv->icon);
/* Chain up to the parent class */
G_OBJECT_CLASS (gdata_feed_parent_class)->finalize (object);
@@ -328,6 +346,9 @@ gdata_feed_get_property (GObject *object, guint property_id, GValue *value, GPar
case PROP_LOGO:
g_value_set_string (value, priv->logo);
break;
+ case PROP_ICON:
+ g_value_set_string (value, priv->icon);
+ break;
case PROP_GENERATOR:
g_value_set_object (value, priv->generator);
break;
@@ -444,6 +465,12 @@ parse_xml (GDataParsable *parsable, xmlDoc *doc, xmlNode *node, gpointer user_da
return gdata_parser_error_duplicate_element (node, error);
self->priv->logo = (gchar*) xmlNodeListGetString (doc, node->children, TRUE);
+ } else if (xmlStrcmp (node->name, (xmlChar*) "icon") == 0) {
+ /* atom:icon */
+ if (self->priv->icon != NULL)
+ return gdata_parser_error_duplicate_element (node, error);
+
+ self->priv->icon = (gchar*) xmlNodeListGetString (doc, node->children, TRUE);
} else if (xmlStrcmp (node->name, (xmlChar*) "link") == 0) {
/* atom:link */
GDataLink *link = GDATA_LINK (_gdata_parsable_new_from_xml_node (GDATA_TYPE_LINK, doc, node, NULL, error));
@@ -781,6 +808,23 @@ gdata_feed_get_logo (GDataFeed *self)
}
/**
+ * gdata_feed_get_icon:
+ * @self: a #GDataFeed
+ *
+ * Returns the icon URI of the feed.
+ *
+ * Return value: the feed's icon URI, or %NULL
+ *
+ * Since: 0.6.0
+ **/
+const gchar *
+gdata_feed_get_icon (GDataFeed *self)
+{
+ g_return_val_if_fail (GDATA_IS_FEED (self), NULL);
+ return self->priv->icon;
+}
+
+/**
* gdata_feed_get_generator:
* @self: a #GDataFeed
*
diff --git a/gdata/gdata-feed.h b/gdata/gdata-feed.h
index 15adf85..444c635 100644
--- a/gdata/gdata-feed.h
+++ b/gdata/gdata-feed.h
@@ -79,6 +79,7 @@ GDataGenerator *gdata_feed_get_generator (GDataFeed *self);
guint gdata_feed_get_items_per_page (GDataFeed *self);
guint gdata_feed_get_start_index (GDataFeed *self);
guint gdata_feed_get_total_results (GDataFeed *self);
+const gchar *gdata_feed_get_icon (GDataFeed *self);
G_END_DECLS
diff --git a/gdata/gdata.symbols b/gdata/gdata.symbols
index c32c42c..2ee91d5 100644
--- a/gdata/gdata.symbols
+++ b/gdata/gdata.symbols
@@ -35,6 +35,7 @@ gdata_feed_get_id
gdata_feed_get_etag
gdata_feed_get_updated
gdata_feed_get_logo
+gdata_feed_get_icon
gdata_feed_get_generator
gdata_feed_get_items_per_page
gdata_feed_get_start_index
diff --git a/gdata/tests/picasaweb.c b/gdata/tests/picasaweb.c
index c2abfaa..d3b5784 100644
--- a/gdata/tests/picasaweb.c
+++ b/gdata/tests/picasaweb.c
@@ -546,6 +546,7 @@ test_album_feed (GDataService *service)
/* TODO find out why subtitle == null when returned: no subtitle for feed? printf("feed subtitle: %s\n", gdata_feed_get_subtitle(feed)); */
g_assert_cmpstr (gdata_feed_get_id (album_feed), ==, "http://picasaweb.google.com/data/feed/user/libgdata.picasaweb");
g_assert_cmpstr (gdata_feed_get_etag (album_feed), !=, NULL); /* this varies as albums change, like when a new image is uploaded in our test! */
+ g_assert_cmpstr (gdata_feed_get_icon (album_feed), ==, "http://lh6.ggpht.com/_1kdcGyvOb8c/AAAA9mDag3s/AAAAAAAAAAA/Jq-NWYWKFao/s64-c/libgdata.picasaweb.jpg");
g_assert_cmpuint (gdata_feed_get_items_per_page (album_feed), ==, 1000);
g_assert_cmpuint (gdata_feed_get_start_index (album_feed), ==, 1);
g_assert_cmpuint (gdata_feed_get_total_results (album_feed), ==, NUM_ALBUMS);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]