Add support for content in the entry.
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Mon, 9 Feb 2009 02:29:41 +0000 (00:29 -0200)
committerThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Mon, 9 Feb 2009 02:31:57 +0000 (00:31 -0200)
Finally, an atom:entry gets its atom:content.

atom/entry.c
include/atompub/entry.h

index ff414ee..fd2921e 100644 (file)
@@ -33,6 +33,7 @@ struct _atom_entry
   GPtrArray *authors;
   GPtrArray *categories;
   char *summary;
+  AtomContent *content;
 };
 
 static void atom_entry_updated_set_from_iso8601 (AtomEntry *, char *);
@@ -56,6 +57,7 @@ atom_entry_new (char *id, char *title, AtomPerson *author)
   entry->categories = NULL;
   atom_entry_author_add (entry, author);
   entry->summary = NULL;
+  entry->content = NULL;
   return entry;
 }
 
@@ -96,6 +98,8 @@ atom_entry_new_data_len (char *data, size_t len)
         atom_entry_author_add (entry, atom_person_new_from_xmlnode (child));
       else if (!xmlStrcmp (child->name, "category"))
         atom_entry_category_add (entry, atom_category_new_from_xmlnode (child));
+      else if (!xmlStrcmp (child->name, "content"))
+       entry->content = atom_content_new_from_xmlnode (child);
       else
         xmlFree (content);
     }
@@ -261,6 +265,20 @@ atom_entry_summary_set (AtomEntry *entry, char *summary)
   entry->summary = g_strdup (summary);
 }
 
+AtomContent *
+atom_entry_content (AtomEntry *entry)
+{
+  return entry->content;
+}
+
+void
+atom_entry_content_set (AtomEntry *entry, AtomContent *content)
+{
+  if (entry->content)
+    atom_content_delete (entry->content);
+  entry->content = content;
+}
+
 static void
 atom_entry_update_xmlnode (AtomEntry *entry)
 {
@@ -294,7 +312,8 @@ atom_entry_update_xmlnode (AtomEntry *entry)
               !xmlStrcmp (child->name, "updated") ||
               !xmlStrcmp (child->name, "summary") ||
               !xmlStrcmp (child->name, "author") ||
-              !xmlStrcmp (child->name, "category"))
+              !xmlStrcmp (child->name, "category") ||
+             !xmlStrcmp (child->name, "content"))
             {
               xmlUnlinkNode (child);
               xmlFreeNode (child);
@@ -323,6 +342,8 @@ atom_entry_update_xmlnode (AtomEntry *entry)
       cat = atom_category_to_xmlnode (category, "category");
       xmlAddChild (root, cat);
     }
+  if (entry->content)
+    xmlAddChild (root, atom_content_to_xmlnode (entry->content));
 }
 
 void
index af95156..4226a1d 100644 (file)
@@ -25,6 +25,7 @@
 #include <atompub/person.h>
 #include <atompub/category.h>
 #include <atompub/id.h>
+#include <atompub/content.h>
 
 typedef struct _atom_entry AtomEntry;
 
@@ -43,6 +44,8 @@ void atom_entry_categories (AtomEntry *, AtomCategory ***, size_t *);
 void atom_entry_category_add (AtomEntry *, AtomCategory *);
 char * atom_entry_summary (AtomEntry *);
 void atom_entry_summary_set (AtomEntry *, char *);
+AtomContent *atom_entry_content (AtomEntry *);
+void atom_entry_content_set (AtomEntry *, AtomContent *);
 void atom_entry_string (AtomEntry *, char **, size_t *);
 
 #endif