]> gitweb.ps.run Git - matrix_esp_thesis/blob - examples/Sync.c
clean up
[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     \r
21     MatrixHttpInit(&client.hc, SERVER);\r
22 \r
23     MatrixClientSetUserId(&client, USER_ID);\r
24 \r
25     MatrixClientLoginPassword(&client,\r
26         USERNAME,\r
27         PASSWORD,\r
28         DISPLAYNAME);\r
29     \r
30     MatrixClientGenerateOnetimeKeys(&client, 10);\r
31     MatrixClientUploadOnetimeKeys(&client);\r
32     MatrixClientUploadDeviceKeys(&client);\r
33     \r
34 \r
35     static char eventBuffer[1024];\r
36     MatrixClientGetRoomEvent(&client,\r
37         ROOM_ID,\r
38         EVENT_ID,\r
39         eventBuffer, 1024);\r
40     \r
41     printf("event: %s\n", eventBuffer);\r
42 \r
43 \r
44     while (getchar() != 'q') {\r
45         static char nextBatch[1024];\r
46 \r
47         static char syncBuffer[1024*50];\r
48         MatrixClientSync(&client, syncBuffer, 1024*50, nextBatch);\r
49         \r
50         int res;\r
51 \r
52         const char * s = syncBuffer;\r
53         int slen = strlen(syncBuffer);\r
54         \r
55         {\r
56         int koff, klen, voff, vlen, vtype, off = 0;\r
57         for (off = 0; (off = mjson_next(s, slen, off, &koff, &klen,\r
58                                         &voff, &vlen, &vtype)) != 0; ) {\r
59             const char * key = s + koff;\r
60             const char * val = s + voff;\r
61 \r
62             printf("%.*s: %.100s\n", klen, key, val);\r
63         }\r
64         }\r
65 \r
66         mjson_get_string(s, slen, "$.next_batch", nextBatch, 1024);\r
67 \r
68         const char * events;\r
69         int eventsLen;\r
70         res =\r
71             mjson_find(s, slen, "$.to_device.events", &events, &eventsLen);\r
72         \r
73         if (res != MJSON_TOK_INVALID) {\r
74             {\r
75             int koff, klen, voff, vlen, vtype, off = 0;\r
76             for (off = 0; (off = mjson_next(events, eventsLen, off, &koff, &klen,\r
77                                             &voff, &vlen, &vtype)) != 0; ) {\r
78                 const char * val = events + voff;\r
79 \r
80                 printf("%.*s\n", vlen, val);\r
81             }\r
82             }\r
83         }\r
84     }\r
85 \r
86 \r
87     MatrixClientDeleteDevice(&client);\r
88         \r
89     MatrixHttpDeinit(&client.hc);\r
90 \r
91     return 0;\r
92 }\r