diff --git a/main.c b/main.c index fa92e7d..6559a8b 100644 --- a/main.c +++ b/main.c @@ -92,20 +92,25 @@ sendbooks(struct kreq *r) struct kjsonreq req; const char *errid; int64_t id = -1; + struct book *b = NULL; - http_open(r, KHTTP_200); - kjson_open(&req, r); - kjson_obj_open(&req); - kjson_putstringp(&req, "data", "books"); if (NULL != r->fieldmap[KEY_ID]) id = r->fieldmap[KEY_ID]->parsed.i; if (r->path[0] != '\0') id = strtonum(r->path, INT64_MIN, INT64_MAX, &errid); if (id > 0) { - kjson_putintp(&req, "id", id); - db_book_load(r, id); + b = db_book_load(r, id); + } + http_open(r, (id > 0 && NULL == b) ? KHTTP_404 : KHTTP_200); + kjson_open(&req, r); + kjson_obj_open(&req); + if (NULL == b) { + kjson_putstringp(&req, "data", "error"); + } else { + kjson_putstringp(&req, "data", "books"); + kjson_putintp(&req, "id", b->id); + kjson_putstringp(&req, "title", b->title); } - kjson_putstringp(&req, "_path", r->path); kjson_putstringp(&req, "_pname", r->pname); kjson_putstringp(&req, "_pagename", r->pagename);