8 #define LOGIN_REQUEST_SIZE 1024
\r
9 #define LOGIN_RESPONSE_SIZE 1024
\r
10 #define LOGIN_URL "/_matrix/client/v3/login"
\r
12 #define ROOMEVENT_REQUEST_SIZE 1024
\r
13 #define ROOMEVENT_RESPONSE_SIZE 1024
\r
14 #define ROOMEVENT_URL "/_matrix/client/v3/rooms/%s/send/%s/%d"
\r
19 MatrixClient * client,
\r
20 const char * server)
\r
32 MatrixClientSetAccessToken(
\r
33 MatrixClient * client,
\r
34 const char * accessToken)
\r
36 int accessTokenLen = strlen(accessToken);
\r
38 if (accessTokenLen < ACCESS_TOKEN_SIZE - 1)
\r
41 for (int i = 0; i < accessTokenLen; i++)
\r
42 client->accessTokenBuffer[i] = accessToken[i];
\r
47 // https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3login
\r
49 MatrixClientLoginPassword(
\r
50 MatrixClient * client,
\r
51 const char * username,
\r
52 const char * password,
\r
53 const char * displayName)
\r
55 static char requestBuffer[LOGIN_REQUEST_SIZE];
\r
57 mjson_snprintf(requestBuffer, LOGIN_REQUEST_SIZE,
\r
59 "\"type\": \"m.login.password\","
\r
61 "\"type\": \"m.id.user\","
\r
64 "\"password\": \"%s\","
\r
65 "\"initial_device_display_name\": \"%s\""
\r
71 static char responseBuffer[LOGIN_RESPONSE_SIZE];
\r
73 MatrixHttpPost(client,
\r
76 responseBuffer, LOGIN_RESPONSE_SIZE,
\r
79 int responseLen = strlen(responseBuffer);
\r
84 mjson_get_string(responseBuffer, responseLen,
\r
86 client->accessTokenBuffer, ACCESS_TOKEN_SIZE);
\r
87 mjson_get_string(responseBuffer, responseLen,
\r
89 client->deviceIdBuffer, DEVICE_ID_SIZE);
\r
90 mjson_get_string(responseBuffer, responseLen,
\r
92 client->expireMsBuffer, EXPIRE_MS_SIZE);
\r
93 mjson_get_string(responseBuffer, responseLen,
\r
95 client->refreshTokenBuffer, REFRESH_TOKEN_SIZE);
\r
101 MatrixClientSendEvent(
\r
102 MatrixClient * client,
\r
103 const char * roomId,
\r
104 const char * msgType,
\r
105 const char * msgBody)
\r
107 static char requestUrl[MAX_URL_LEN];
\r
108 sprintf_s(requestUrl, MAX_URL_LEN,
\r
109 ROOMEVENT_URL, roomId, msgType, time(NULL));
\r
111 static char responseBuffer[ROOMEVENT_RESPONSE_SIZE];
\r
113 MatrixHttpPut(client,
\r
116 responseBuffer, ROOMEVENT_RESPONSE_SIZE,
\r