Retrieve resource returns either an entry or a feed
[cascardo/atompub.git] / src / backend.c
index d1ffec7..30ba7a7 100644 (file)
 
 
 #include <atompub/atom.h>
+
 #include <glib.h>
 
+#include <string.h>
+
 struct _atom_backend
 {
   AtomEntry * (*retrieve_entry) (AtomCtx *, IRI *);
@@ -91,3 +94,26 @@ atom_retrieve_feed (AtomCtx *ctx)
   atom_feed_entry_append_array (feed, entries, len);
   return feed;
 }
+
+AtomResource *
+atom_retrieve_resource (AtomCtx *ctx, IRI *iri)
+{
+  AtomResource *res;
+  char * path;
+  path = iri_get_path (iri);
+  if (!strcmp (path, "/"))
+    {
+      AtomFeed *feed;
+      feed = atom_retrieve_feed (ctx);
+      res = atom_resource_new_from_feed (feed);
+      atom_feed_delete (feed);
+    }
+  else
+    {
+      AtomEntry *entry;
+      entry = atom_retrieve_entry (ctx, iri);
+      res = atom_resource_new_from_entry (entry);
+      atom_entry_delete (entry);
+    }
+  return res;
+}