aboutsummaryrefslogtreecommitdiff
path: root/liveapi/messages.c
diff options
context:
space:
mode:
authorJulien Dessaux2019-09-12 18:05:01 +0200
committerJulien Dessaux2019-09-12 18:10:36 +0200
commit820e76108bc85051d64431495d70f27379756cc8 (patch)
tree78a9c901b5ea6c349baf0213de43cd69781ec95f /liveapi/messages.c
parentReduced the scope of a useless global variable to static (diff)
downloadrocket-cli-client-820e76108bc85051d64431495d70f27379756cc8.tar.gz
rocket-cli-client-820e76108bc85051d64431495d70f27379756cc8.tar.bz2
rocket-cli-client-820e76108bc85051d64431495d70f27379756cc8.zip
Added liveapi support, and the maar tool (mark all as read)
Diffstat (limited to '')
-rw-r--r--liveapi/messages.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/liveapi/messages.c b/liveapi/messages.c
new file mode 100644
index 0000000..2ef7958
--- /dev/null
+++ b/liveapi/messages.c
@@ -0,0 +1,70 @@
+#include <cjson/cJSON.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <features.h>
+#include "libuwsc/uwsc.h"
+
+#include "liveapi.h"
+#include "messages.h"
+
+struct methodid {
+ size_t id;
+ char sid[33];
+};
+
+static const struct methodid* get_next_method_id(void)
+{
+ static struct methodid methodid = { .id = 1, .sid = "" };
+ snprintf(methodid.sid, sizeof(methodid.sid), "%zu", ++methodid.id);
+ return &methodid;
+}
+
+void liveapi_connect(void)
+{
+ cJSON* json = cJSON_CreateObject();
+ cJSON_AddItemToObject(json, "msg", cJSON_CreateString("connect"));
+ cJSON_AddItemToObject(json, "version", cJSON_CreateString("1"));
+
+ cJSON* support = cJSON_CreateArray();
+ cJSON_AddItemToArray(support, cJSON_CreateString("1"));
+ cJSON_AddItemToArray(support, cJSON_CreateString("pre2"));
+ cJSON_AddItemToArray(support, cJSON_CreateString("pre1"));
+ cJSON_AddItemToObject(json, "support", support);
+
+ liveapi_send_json(0, json);
+}
+
+void liveapi_login(const char * authToken)
+{
+ const struct methodid * id = get_next_method_id();
+
+ cJSON* json = cJSON_CreateObject();
+ cJSON_AddItemToObject(json, "msg", cJSON_CreateString("method"));
+ cJSON_AddItemToObject(json, "id", cJSON_CreateString(id->sid));
+ cJSON_AddItemToObject(json, "method", cJSON_CreateString("login"));
+
+ cJSON* params = cJSON_CreateArray();
+ cJSON* resume = cJSON_CreateObject();
+ cJSON_AddItemToObject(resume, "resume", cJSON_CreateString(authToken));
+ cJSON_AddItemToArray(params, resume);
+ cJSON_AddItemToObject(json, "params", params);
+
+ liveapi_send_json(id->id, json);
+}
+
+void liveapi_mark_read(const char * rid)
+{
+ const struct methodid * id = get_next_method_id();
+
+ cJSON* json = cJSON_CreateObject();
+ cJSON_AddItemToObject(json, "msg", cJSON_CreateString("method"));
+ cJSON_AddItemToObject(json, "id", cJSON_CreateString(id->sid));
+ cJSON_AddItemToObject(json, "method", cJSON_CreateString("readMessages"));
+
+ cJSON* params = cJSON_CreateArray();
+ cJSON_AddItemToArray(params, cJSON_CreateString(rid));
+ cJSON_AddItemToObject(json, "params", params);
+
+ liveapi_send_json(id->id, json);
+}