6 #define LOGIN_REQUEST_SIZE 1024
\r
7 #define LOGIN_RESPONSE_SIZE 1024
\r
8 #define LOGIN_URL "/_matrix/client/v3/login"
\r
13 MatrixClient * client,
\r
14 char * server, int serverLen
\r
21 client->serverLen = serverLen;
\r
26 // https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3login
\r
28 MatrixClientLoginPassword(
\r
29 MatrixClient * client,
\r
30 char * username, int usernameLen,
\r
31 char * password, int passwordLen,
\r
32 char * displayName, int displayNameLen
\r
34 static char requestBuffer[LOGIN_REQUEST_SIZE];
\r
37 mjson_snprintf(requestBuffer, LOGIN_REQUEST_SIZE,
\r
39 "\"type\": \"m.login.password\","
\r
41 "\"type\": \"m.id.user\","
\r
42 "\"user\": \"%.*s\""
\r
44 "\"password\": \"%.*s\","
\r
45 "\"initial_device_display_name\": \"%.*s\""
\r
47 usernameLen, username,
\r
48 passwordLen, password,
\r
49 displayNameLen, displayName);
\r
51 static char responseBuffer[LOGIN_RESPONSE_SIZE];
\r
54 MatrixHttpPost(client,
\r
56 requestBuffer, requestLen,
\r
57 responseBuffer, LOGIN_RESPONSE_SIZE, &responseLen);
\r
62 client->accessTokenLen =
\r
63 mjson_get_string(responseBuffer, responseLen,
\r
65 client->accessTokenBuffer, ACCESS_TOKEN_SIZE);
\r
66 client->deviceIdLen =
\r
67 mjson_get_string(responseBuffer, responseLen,
\r
69 client->deviceIdBuffer, DEVICE_ID_SIZE);
\r
70 client->expireMsLen =
\r
71 mjson_get_string(responseBuffer, responseLen,
\r
73 client->expireMsBuffer, EXPIRE_MS_SIZE);
\r
74 client->refreshTokenLen =
\r
75 mjson_get_string(responseBuffer, responseLen,
\r
77 client->refreshTokenBuffer, REFRESH_TOKEN_SIZE);
\r