EXPORTED struct carddav_db *carddav_open_mailbox(struct mailbox *mailbox) { struct carddav_db *carddavdb = NULL; char *userid = mboxname_to_userid(mailbox->name); if (userid) { carddavdb = carddav_open_userid(userid); free(userid); return carddavdb; } sqldb_t *db = dav_open_mailbox(mailbox); if (!db) return NULL; carddavdb = xzmalloc(sizeof(struct carddav_db)); carddavdb->userid = xstrdup(userid); carddavdb->db = db; return carddavdb; }
{ NULL, NULL } /* UNLOCK */ } }; static int get_email(struct transaction_t *txn __attribute__((unused)), const char *userid, const char *key) { struct carddav_db *db = NULL; strarray_t *array = NULL; char *result = NULL; json_t *json; int ret = HTTP_NO_CONTENT; int i; /* XXX init just incase carddav not enabled? */ db = carddav_open_userid(userid); if (!db) goto done; array = carddav_getemail(db, key); if (!array) goto done; json = json_array(); for (i = 0; i < strarray_size(array); i++) { json_array_append_new(json, json_string(strarray_nth(array, i))); } result = json_dumps(json, JSON_PRESERVE_ORDER|JSON_COMPACT); json_decref(json); txn->resp_body.type = "application/json"; txn->resp_body.len = strlen(result);