diff options
author | Iru Cai <mytbk920423@gmail.com> | 2018-06-29 11:20:51 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2018-06-29 11:20:51 +0800 |
commit | 1719796a3a10eccf91eadb38c019829110e96294 (patch) | |
tree | 47ff1e6401fd5202aad0eccacb94bb19550f294f /device.c | |
parent | b065c82627d83d1b207985d78276eb80f0b7b266 (diff) | |
download | matrix-curl-1719796a3a10eccf91eadb38c019829110e96294.tar.xz |
update get_devices
Diffstat (limited to 'device.c')
-rw-r--r-- | device.c | 34 |
1 files changed, 24 insertions, 10 deletions
@@ -10,8 +10,9 @@ DELETE /_matrix/client/r0/devices/{deviceId} #include "session.h" #include "util.h" #include "curl_util.h" +#include "device.h" -void get_devices(matrix_session *sess) +matrix_device * get_devices(matrix_session *sess, int *n) { /* GET /_matrix/client/r0/devices */ const char *u[] = { sess->url, @@ -20,15 +21,28 @@ void get_devices(matrix_session *sess) json_object *resp; _curl_get(sess->curl, requrl, &resp); if (resp) { - printf("%s\n", json_object_to_json_string(resp)); - /* - const char *roomid = json_gets(resp, "room_id"); - if (roomid) { - const char *r = copy_str(roomid); - json_object_put(resp); - return r; + json_object *devarr; + if (json_object_object_get_ex(resp, "devices", &devarr) + && json_object_is_type(devarr, json_type_array)) { + size_t ndev = json_object_array_length(devarr); + matrix_device *devs = (matrix_device *)malloc(sizeof(matrix_device) * ndev); + for (size_t i = 0; i < ndev; i++) { + json_object *devi = json_object_array_get_idx(devarr, i); + devs[i].device_id = json_gets_dup(devi, "device_id"); + devs[i].display_name = json_gets_dup(devi, "display_name"); + devs[i].last_seen_ip = json_gets_dup(devi, "last_seen_ip"); + json_object *ts; + if (json_object_object_get_ex(devi, "last_seen_ts", &ts)) { + devs[i].last_seen_ts = json_object_get_int64(ts); + } else { + devs[i].last_seen_ts = 0; + } + } + *n = ndev; + return devs; } - */ + json_object_put(resp); } - json_object_put(resp); + *n = 0; + return NULL; } |