X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=atom%2Fbackend.c;h=793d23fe33825537911931273d7bd94f2080d954;hb=dd4b3d257f73f1f464e0e7ffb299b01444c62df0;hp=4e44c3c1a98e0f79a85a7fb1e0a819c97275768d;hpb=2f08d7a06c752df836cf1f110311b7c4cc4f57c7;p=cascardo%2Fatompub.git diff --git a/atom/backend.c b/atom/backend.c index 4e44c3c..793d23f 100644 --- a/atom/backend.c +++ b/atom/backend.c @@ -25,9 +25,8 @@ struct _atom_backend { - AtomEntry * (*retrieve_entry) (AtomCtx *, AtomID *); + AtomEntry * (*retrieve_entry) (AtomCtx *, char *); void (*enumerate_entries) (AtomCtx *, char ***, AtomEntry ***, size_t *); - int (*is_feed) (AtomCtx *, AtomID *); }; AtomBackend * @@ -37,7 +36,6 @@ atom_backend_new () backend = g_slice_new (AtomBackend); backend->retrieve_entry = NULL; backend->enumerate_entries = NULL; - backend->is_feed = NULL; return backend; } @@ -50,7 +48,7 @@ atom_backend_delete (AtomBackend *backend) void atom_backend_retrieve_entry_set (AtomBackend *backend, AtomEntry *retrieve_entry (AtomCtx *, - AtomID *)) + char *)) { backend->retrieve_entry = retrieve_entry; } @@ -65,20 +63,13 @@ atom_backend_enumerate_entries_set (AtomBackend *backend, backend->enumerate_entries = enumerate_entries; } -void -atom_backend_is_feed_set (AtomBackend *backend, - int is_feed (AtomCtx *, AtomID *)) -{ - backend->is_feed = is_feed; -} - AtomEntry * -atom_retrieve_entry (AtomCtx *ctx, AtomID *id) +atom_retrieve_entry (AtomCtx *ctx, char *req) { AtomBackend *backend; backend = atom_backend (ctx); if (backend && backend->retrieve_entry) - return backend->retrieve_entry (ctx, id); + return backend->retrieve_entry (ctx, req); return NULL; } @@ -95,6 +86,8 @@ atom_backend_enumerate_entries (AtomCtx *ctx, char *** reqs, if (backend && backend->enumerate_entries) { backend->enumerate_entries (ctx, &rreqs, &rentries, &rlen); + atom_map_backend_requests (ctx, rreqs, rentries, rlen); + atom_frontend_map_entries (ctx, rreqs, rentries, rlen); } if (reqs) { @@ -120,27 +113,6 @@ atom_backend_enumerate_entries (AtomCtx *ctx, char *** reqs, *len = rlen; } -int -atom_is_feed (AtomCtx *ctx, AtomID *id) -{ - AtomBackend *backend; - AtomError *aerr; - backend = atom_backend (ctx); - if (backend && backend->is_feed) - { - return backend->is_feed (ctx, id); - } - /* Frontend may make the decision of whether the requested resource is - * a feed or not. If it is not able to do so and backend isn't either, - * it is an error. - */ - aerr = atom_error_new (); - atom_error_code_set (aerr, 404); - atom_error_message_set (aerr, "Not Found"); - atom_error_set (ctx, aerr); - return 0; -} - AtomFeed * atom_retrieve_feed (AtomCtx *ctx) { @@ -155,29 +127,3 @@ atom_retrieve_feed (AtomCtx *ctx) g_free (entries); return feed; } - -AtomResource * -atom_retrieve_resource (AtomCtx *ctx, AtomID *id) -{ - AtomResource *res; - res = NULL; - if (atom_is_feed (ctx, id)) - { - AtomFeed *feed; - feed = atom_retrieve_feed (ctx); - if (feed == NULL) - return NULL; - res = atom_resource_new_from_feed (feed); - atom_feed_delete (feed); - } - else if (atom_error_get (ctx) == NULL) - { - AtomEntry *entry; - entry = atom_retrieve_entry (ctx, id); - if (entry == NULL) - return NULL; - res = atom_resource_new_from_entry (entry); - atom_entry_delete (entry); - } - return res; -}