]> gitweb.ps.run Git - matrix_esp_thesis/blob - examples/Sync.c
eafed27ee8f2a111ef9a3fe804f156934d59cbf4
[matrix_esp_thesis] / examples / Sync.c
1 #include <mjson.h>\r
2 #include <matrix.h>\r
3 #include <stdio.h>\r
4 \r
5 #define SERVER      "https://matrix.org"\r
6 #define USER_ID     "@pscho:matrix.org"\r
7 #define USERNAME    "pscho"\r
8 #define PASSWORD    "Wc23EbmB9G3faMq"\r
9 #define DISPLAYNAME "SyncClient"\r
10 \r
11 #define ROOM_ID      "!XKFUjAsGrSSrpDFIxB:matrix.org"\r
12 #define EVENT_ID     "$_-y42DkC3OmJ_s40gYko7jMwrUQhoXfEut2pMV3E2J8"\r
13 #define SESSION_ID   "tzdnJbDrm82D/RpgkZKpILTifQ5Rads+tVzp3ax8+Ls"\r
14 \r
15 int\r
16 main(void)\r
17 {\r
18     MatrixClient client;\r
19     MatrixClientInit(&client,\r
20         SERVER);\r
21     \r
22     MatrixHttpInit(&client);\r
23 \r
24     MatrixClientSetUserId(&client, USER_ID);\r
25 \r
26     MatrixClientLoginPassword(&client,\r
27         USERNAME,\r
28         PASSWORD,\r
29         DISPLAYNAME);\r
30     \r
31     MatrixClientGenerateOnetimeKeys(&client, 10);\r
32     MatrixClientUploadOnetimeKeys(&client);\r
33     MatrixClientUploadDeviceKey(&client);\r
34     \r
35 \r
36     static char eventBuffer[1024];\r
37     MatrixClientGetRoomEvent(&client,\r
38         ROOM_ID,\r
39         EVENT_ID,\r
40         eventBuffer, 1024);\r
41     \r
42     printf("event: %s\n", eventBuffer);\r
43 \r
44 \r
45     while (getchar() != 'q') {\r
46         static char nextBatch[1024];\r
47 \r
48         static char syncBuffer[1024*50];\r
49         MatrixClientSync(&client, syncBuffer, 1024*50, nextBatch);\r
50         \r
51         int res;\r
52 \r
53         const char * s = syncBuffer;\r
54         int slen = strlen(syncBuffer);\r
55         \r
56         {\r
57         int koff, klen, voff, vlen, vtype, off = 0;\r
58         for (off = 0; (off = mjson_next(s, slen, off, &koff, &klen,\r
59                                         &voff, &vlen, &vtype)) != 0; ) {\r
60             const char * key = s + koff;\r
61             const char * val = s + voff;\r
62 \r
63             printf("%.*s: %.100s\n", klen, key, val);\r
64         }\r
65         }\r
66 \r
67         mjson_get_string(s, slen, "$.next_batch", nextBatch, 1024);\r
68 \r
69         const char * events;\r
70         int eventsLen;\r
71         res =\r
72             mjson_find(s, slen, "$.to_device.events", &events, &eventsLen);\r
73         \r
74         if (res != MJSON_TOK_INVALID) {\r
75             {\r
76             int koff, klen, voff, vlen, vtype, off = 0;\r
77             for (off = 0; (off = mjson_next(events, eventsLen, off, &koff, &klen,\r
78                                             &voff, &vlen, &vtype)) != 0; ) {\r
79                 const char * val = events + voff;\r
80 \r
81                 printf("%.*s\n", vlen, val);\r
82             }\r
83             }\r
84         }\r
85     }\r
86 \r
87 \r
88     MatrixClientDeleteDevice(&client);\r
89         \r
90     MatrixHttpDeinit(&client);\r
91 \r
92     return 0;\r
93 }