Renamed retrieve_resource to retrieve_entry
[cascardo/atompub.git] / src / backend.c
index f8bcf35..d1ffec7 100644 (file)
@@ -22,7 +22,8 @@
 
 struct _atom_backend
 {
-  Atom * (*retrieve_resource) (AtomCtx *, IRI *);
+  AtomEntry * (*retrieve_entry) (AtomCtx *, IRI *);
+  void (*enumerate_entries) (AtomCtx *, AtomEntry ***, size_t *);
 };
 
 AtomBackend *
@@ -30,7 +31,8 @@ atom_backend_new ()
 {
   AtomBackend *backend;
   backend = g_slice_new (AtomBackend);
-  backend->retrieve_resource = NULL;
+  backend->retrieve_entry = NULL;
+  backend->enumerate_entries = NULL;
   return backend;
 }
 
@@ -41,19 +43,51 @@ atom_backend_delete (AtomBackend *backend)
 }
 
 void
-atom_backend_retrieve_resource_set (AtomBackend *backend,
-                                   Atom *retrieve_resource (AtomCtx *,
-                                                            IRI *))
+atom_backend_retrieve_entry_set (AtomBackend *backend,
+                                AtomEntry *retrieve_entry (AtomCtx *,
+                                                           IRI *))
 {
-  backend->retrieve_resource = retrieve_resource;
+  backend->retrieve_entry = retrieve_entry;
 }
 
-Atom *
-atom_retrieve_resource (AtomCtx *ctx, IRI *iri)
+void
+atom_backend_enumerate_entries_set (AtomBackend *backend,
+                                   void enumerate_entries (AtomCtx *,
+                                                           AtomEntry ***, size_t*))
+{
+  backend->enumerate_entries = enumerate_entries;
+}
+
+AtomEntry *
+atom_retrieve_entry (AtomCtx *ctx, IRI *iri)
 {
   AtomBackend *backend;
   backend = atom_backend (ctx);
-  if (backend && backend->retrieve_resource)
-    return backend->retrieve_resource (ctx, iri);
+  if (backend && backend->retrieve_entry)
+    return backend->retrieve_entry (ctx, iri);
   return NULL;
 }
+
+void
+atom_backend_enumerate_entries (AtomCtx *ctx, AtomEntry *** entries, size_t *len)
+{
+  AtomBackend *backend;
+  backend = atom_backend (ctx);
+  if (backend && backend->enumerate_entries)
+    {
+      backend->enumerate_entries (ctx, entries, len);
+      return;
+    }
+}
+
+AtomFeed *
+atom_retrieve_feed (AtomCtx *ctx)
+{
+  AtomFeed *feed;
+  AtomEntry **entries;
+  size_t len;
+  atom_backend_enumerate_entries (ctx, &entries, &len);
+  feed = atom_feed_new ();
+  atom_feed_entry_append_array (feed, entries, len);
+  return feed;
+}