GET /ctdl/r/<roomname>/<msgnum> Retrieve the content of an individual message
GET /ctdl/r/<roomname>/<msgnum>/json Retrieve an individual message in a room, encapsulated in JSON
GET /ctdl/r/<roomname>/<msgnum>/<part> Retrieve a MIME component of a message, specified by partnum
+
+GET /ctdl/r/<roomname>/calendar:<from>:<to>
+ Retrieve calendar items in the current room.
+ "from" and "to" comprise a range expressed in unix timestamps.
+ You can omit either or both timestamps but not the colons.
+
DELETE /ctdl/r/<roomname>/<msgnum> Delete a message from a room
MOVE /ctdl/r/<roomname>/<msgnum> Move a message to another room (requires Destination)
// Client is requesting a message list
void calendar_msglist(struct http_transaction *h, struct ctdlsession *c, char *range) {
+ // 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");
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);
return;
}
- if (!strncasecmp(buf, "calendar.", 9)) { // Client is requesting a calendar range
+ if (!strncasecmp(buf, "calendar:", 9)) { // Client is requesting a calendar range
unescape_input(&buf[9]);
calendar_msglist(h, c, &buf[9]);
return;