static void xdb_get(afb_req_t req, datum *key)
{
struct json_object* obj;
+ struct json_object* args;
+ struct json_object* item = NULL;
datum result;
+ /* get the key */
+ args = afb_req_json(req);
+
+ obj = json_object_new_object();
+
+ if (json_object_object_get_ex(args, "key", &item))
+ {
+ json_object_object_add(obj, "key", json_object_get(item));
+ }
+
result = gdbm_fetch(database, *key);
if (result.dptr)
{
- obj = json_object_new_object();
+
json_object_object_add(obj, "value", json_tokener_parse(result.dptr));
+
afb_req_reply(req, obj, NULL, NULL);
+
free(result.dptr);
+
}
else
{
+ json_object_object_add(obj, "value", NULL);
AFB_API_ERROR(afbBindingRoot, "can't get key %s: %s%s%s",
DATA_STR(*key),
gdbm_strerror(gdbm_errno),
IFSYS(", ", ""),
IFSYS(strerror(errno), ""));
- afb_req_reply_f(req, NULL, "failed", "%s", gdbm_strerror(gdbm_errno));
+ afb_req_reply_f(req, obj, "failed", "%s", gdbm_strerror(gdbm_errno));
}
}
#endif