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;
}
AtomEntry **entries;
size_t len;
atom_backend_enumerate_entries (ctx, &entries, &len);
+ if (atom_error_get (ctx) != NULL)
+ return NULL;
feed = atom_feed_new ();
atom_feed_entry_append_array (feed, entries, len);
return feed;
atom_retrieve_resource (AtomCtx *ctx, AtomID *id)
{
AtomResource *res;
+ res = NULL;
if (atom_is_feed (ctx, id))
{
AtomFeed *feed;
res = atom_resource_new_from_feed (feed);
atom_feed_delete (feed);
}
- else
+ else if (atom_error_get (ctx) != NULL)
{
AtomEntry *entry;
entry = atom_retrieve_entry (ctx, id);