]> gitweb.ps.run Git - matrix_esp_thesis/blobdiff - examples/Cli.c
share, save, load, init, print megolm out sessions
[matrix_esp_thesis] / examples / Cli.c
index b2fbe451f967bab7c672e04a8f063a2da9b06cea..daf79e9c21ca6ccc2ec35678a14d4194b5c3360d 100644 (file)
@@ -133,8 +133,6 @@ ExecuteCommand(
             "{\"body\":\"%s\",\"msgtype\":\"m.text\"}",\r
             args[1]);\r
 \r
-        printf("Sending %s to %s\n", body, args[0]);\r
-\r
         MatrixClientSendEvent(client,\r
             args[0],\r
             "m.room.message",\r
@@ -148,6 +146,71 @@ ExecuteCommand(
     else if (CheckCommand(cmd, "getuserid")) {\r
         printf("User ID: %s\n", client->userId);\r
     }\r
+    else if (CheckCommand(cmd, "sendencrypted")) {\r
+        CHECK_ARGS(2, "<room_id> <message>")\r
+\r
+        static char body[1024];\r
+        snprintf(body, 1024,\r
+            "{\"body\":\"%s\",\"msgtype\":\"m.text\"}",\r
+            args[1]);\r
+\r
+        MatrixClientSendEventEncrypted(client,\r
+            args[0],\r
+            "m.room.message",\r
+            body);\r
+    }\r
+    else if (CheckCommand(cmd, "sharesession")) {\r
+        CHECK_ARGS(3, "<session_index> <user_id> <device_id>")\r
+\r
+        int sessionIndex = atoi(args[0]);\r
+\r
+        MatrixClientShareMegolmOutSession(client,\r
+            args[1],\r
+            args[2],\r
+            &client->megolmOutSessions[sessionIndex]);\r
+    }\r
+    else if (CheckCommand(cmd, "savesession")) {\r
+        CHECK_ARGS(3, "<session_index> <filename> <key>")\r
+\r
+        int sessionIndex = atoi(args[0]);\r
+\r
+        MatrixMegolmOutSessionSave(\r
+            &client->megolmOutSessions[sessionIndex],\r
+            args[1],\r
+            args[2]);\r
+    }\r
+    else if (CheckCommand(cmd, "loadsession")) {\r
+        CHECK_ARGS(3, "<session_index> <filename> <key>")\r
+\r
+        int sessionIndex = atoi(args[0]);\r
+\r
+        MatrixMegolmOutSessionLoad(\r
+            &client->megolmOutSessions[sessionIndex],\r
+            args[1],\r
+            args[2]);\r
+    }\r
+    else if (CheckCommand(cmd, "printsessions")) {\r
+        for (int i = 0; i < client->numMegolmOutSessions; i++) {\r
+            printf("%d: %s\t%s\t%s\n", i,\r
+                client->megolmOutSessions[i].roomId,\r
+                client->megolmOutSessions[i].id,\r
+                client->megolmOutSessions[i].key);\r
+        }\r
+    }\r
+    else if (CheckCommand(cmd, "initsession")) {\r
+        CHECK_ARGS(1, "<room_id>")\r
+\r
+        if (! MatrixClientInitMegolmOutSession(client,\r
+            args[0]))\r
+        {\r
+            printf("Maximum number of Megolm sessions reached (%d)\n", NUM_MEGOLM_SESSIONS);\r
+        }\r
+    }\r
+    \r
+    \r
+    else {\r
+        printf("Unknown command\n");\r
+    }\r
 #undef CHECK_ARGS\r
 }\r
 \r