Frontend maps request to Atom ID before retrieving resource
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Mon, 13 Oct 2008 00:33:52 +0000 (21:33 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Mon, 13 Oct 2008 01:31:46 +0000 (22:31 -0300)
frontend/cgi/cgi.c

index 069a073..736fb68 100644 (file)
@@ -48,9 +48,22 @@ cgi_serve_request (AtomCtx *ctx)
       AtomID *id;
       AtomEntry *atom;
       AtomError *error;
-      id = atom_id_new (path);
-      atom = atom_retrieve_entry (ctx, id);
-      atom_id_delete (id);
+      char *req;
+      id = atom_id_new_from_frontend (ctx, path);
+      if (id == NULL || (req = atom_id_to_backend (ctx, id)) == NULL)
+        {
+          atom = NULL;
+          error = atom_error_new ();
+          atom_error_code_set (error, 404);
+          atom_error_message_set (error, "Resource not found");
+          atom_error_set (ctx, error);
+        }
+      else
+        {
+          atom = atom_retrieve_entry (ctx, req);
+        }
+      if (id != NULL)
+        atom_id_delete (id);
       if (atom)
        {
          char * str;