summaryrefslogtreecommitdiff
path: root/device.c
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-06-29 11:20:51 +0800
committerIru Cai <mytbk920423@gmail.com>2018-06-29 11:20:51 +0800
commit1719796a3a10eccf91eadb38c019829110e96294 (patch)
tree47ff1e6401fd5202aad0eccacb94bb19550f294f /device.c
parentb065c82627d83d1b207985d78276eb80f0b7b266 (diff)
downloadmatrix-curl-1719796a3a10eccf91eadb38c019829110e96294.tar.xz
update get_devices
Diffstat (limited to 'device.c')
-rw-r--r--device.c34
1 files changed, 24 insertions, 10 deletions
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;
}