]> code.citadel.org Git - citadel.git/blobdiff - webcit-ng/server/calendar_functions.c
view_calendar.js: finalized a fetch design pattern
[citadel.git] / webcit-ng / server / calendar_functions.c
index 820de037a184fa6e98ac36b39d4c2e95c8b7626d..fe179cb008cc86daa3953026a7118fd58a2af9b0 100644 (file)
 
 // Client is requesting a message list
 void calendar_msglist(struct http_transaction *h, struct ctdlsession *c, char *range) {
-       do_404(h);
+
+       // Determine the date/time range requested by the client
+       time_t lo = atol(range);
+       char *colon = strchr(range, ':');
+       time_t hi = colon ? atol(++colon) : LONG_MAX;
+
+       // Rule out impossible ranges
+       if (hi < lo) {
+               do_404(h);
+               return;
+       }
+
+       // Begin by requesting all messages in the room
+       int i = 0;
+       Array *msglist = get_msglist(c, "ALL");
+       if (msglist == NULL) {
+               do_404(h);
+               return;
+       }
+
+       for (i = 0; i < array_len(msglist); ++i) {
+               long m;
+               memcpy(&m, array_get_element_at(msglist, i), sizeof(long));
+               syslog(LOG_DEBUG, "FIXME %ld", m);
+
+               // now we have to:
+               // 1. fetch the message from citadel server
+               // 2. parse the ical
+               // 3. figure out range
+               // we should steal code from webcit-classic for this
+
+       }
+       array_free(msglist);
+
+       // FIXME we still fail because we aren't finished yet
+       add_response_header(h, strdup("Content-type"), strdup("application/json"));
+       h->response_code = 200;
+       h->response_string = strdup("OK");
+       h->response_body = "{ \"one\":111 , \"two\":222 , \"three\":333 }";
+       h->response_body_length = strlen(h->response_body);
 }