+ mjson_snprintf(requestBuffer, LOGIN_REQUEST_SIZE,\r
+ "{"\r
+ "\"type\": \"m.login.password\","\r
+ "\"identifier\": {"\r
+ "\"type\": \"m.id.user\","\r
+ "\"user\": \"%s\""\r
+ "},"\r
+ "\"password\": \"%s\","\r
+ "\"initial_device_display_name\": \"%s\""\r
+ "}",\r
+ username,\r
+ password,\r
+ displayName);\r
+ \r
+ static char responseBuffer[LOGIN_RESPONSE_SIZE];\r
+ bool result =\r
+ MatrixHttpPost(client,\r
+ LOGIN_URL,\r
+ requestBuffer,\r
+ responseBuffer, LOGIN_RESPONSE_SIZE,\r
+ false);\r
+ \r
+ int responseLen = strlen(responseBuffer);\r
+ \r
+ if (!result)\r
+ return false;\r
+\r
+ mjson_get_string(responseBuffer, responseLen,\r
+ "$.access_token",\r
+ client->accessTokenBuffer, ACCESS_TOKEN_SIZE);\r
+ mjson_get_string(responseBuffer, responseLen,\r
+ "$.device_id",\r
+ client->deviceIdBuffer, DEVICE_ID_SIZE);\r
+ mjson_get_string(responseBuffer, responseLen,\r
+ "$.expires_in_ms",\r
+ client->expireMsBuffer, EXPIRE_MS_SIZE);\r
+ mjson_get_string(responseBuffer, responseLen,\r
+ "$.refresh_token",\r
+ client->refreshTokenBuffer, REFRESH_TOKEN_SIZE);\r
+\r
+ return true;\r