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
11 #define ROOM_ID "!XKFUjAsGrSSrpDFIxB:matrix.org"
\r
12 #define EVENT_ID "$_-y42DkC3OmJ_s40gYko7jMwrUQhoXfEut2pMV3E2J8"
\r
13 #define SESSION_ID "tzdnJbDrm82D/RpgkZKpILTifQ5Rads+tVzp3ax8+Ls"
\r
18 MatrixClient client;
\r
19 MatrixClientInit(&client,
\r
22 MatrixHttpInit(&client);
\r
24 MatrixClientSetUserId(&client, USER_ID);
\r
26 MatrixClientLoginPassword(&client,
\r
31 MatrixClientGenerateOnetimeKeys(&client, 10);
\r
32 MatrixClientUploadOnetimeKeys(&client);
\r
33 MatrixClientUploadDeviceKey(&client);
\r
36 static char eventBuffer[1024];
\r
37 MatrixClientGetRoomEvent(&client,
\r
42 printf("event: %s\n", eventBuffer);
\r
45 while (getchar() != 'q') {
\r
46 static char nextBatch[1024];
\r
48 static char syncBuffer[1024*50];
\r
49 MatrixClientSync(&client, syncBuffer, 1024*50, nextBatch);
\r
53 const char * s = syncBuffer;
\r
54 int slen = strlen(syncBuffer);
\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
63 printf("%.*s: %.100s\n", klen, key, val);
\r
67 mjson_get_string(s, slen, "$.next_batch", nextBatch, 1024);
\r
69 const char * events;
\r
72 mjson_find(s, slen, "$.to_device.events", &events, &eventsLen);
\r
74 if (res != MJSON_TOK_INVALID) {
\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
81 printf("%.*s\n", vlen, val);
\r
88 MatrixClientDeleteDevice(&client);
\r
90 MatrixHttpDeinit(&client);
\r