Enlightenment CVS committal
Author : dj2
Project : misc
Module : eke
Dir : misc/eke/src
Modified Files:
eke_parse.c
Log Message:
- start the handling of rdf feeds too
===================================================================
RCS file: /cvsroot/enlightenment/misc/eke/src/eke_parse.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- eke_parse.c 28 Dec 2004 03:39:36 -0000 1.2
+++ eke_parse.c 30 Dec 2004 03:47:41 -0000 1.3
@@ -13,15 +13,21 @@
static void eke_parse_handler(Eke_Feed *feed, Eke_Parse_Type type);
static void eke_parse_xml(xmlDoc *doc, Eke_Feed *feed);
+static void eke_parse_item_free(void *val);
+
static void eke_parse_rss_feed(xmlDoc *doc, Eke_Feed *feed, xmlNode *node);
-static void eke_parse_rss_item_parse(Eke_Feed *feed, xmlDoc *doc, xmlNode
*node);
static void eke_parse_rss_xml_node(xmlDoc *doc, Eke_Feed *feed, xmlNode *node);
-static void eke_parse_item_free(void *val);
+static void eke_parse_rss_item_parse(Eke_Feed *feed, xmlDoc *doc, xmlNode
*node);
static void eke_parse_atom_feed(xmlDoc *doc, Eke_Feed *feed, xmlNode *node);
static void eke_parse_atom_xml_node(xmlDoc *doc, Eke_Feed *feed, xmlNode
*node);
static void eke_parse_atom_item_parse(Eke_Feed *feed, xmlDoc *doc, xmlNode
*node);
+static void eke_parse_rdf_feed(xmlDoc *doc, Eke_Feed *feed, xmlNode *node);
+static void eke_parse_rdf_xml_node(xmlDoc *doc, Eke_Feed *feed, xmlNode *node);
+static void eke_parse_rdf_channel_parse(Eke_Feed *feed, xmlDoc *doc, xmlNode
*node);
+static void eke_parse_rdf_item_parse(Eke_Feed *feed, xmlDoc *doc, xmlNode
*node);
+
static void strtrim(char *str);
void
@@ -86,6 +92,9 @@
else if (!strcasecmp(node->name, "feed"))
eke_parse_atom_feed(doc, feed, node);
+ else if (!strcasecmp(node->name, "rdf"))
+ eke_parse_rdf_feed(doc, feed, node);
+
else
printf("Got a feed of type %s\n", node->name);
}
@@ -289,6 +298,96 @@
ecore_list_append(feed->items, item);
}
+static void
+eke_parse_rdf_feed(xmlDoc *doc, Eke_Feed *feed, xmlNode *node)
+{
+ feed->rss_version = 0.0;
+ eke_parse_rdf_xml_node(doc, feed, node->xmlChildrenNode);
+}
+
+static void
+eke_parse_rdf_xml_node(xmlDoc *doc, Eke_Feed *feed, xmlNode *node)
+{
+ while (node) {
+ if (!strcasecmp(node->name, "channel")) {
+ eke_parse_rdf_channel_parse(feed, doc, node->xmlChildrenNode);
+
+ } else if (!strcasecmp(node->name, "item")) {
+ eke_parse_rdf_item_parse(feed, doc, node->xmlChildrenNode);
+ }
+
+ node = node->next;
+ }
+ feed->data.type = EKE_FEED_DATA_RESPONSE_CHANGED;
+}
+
+static void
+eke_parse_rdf_channel_parse(Eke_Feed *feed, xmlDoc *doc, xmlNode *node)
+{
+ xmlNode *tmp;
+ char *ptr;
+
+ while (node) {
+ if (!strcasecmp(node->name, "title")) {
+ tmp = node->xmlChildrenNode;
+ ptr = xmlNodeListGetString(doc, tmp, 1);
+ strtrim(ptr);
+ feed->title = ptr;
+
+ } else if (!strcasecmp(node->name, "link")) {
+ ptr = xmlGetProp(node, "href");
+ strtrim(ptr);
+ feed->link = ptr;
+
+ }
+ node = node->next;
+ }
+}
+
+static void
+eke_parse_rdf_item_parse(Eke_Feed *feed, xmlDoc *doc, xmlNode *node)
+{
+ Eke_Feed_Item *item;
+ xmlNode *tmp;
+ char *ptr;
+
+ item = eke_feed_item_new();
+ while (node) {
+ if (!strcasecmp(node->name, "title")) {
+ tmp = node->xmlChildrenNode;
+ ptr = xmlNodeListGetString(doc, tmp, 1);
+ strtrim(ptr);
+
+ eke_feed_item_title_set(item, ptr);
+ IF_FREE(ptr);
+
+ } else if (!strcasecmp(node->name, "link")) {
+ ptr = xmlGetProp(node, "href");
+ strtrim(ptr);
+
+ eke_feed_item_link_set(item, ptr);
+ IF_FREE(ptr);
+
+ } else if (!strcasecmp(node->name, "description")) {
+ ptr = xmlNodeGetContent(node);
+ strtrim(ptr);
+
+ eke_feed_item_description_set(item, ptr);
+ IF_FREE(ptr);
+
+ } else if (!strcasecmp(node->name, "dc:date")) {
+ tmp = node->xmlChildrenNode;
+ ptr = xmlNodeListGetString(doc, tmp, 1);
+ strtrim(ptr);
+
+ eke_feed_item_date_set(item, ptr);
+ IF_FREE(ptr);
+ }
+ node = node->next;
+ }
+ ecore_list_append(feed->items, item);
+}
+
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs