]> gitweb.ps.run Git - matrix_esp_thesis/blobdiff - src/matrix.c
send example, http PUT
[matrix_esp_thesis] / src / matrix.c
index 5759ba24334a3d1ee8aca71e927e3cef50f248ad..7cc4de9fe11d25a054d6e62a44563d3f97682b82 100644 (file)
@@ -1,5 +1,6 @@
 #include "matrix.h"\r
 \r
+#include <time.h>\r
 #include <stdio.h>\r
 #include <mjson.h>\r
 \r
@@ -8,6 +9,10 @@
 #define LOGIN_RESPONSE_SIZE 1024\r
 #define LOGIN_URL "/_matrix/client/v3/login"\r
 \r
+#define ROOMEVENT_REQUEST_SIZE 1024\r
+#define ROOMEVENT_RESPONSE_SIZE 1024\r
+#define ROOMEVENT_URL "/_matrix/client/v3/rooms/%s/send/%s/%d"\r
+\r
 \r
 bool\r
 MatrixClientInit(\r
@@ -23,6 +28,22 @@ MatrixClientInit(
     return true;\r
 }\r
 \r
+bool\r
+MatrixClientSetAccessToken(\r
+    MatrixClient * client,\r
+    const char * accessToken)\r
+{\r
+    int accessTokenLen = strlen(accessToken);\r
+\r
+    if (accessTokenLen < ACCESS_TOKEN_SIZE - 1)\r
+        return false;\r
+\r
+    for (int i = 0; i < accessTokenLen; i++)\r
+        client->accessTokenBuffer[i] = accessToken[i];\r
+\r
+    return true;\r
+}\r
+\r
 // https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3login\r
 bool\r
 MatrixClientLoginPassword(\r
@@ -52,7 +73,8 @@ MatrixClientLoginPassword(
         MatrixHttpPost(client,\r
             LOGIN_URL,\r
             requestBuffer,\r
-            responseBuffer, LOGIN_RESPONSE_SIZE);\r
+            responseBuffer, LOGIN_RESPONSE_SIZE,\r
+            false);\r
     \r
     int responseLen = strlen(responseBuffer);\r
     \r
@@ -74,4 +96,26 @@ MatrixClientLoginPassword(
 \r
     return true;\r
 }\r
+    \r
+bool\r
+MatrixClientSendEvent(\r
+    MatrixClient * client,\r
+    const char * roomId,\r
+    const char * msgType,\r
+    const char * msgBody)\r
+{    \r
+    static char requestUrl[MAX_URL_LEN];\r
+    sprintf_s(requestUrl, MAX_URL_LEN,\r
+        ROOMEVENT_URL, roomId, msgType, time(NULL));\r
+\r
+    static char responseBuffer[ROOMEVENT_RESPONSE_SIZE];\r
+    bool result =\r
+        MatrixHttpPut(client,\r
+            requestUrl,\r
+            msgBody,\r
+            responseBuffer, ROOMEVENT_RESPONSE_SIZE,\r
+            true);\r
+    \r
+    return result;\r
+}\r
 \r