[libgrss] Using grss_feed_channel_fetch_all_async() in FeedsPool
- From: Roberto Guido <rguido src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgrss] Using grss_feed_channel_fetch_all_async() in FeedsPool
- Date: Mon, 13 Feb 2012 00:23:07 +0000 (UTC)
commit 47c576485674a147eece4e979ffbaa40d1ffed5e
Author: Roberto Guido <bob4job gmail com>
Date: Mon Feb 13 01:22:19 2012 +0100
Using grss_feed_channel_fetch_all_async() in FeedsPool
src/feed-channel.c | 3 +++
src/feeds-pool.c | 38 ++++++++------------------------------
src/feeds-publisher.c | 3 +++
3 files changed, 14 insertions(+), 30 deletions(-)
---
diff --git a/src/feed-channel.c b/src/feed-channel.c
index ba67807..63ffe9c 100644
--- a/src/feed-channel.c
+++ b/src/feed-channel.c
@@ -243,6 +243,9 @@ grss_feed_channel_get_format (GrssFeedChannel *channel)
void
grss_feed_channel_set_source (GrssFeedChannel *channel, gchar *source)
{
+ /*
+ TODO Check if the provided string is a valid URL
+ */
FREE_STRING (channel->priv->source);
channel->priv->source = g_strdup (source);
}
diff --git a/src/feeds-pool.c b/src/feeds-pool.c
index ac73e25..4ab9fea 100644
--- a/src/feeds-pool.c
+++ b/src/feeds-pool.c
@@ -258,7 +258,7 @@ grss_feeds_pool_get_listened_num (GrssFeedsPool *pool)
}
static void
-feed_downloaded (SoupSession *session, SoupMessage *msg, gpointer user_data)
+feed_downloaded (GObject *source, GAsyncResult *res, gpointer user_data)
{
guint status;
GList *items;
@@ -270,39 +270,17 @@ feed_downloaded (SoupSession *session, SoupMessage *msg, gpointer user_data)
if (feed->pool->priv->running == FALSE)
return;
- items = NULL;
- feed->next_fetch = time (NULL) + (grss_feed_channel_get_update_interval (feed->channel) * 60);
- g_object_get (msg, "status-code", &status, NULL);
+ error = NULL;
+ items = grss_feed_channel_fetch_all_finish (GRSS_FEED_CHANNEL (source), res, &error);
- if (status < 200 || status > 299) {
- g_warning ("Unable to download from %s", grss_feed_channel_get_source (feed->channel));
- }
- else {
- doc = content_to_xml ((const gchar*) msg->response_body->data, msg->response_body->length);
-
- if (doc != NULL) {
- error = NULL;
- items = grss_feed_parser_parse (feed->pool->priv->parser, feed->channel, doc, &error);
- xmlFreeDoc (doc);
-
- if (items == NULL && error) {
- g_warning ("Unable to parse feed at %s: %s", grss_feed_channel_get_source (feed->channel), error->message);
- g_error_free (error);
- }
- }
+ if (items == NULL && error) {
+ g_warning ("Unable to parse feed at %s: %s", grss_feed_channel_get_source (feed->channel), error->message);
+ g_error_free (error);
}
g_signal_emit (feed->pool, signals [FEED_READY], 0, feed->channel, items, NULL);
-}
-static void
-fetch_feed (GrssFeedChannelWrap *feed)
-{
- SoupMessage *msg;
-
- g_signal_emit (feed->pool, signals [FEED_FETCHING], 0, feed->channel, NULL);
- msg = soup_message_new ("GET", grss_feed_channel_get_source (feed->channel));
- soup_session_queue_message (feed->pool->priv->soupsession, msg, feed_downloaded, feed);
+ feed->next_fetch = time (NULL) + (grss_feed_channel_get_update_interval (feed->channel) * 60);
}
static gboolean
@@ -324,7 +302,7 @@ fetch_feeds (gpointer data)
for (iter = pool->priv->feeds_list; iter; iter = g_list_next (iter)) {
feed = (GrssFeedChannelWrap*) iter->data;
if (feed->next_fetch <= now)
- fetch_feed (feed);
+ grss_feed_channel_fetch_all_async (feed->channel, feed_downloaded, feed);
}
return TRUE;
diff --git a/src/feeds-publisher.c b/src/feeds-publisher.c
index 00b61b9..4053901 100644
--- a/src/feeds-publisher.c
+++ b/src/feeds-publisher.c
@@ -210,6 +210,9 @@ grss_feeds_publisher_new ()
return g_object_new (FEEDS_PUBLISHER_TYPE, NULL);
}
+/*
+ TODO Provide a GrssFeedFormatter to permit Atom and RSS publication
+*/
static gchar*
format_feed_text (GrssFeedsPublisher *pub, GrssFeedChannel *channel, GList *items)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]