Implement token_refresh

This commit is contained in:
2016-01-15 19:28:07 +01:00
parent 46b5f5d918
commit 8b332eaaea
2 changed files with 49 additions and 3 deletions

View File

@@ -2245,6 +2245,48 @@ i_whois(MatrixAPI *api,
g_free(path);
}
static void
i_token_refresh(MatrixAPI *api,
MatrixAPICallback callback,
gpointer user_data,
const gchar *refresh_token,
GError **error)
{
MatrixHTTPAPIPrivate *priv = matrix_http_api_get_instance_private(
MATRIX_HTTP_API(api));
JsonBuilder *builder;
JsonNode *body;
if (!refresh_token && !priv->token) {
g_set_error(error,
MATRIX_API_ERROR, MATRIX_API_ERROR_MISSING_TOKEN,
"No token available");
return;
}
builder = json_builder_new();
json_builder_begin_object(builder);
json_builder_set_member_name(builder, "refresh_token");
if (!refresh_token) {
json_builder_add_string_value(builder, priv->refresh_token);
} else {
json_builder_add_string_value(builder, refresh_token);
}
json_builder_end_object(builder);
body = json_builder_get_root(builder);
g_object_unref(builder);
_send(MATRIX_HTTP_API(api),
callback, user_data,
CALL_API,
"POST", "tokenreresh", NULL, NULL, body, NULL,
FALSE, error);
}
static void
matrix_http_api_matrix_api_init(MatrixAPIInterface *iface)
{
@@ -2319,7 +2361,7 @@ matrix_http_api_matrix_api_init(MatrixAPIInterface *iface)
/* Session management */
iface->login = i_login;
iface->token_refresh = NULL;
iface->token_refresh = i_token_refresh;
/* User data */
iface->get_3pids = NULL;