From 1719796a3a10eccf91eadb38c019829110e96294 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Fri, 29 Jun 2018 11:20:51 +0800 Subject: update get_devices --- device.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) (limited to 'device.c') diff --git a/device.c b/device.c index f5b9942..3834388 100644 --- a/device.c +++ b/device.c @@ -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; } -- cgit v1.2.3