7 #define SERVER "https://matrix.org"
\r
8 #define ACCESS_TOKEN "syt_cHNjaG8_yBvTjVTquGCikvsAenOJ_49mBMO"
\r
9 #define DEVICE_ID "MAZNCCZLBR"
\r
10 #define USER_ID "@pscho:matrix.org"
\r
11 #define ROOM_ID "!XKFUjAsGrSSrpDFIxB:matrix.org"
\r
13 #define BUFFER_SIZE 1024
\r
14 #define NUMBER_ARGS 10
\r
28 while ((c = getchar()), c != ' ' && c != '\n')
\r
37 char * arg = args[0];
\r
38 while ((c = getchar()), c != '\n') {
\r
41 arg = args[(*nargs)++];
\r
55 if (strlen(cmd) != strlen(str))
\r
58 for (size_t i = 0; i < strlen(cmd); i++) {
\r
59 if (cmd[i] != str[i])
\r
70 printf("Usage: %s %s\n", cmd, args);
\r
75 MatrixClient * client,
\r
77 int nargs, char ** args
\r
79 /**/ if (CheckCommand(cmd, "devicekey")) {
\r
80 printf("%s\n", client->deviceKey);
\r
82 else if (CheckCommand(cmd, "genkeys")) {
\r
84 Usage(cmd, "<number of keys>");
\r
87 MatrixClientGenerateOnetimeKeys(client, atoi(args[0]));
\r
89 else if (CheckCommand(cmd, "uploadkeys")) {
\r
90 MatrixClientUploadOnetimeKeys(client);
\r
92 else if (CheckCommand(cmd, "onetimekeys")) {
\r
93 static char buffer[1024];
\r
94 olm_account_one_time_keys(client->olmAccount.account, buffer, 1024);
\r
95 printf("%s\n", buffer);
\r
97 else if (CheckCommand(cmd, "getkeys")) {
\r
98 MatrixClientRequestDeviceKeys(client);
\r
99 for (int i = 0; i < client->numDevices; i++)
\r
100 printf("id: %s key: %s\n",
\r
101 client->devices[i].deviceId,
\r
102 client->devices[i].deviceKey);
\r
104 else if (CheckCommand(cmd, "todevice")) {
\r
105 static char buffer[30000];
\r
106 MatrixClientSync(client,
\r
108 const char * todevice;
\r
110 mjson_find(buffer, 30000,
\r
112 &todevice, &todeviceLen);
\r
113 static char prettyBuffer[10000];
\r
114 struct mjson_fixedbuf fb = { prettyBuffer, 10000, 0 };
\r
115 mjson_pretty(todevice, todeviceLen,
\r
116 " ", mjson_print_fixed_buf, &fb);
\r
117 printf("%.*s\n", fb.len, fb.ptr);
\r
124 MatrixClient client;
\r
125 MatrixClientInit(&client,
\r
128 MatrixHttpInit(&client);
\r
130 MatrixClientSetAccessToken(&client,
\r
132 MatrixClientSetDeviceId(&client,
\r
134 MatrixClientSetUserId(&client,
\r
137 static char cmd[BUFFER_SIZE];
\r
138 static char args_[BUFFER_SIZE][NUMBER_ARGS];
\r
139 char * args[NUMBER_ARGS];
\r
140 for (int i = 0; i < NUMBER_ARGS; i++)
\r
141 args[i] = args_[i];
\r
144 GetCommand(cmd, &nargs, args);
\r
146 ExecuteCommand(&client, cmd, nargs, args);
\r
148 } while (strcmp(cmd, "exit") != 0);
\r
150 MatrixHttpDeinit(&client);
\r