7 #define LOGIN_REQUEST_SIZE 1024
\r
8 #define LOGIN_RESPONSE_SIZE 1024
\r
9 #define LOGIN_URL "/_matrix/client/v3/login"
\r
14 MatrixClient * client,
\r
15 char * server, int serverLen)
\r
22 client->serverLen = serverLen;
\r
27 // https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3login
\r
29 MatrixClientLoginPassword(
\r
30 MatrixClient * client,
\r
31 char * username, int usernameLen,
\r
32 char * password, int passwordLen,
\r
33 char * displayName, int displayNameLen)
\r
35 static char requestBuffer[LOGIN_REQUEST_SIZE];
\r
38 mjson_snprintf(requestBuffer, LOGIN_REQUEST_SIZE,
\r
40 "\"type\": \"m.login.password\","
\r
42 "\"type\": \"m.id.user\","
\r
43 "\"user\": \"%.*s\""
\r
45 "\"password\": \"%.*s\","
\r
46 "\"initial_device_display_name\": \"%.*s\""
\r
48 usernameLen, username,
\r
49 passwordLen, password,
\r
50 displayNameLen, displayName);
\r
52 static char responseBuffer[LOGIN_RESPONSE_SIZE];
\r
55 MatrixHttpPost(client,
\r
57 requestBuffer, requestLen,
\r
58 responseBuffer, LOGIN_RESPONSE_SIZE, &responseLen);
\r
63 client->accessTokenLen =
\r
64 mjson_get_string(responseBuffer, responseLen,
\r
66 client->accessTokenBuffer, ACCESS_TOKEN_SIZE);
\r
67 client->deviceIdLen =
\r
68 mjson_get_string(responseBuffer, responseLen,
\r
70 client->deviceIdBuffer, DEVICE_ID_SIZE);
\r
71 client->expireMsLen =
\r
72 mjson_get_string(responseBuffer, responseLen,
\r
74 client->expireMsBuffer, EXPIRE_MS_SIZE);
\r
75 client->refreshTokenLen =
\r
76 mjson_get_string(responseBuffer, responseLen,
\r
78 client->refreshTokenBuffer, REFRESH_TOKEN_SIZE);
\r