3 // Copyright (c) 1996-2022 by the citadel.org team
5 // This program is open source software. Use, duplication, or
6 // disclosure are subject to the GNU General Public License v3.
11 // Dispatcher for "/ctdl/f" and "/ctdl/f/" for the floor list
12 void floor_list(struct http_transaction *h, struct ctdlsession *c) {
16 ctdl_printf(c, "LFLR");
17 ctdl_readline(c, buf, sizeof(buf));
23 JsonValue *j = NewJsonArray(HKEY("lflr"));
24 while (ctdl_readline(c, buf, sizeof(buf)), strcmp(buf, "000")) {
28 JsonValue *jr = NewJsonObject(HKEY("floor"));
30 extract_token(floorname, buf, 1, '|', sizeof floorname);
31 JsonObjectAppend(jr, NewJsonPlainString(HKEY("name"), floorname, -1));
33 JsonObjectAppend(jr, NewJsonNumber(HKEY("num"), extract_int(buf, 0)));
34 JsonObjectAppend(jr, NewJsonNumber(HKEY("refcount"), extract_int(buf, 2)));
36 JsonArrayAppend(j, jr); // add the room to the array
39 StrBuf *sj = NewStrBuf();
40 SerializeJson(sj, j, 1); // '1' == free the source array
42 add_response_header(h, strdup("Content-type"), strdup("application/json"));
43 h->response_code = 200;
44 h->response_string = strdup("OK");
45 h->response_body_length = StrLength(sj);
46 h->response_body = SmashStrBuf(&sj);
50 // Dispatcher for paths starting with /ctdl/f/
51 // (This is a stub ... we will need to add more functions when we can do more than just a floor list)
52 void ctdl_f(struct http_transaction *h, struct ctdlsession *c) {