]> gitweb.ps.run Git - matrix_esp_thesis/blobdiff - examples/Sync.c
sync in verify
[matrix_esp_thesis] / examples / Sync.c
index 5043884ac8197602808b0dfecd06f2e773d09664..eafed27ee8f2a111ef9a3fe804f156934d59cbf4 100644 (file)
@@ -1,31 +1,93 @@
+#include <mjson.h>\r
 #include <matrix.h>\r
+#include <stdio.h>\r
 \r
-#define SERVER "matrix.org"\r
-#define ACCESS_TOKEN "abc"\r
-#define ROOM_ID "!jhpZBTbckszblMYjMK:matrix.org"\r
+#define SERVER      "https://matrix.org"\r
+#define USER_ID     "@pscho:matrix.org"\r
+#define USERNAME    "pscho"\r
+#define PASSWORD    "Wc23EbmB9G3faMq"\r
+#define DISPLAYNAME "SyncClient"\r
+\r
+#define ROOM_ID      "!XKFUjAsGrSSrpDFIxB:matrix.org"\r
+#define EVENT_ID     "$_-y42DkC3OmJ_s40gYko7jMwrUQhoXfEut2pMV3E2J8"\r
+#define SESSION_ID   "tzdnJbDrm82D/RpgkZKpILTifQ5Rads+tVzp3ax8+Ls"\r
 \r
 int\r
-main(\r
-    int argc,\r
-    char **argv)\r
+main(void)\r
 {\r
     MatrixClient client;\r
-    MatrixClientCreate(&client,\r
+    MatrixClientInit(&client,\r
         SERVER);\r
+    \r
+    MatrixHttpInit(&client);\r
+\r
+    MatrixClientSetUserId(&client, USER_ID);\r
+\r
+    MatrixClientLoginPassword(&client,\r
+        USERNAME,\r
+        PASSWORD,\r
+        DISPLAYNAME);\r
+    \r
+    MatrixClientGenerateOnetimeKeys(&client, 10);\r
+    MatrixClientUploadOnetimeKeys(&client);\r
+    MatrixClientUploadDeviceKey(&client);\r
+    \r
+\r
+    static char eventBuffer[1024];\r
+    MatrixClientGetRoomEvent(&client,\r
+        ROOM_ID,\r
+        EVENT_ID,\r
+        eventBuffer, 1024);\r
+    \r
+    printf("event: %s\n", eventBuffer);\r
+\r
+\r
+    while (getchar() != 'q') {\r
+        static char nextBatch[1024];\r
 \r
-    MatrixClientSetAccessToken(&client,\r
-        ACCESS_TOKEN);\r
+        static char syncBuffer[1024*50];\r
+        MatrixClientSync(&client, syncBuffer, 1024*50, nextBatch);\r
+        \r
+        int res;\r
 \r
-    static char syncCharBuffer[1024];\r
-    FixedBuffer syncBuffer = { syncCharBuffer, 1024, 0 };\r
-    int syncN = 1;\r
+        const char * s = syncBuffer;\r
+        int slen = strlen(syncBuffer);\r
+        \r
+        {\r
+        int koff, klen, voff, vlen, vtype, off = 0;\r
+        for (off = 0; (off = mjson_next(s, slen, off, &koff, &klen,\r
+                                        &voff, &vlen, &vtype)) != 0; ) {\r
+            const char * key = s + koff;\r
+            const char * val = s + voff;\r
 \r
-    while (syncN > 0)\r
-    {\r
-        MatrixClientSyncN(&client, &syncBuffer, &syncN);\r
-        printf("%.*s", syncBuffer.len, (char *)syncBuffer.ptr);\r
+            printf("%.*s: %.100s\n", klen, key, val);\r
+        }\r
+        }\r
+\r
+        mjson_get_string(s, slen, "$.next_batch", nextBatch, 1024);\r
+\r
+        const char * events;\r
+        int eventsLen;\r
+        res =\r
+            mjson_find(s, slen, "$.to_device.events", &events, &eventsLen);\r
+        \r
+        if (res != MJSON_TOK_INVALID) {\r
+            {\r
+            int koff, klen, voff, vlen, vtype, off = 0;\r
+            for (off = 0; (off = mjson_next(events, eventsLen, off, &koff, &klen,\r
+                                            &voff, &vlen, &vtype)) != 0; ) {\r
+                const char * val = events + voff;\r
+\r
+                printf("%.*s\n", vlen, val);\r
+            }\r
+            }\r
+        }\r
     }\r
-    printf("\n");\r
+\r
+\r
+    MatrixClientDeleteDevice(&client);\r
+        \r
+    MatrixHttpDeinit(&client);\r
 \r
     return 0;\r
 }
\ No newline at end of file