const char * cmd,\r
int nargs, char ** args\r
) {\r
+#define CHECK_ARGS(N, ARGS) if (nargs != N) { Usage(cmd, ARGS); return; }\r
/**/ if (CheckCommand(cmd, "devicekey")) {\r
printf("%s\n", client->deviceKey);\r
}\r
else if (CheckCommand(cmd, "genkeys")) {\r
- if (nargs != 1) {\r
- Usage(cmd, "<number of keys>");\r
- return;\r
- }\r
+ CHECK_ARGS(1, "<number of keys>")\r
+\r
MatrixClientGenerateOnetimeKeys(client, atoi(args[0]));\r
}\r
else if (CheckCommand(cmd, "uploadkeys")) {\r
" ", mjson_print_fixed_buf, &fb);\r
printf("%.*s\n", fb.len, fb.ptr);\r
}\r
+ else if (CheckCommand(cmd, "save")) {\r
+ CHECK_ARGS(1, "<filename>")\r
+\r
+ MatrixClientSave(client, args[0]);\r
+ }\r
+ else if (CheckCommand(cmd, "load")) {\r
+ CHECK_ARGS(1, "<filename>")\r
+\r
+ MatrixClientLoad(client, args[0]);\r
+ }\r
+ else if (CheckCommand(cmd, "send")) {\r
+ CHECK_ARGS(2, "<room_id> <message>")\r
+\r
+ static char body[1024];\r
+ snprintf(body, 1024,\r
+ "{\"body\":\"%s\",\"msgtype\":\"m.text\"}",\r
+ args[1]);\r
+\r
+ MatrixClientSendEvent(client,\r
+ args[0],\r
+ "m.room.message",\r
+ body);\r
+ }\r
+ else if (CheckCommand(cmd, "setuserid")) {\r
+ CHECK_ARGS(1, "<user_id>")\r
+\r
+ MatrixClientSetUserId(client, args[0]);\r
+ }\r
+ else if (CheckCommand(cmd, "getuserid")) {\r
+ printf("User ID: %s\n", client->userId);\r
+ }\r
+ else if (CheckCommand(cmd, "sendencrypted")) {\r
+ CHECK_ARGS(2, "<room_id> <message>")\r
+\r
+ static char body[1024];\r
+ snprintf(body, 1024,\r
+ "{\"body\":\"%s\",\"msgtype\":\"m.text\"}",\r
+ args[1]);\r
+\r
+ MatrixClientSendEventEncrypted(client,\r
+ args[0],\r
+ "m.room.message",\r
+ body);\r
+ }\r
+ else if (CheckCommand(cmd, "sharesession")) {\r
+ CHECK_ARGS(2, "<user_id> <device_id>")\r
+\r
+ MatrixClientShareMegolmOutSession(&client,\r
+ args[0],\r
+ args[1],\r
+ &client->megolmOutSessions[0]);\r
+ }\r
+ else if (CheckCommand(cmd, "savesession")) {\r
+ CHECK_ARGS(2, "<filename> <key>")\r
+\r
+ MatrixMegolmOutSessionSave(\r
+ &client->megolmOutSessions[0],\r
+ args[0],\r
+ args[1]);\r
+ }\r
+ else if (CheckCommand(cmd, "loadsession")) {\r
+ CHECK_ARGS(2, "<filename> <key>")\r
+\r
+ MatrixMegolmOutSessionLoad(\r
+ &client->megolmOutSessions[0],\r
+ args[0],\r
+ args[1]);\r
+ }\r
+#undef CHECK_ARGS\r
}\r
\r
int\r
USER_ID);\r
\r
static char cmd[BUFFER_SIZE];\r
- static char args_[BUFFER_SIZE][NUMBER_ARGS];\r
+ static char args_[NUMBER_ARGS][BUFFER_SIZE];\r
char * args[NUMBER_ARGS];\r
for (int i = 0; i < NUMBER_ARGS; i++)\r
args[i] = args_[i];\r