Remove the refresh_token
It was removed from the spec, and from HS implementations for a while.
This commit is contained in:
		| @@ -29,7 +29,6 @@ For a working example, see [test-client.c](src/test-client.c). | |||||||
|  |  | ||||||
|     // Set tokens for the session. Alternatively you may want to login with matrix_api_login() or matrix_client_login_with_password() |     // Set tokens for the session. Alternatively you may want to login with matrix_api_login() or matrix_client_login_with_password() | ||||||
|     matrix_api_set_token(MATRIX_API(client), "your_access_token"); |     matrix_api_set_token(MATRIX_API(client), "your_access_token"); | ||||||
|     matrix_api_set_refresh_token(MATRIX_API(client), "your_refresh_token"); |  | ||||||
|  |  | ||||||
|     // Connect a callback that gets called when a m.room.message event arrives |     // Connect a callback that gets called when a m.room.message event arrives | ||||||
|     matrix_client_connect_event(client, MATRIX_EVENT_TYPE_ROOM_MESSAGE, message_callback, NULL); |     matrix_client_connect_event(client, MATRIX_EVENT_TYPE_ROOM_MESSAGE, message_callback, NULL); | ||||||
|   | |||||||
| @@ -53,7 +53,6 @@ matrix_api_leave_room | |||||||
| matrix_api_unban_user | matrix_api_unban_user | ||||||
| matrix_api_login | matrix_api_login | ||||||
| matrix_api_logout | matrix_api_logout | ||||||
| matrix_api_token_refresh |  | ||||||
| matrix_api_get_presence_list | matrix_api_get_presence_list | ||||||
| matrix_api_update_presence_list | matrix_api_update_presence_list | ||||||
| matrix_api_get_presence | matrix_api_get_presence | ||||||
| @@ -73,8 +72,6 @@ matrix_api_media_thumbnail | |||||||
| matrix_api_media_upload | matrix_api_media_upload | ||||||
| matrix_api_get_token | matrix_api_get_token | ||||||
| matrix_api_set_token | matrix_api_set_token | ||||||
| matrix_api_get_refresh_token |  | ||||||
| matrix_api_set_refresh_token |  | ||||||
| matrix_api_get_user_id | matrix_api_get_user_id | ||||||
| matrix_api_get_homeserver | matrix_api_get_homeserver | ||||||
| MatrixAPI | MatrixAPI | ||||||
|   | |||||||
| @@ -81,7 +81,6 @@ | |||||||
|  * @unban_user: the virtual function pointer to matrix_api_unban_user() |  * @unban_user: the virtual function pointer to matrix_api_unban_user() | ||||||
|  * @login: the virtual function pointer to matrix_api_login() |  * @login: the virtual function pointer to matrix_api_login() | ||||||
|  * @logout: the virtual function pointer to matrix_api_logout() |  * @logout: the virtual function pointer to matrix_api_logout() | ||||||
|  * @token_refresh: the virtual function pointer to matrix_api_get_token_refresh() |  | ||||||
|  * @get_presence_list: the virtual function pointer to matrix_api_get_presence_list() |  * @get_presence_list: the virtual function pointer to matrix_api_get_presence_list() | ||||||
|  * @update_presence_list: the virtual function pointer to matrix_api_update_presence_list() |  * @update_presence_list: the virtual function pointer to matrix_api_update_presence_list() | ||||||
|  * @get_presence: the virtual function pointer to matrix_api_get_presence() |  * @get_presence: the virtual function pointer to matrix_api_get_presence() | ||||||
| @@ -101,8 +100,6 @@ | |||||||
|  * @media_upload: the virtual function pointer to matrix_api_media_upload() |  * @media_upload: the virtual function pointer to matrix_api_media_upload() | ||||||
|  * @get_token: the virtual function pointer to matrix_api_get_token() |  * @get_token: the virtual function pointer to matrix_api_get_token() | ||||||
|  * @set_token: the virtual function pointer to matrix_api_set_token() |  * @set_token: the virtual function pointer to matrix_api_set_token() | ||||||
|  * @get_refresh_token: the virtual function pointer to matrix_api_get_refresh_token() |  | ||||||
|  * @set_refresh_token: the virtual function pointer to matrix_api_set_refresh_token() |  | ||||||
|  * @get_user_id: the virtual function pointer to matrix_api_get_user_id() |  * @get_user_id: the virtual function pointer to matrix_api_get_user_id() | ||||||
|  * @get_homeserver: the virtual function pointer to matrix_api_get_homeserver() |  * @get_homeserver: the virtual function pointer to matrix_api_get_homeserver() | ||||||
|  * |  * | ||||||
| @@ -1433,31 +1430,6 @@ matrix_api_logout(MatrixAPI *matrix_api, | |||||||
|     MATRIX_API_GET_IFACE(matrix_api)->logout(matrix_api, callback, user_data, error); |     MATRIX_API_GET_IFACE(matrix_api)->logout(matrix_api, callback, user_data, error); | ||||||
| } | } | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * matrix_api_token_refresh: |  | ||||||
|  * @api: a #MatrixAPI |  | ||||||
|  * @refresh_token: the refresh token that was issued by the server |  | ||||||
|  * @callback: the function to call when the request is finished |  | ||||||
|  * @user_data: user data to be passed to @callback |  | ||||||
|  * @error: (nullable): a #GError, or %NULL to ignore errors |  | ||||||
|  * |  | ||||||
|  * Exchanges a refresh token for a new access token.  This is intended to be used if the access |  | ||||||
|  * token has expired. If @refresh_token is %NULL, implementations MUST send the stored refresh |  | ||||||
|  * token.  If it is not pesent(e.g. because login hasn’t happened yet), this function MUST |  | ||||||
|  * return with error. |  | ||||||
|  */ |  | ||||||
| void |  | ||||||
| matrix_api_token_refresh(MatrixAPI *matrix_api, |  | ||||||
|                          const gchar *refresh_token, |  | ||||||
|                          MatrixAPICallback callback, |  | ||||||
|                          gpointer user_data, |  | ||||||
|                          GError **error) |  | ||||||
| { |  | ||||||
|     g_return_if_fail(matrix_api != NULL); |  | ||||||
|  |  | ||||||
|     MATRIX_API_GET_IFACE(matrix_api)->token_refresh(matrix_api, callback, user_data, refresh_token, error); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * matrix_api_get_presence_list: |  * matrix_api_get_presence_list: | ||||||
|  * @api: a #MatrixAPI |  * @api: a #MatrixAPI | ||||||
| @@ -1945,39 +1917,6 @@ matrix_api_set_token(MatrixAPI *matrix_api, const gchar *value) | |||||||
|     MATRIX_API_GET_IFACE(matrix_api)->set_token(matrix_api, value); |     MATRIX_API_GET_IFACE(matrix_api)->set_token(matrix_api, value); | ||||||
| } | } | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * matrix_api_get_refresh_token: |  | ||||||
|  * @api: a #MatrixAPI |  | ||||||
|  * |  | ||||||
|  * Get the refresh token used in @api. |  | ||||||
|  * |  | ||||||
|  * The returned value is owned by @api and should not be freed. |  | ||||||
|  * |  | ||||||
|  * Returns: (transfer none) (nullable): a refresh token, or %NULL if not yet set |  | ||||||
|  */ |  | ||||||
| const gchar * |  | ||||||
| matrix_api_get_refresh_token(MatrixAPI *matrix_api) |  | ||||||
| { |  | ||||||
|     g_return_val_if_fail(matrix_api != NULL, NULL); |  | ||||||
|  |  | ||||||
|     return MATRIX_API_GET_IFACE(matrix_api)->get_refresh_token(matrix_api); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * matrix_api_set_refresh_token: |  | ||||||
|  * @api: a #MatrixAPI |  | ||||||
|  * @refresh_token: a refresh token |  | ||||||
|  * |  | ||||||
|  * Set the refresh token to be used for access token refresh while using @api. |  | ||||||
|  */ |  | ||||||
| void |  | ||||||
| matrix_api_set_refresh_token(MatrixAPI *matrix_api, const gchar *value) |  | ||||||
| { |  | ||||||
|     g_return_if_fail(matrix_api != NULL); |  | ||||||
|  |  | ||||||
|     MATRIX_API_GET_IFACE(matrix_api)->set_refresh_token(matrix_api, value); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * matrix_api_get_user_id: |  * matrix_api_get_user_id: | ||||||
|  * @api: a #MatrixAPI |  * @api: a #MatrixAPI | ||||||
| @@ -2034,19 +1973,6 @@ matrix_api_default_init(MatrixAPIInterface *iface) | |||||||
|                                                     NULL, |                                                     NULL, | ||||||
|                                                     G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); |                                                     G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); | ||||||
|  |  | ||||||
|         /** |  | ||||||
|          * MatrixAPI:refresh-token: |  | ||||||
|          * |  | ||||||
|          * The token to use for refreshing the authorization token. It is |  | ||||||
|          * issued by the server after a successful registration, login or |  | ||||||
|          * token refresh. |  | ||||||
|          */ |  | ||||||
|         g_object_interface_install_property(iface, |  | ||||||
|                                             g_param_spec_string( |  | ||||||
|                                                     "refresh-token", "refresh-token", "refresh-token", |  | ||||||
|                                                     NULL, |  | ||||||
|                                                     G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); |  | ||||||
|  |  | ||||||
|         /** |         /** | ||||||
|          * MatrixAPI:user-id: |          * MatrixAPI:user-id: | ||||||
|          * |          * | ||||||
|   | |||||||
| @@ -344,11 +344,6 @@ struct _MatrixAPIInterface { | |||||||
|                    MatrixAPICallback callback, |                    MatrixAPICallback callback, | ||||||
|                    gpointer user_data, |                    gpointer user_data, | ||||||
|                    GError **error); |                    GError **error); | ||||||
|     void (*token_refresh)(MatrixAPI *api, |  | ||||||
|                           MatrixAPICallback callback, |  | ||||||
|                           gpointer user_data, |  | ||||||
|                           const gchar *refresh_token, |  | ||||||
|                           GError **error); |  | ||||||
|     void (*get_presence_list)(MatrixAPI *api, |     void (*get_presence_list)(MatrixAPI *api, | ||||||
|                               MatrixAPICallback callback, |                               MatrixAPICallback callback, | ||||||
|                               gpointer user_data, |                               gpointer user_data, | ||||||
| @@ -460,8 +455,6 @@ struct _MatrixAPIInterface { | |||||||
|                          GError **error); |                          GError **error); | ||||||
|     const gchar *(*get_token)(MatrixAPI *api); |     const gchar *(*get_token)(MatrixAPI *api); | ||||||
|     void (*set_token)(MatrixAPI *api, const gchar *value); |     void (*set_token)(MatrixAPI *api, const gchar *value); | ||||||
|     const gchar *(*get_refresh_token)(MatrixAPI *api); |  | ||||||
|     void (*set_refresh_token)(MatrixAPI *api, const gchar *value); |  | ||||||
|     const gchar *(*get_user_id)(MatrixAPI *api); |     const gchar *(*get_user_id)(MatrixAPI *api); | ||||||
|     const gchar *(*get_homeserver)(MatrixAPI *api); |     const gchar *(*get_homeserver)(MatrixAPI *api); | ||||||
| }; | }; | ||||||
| @@ -770,11 +763,6 @@ void matrix_api_logout(MatrixAPI *api, | |||||||
|                        MatrixAPICallback callback, |                        MatrixAPICallback callback, | ||||||
|                        gpointer user_data, |                        gpointer user_data, | ||||||
|                        GError **error); |                        GError **error); | ||||||
| void matrix_api_token_refresh(MatrixAPI *api, |  | ||||||
|                               const gchar *refresh_token, |  | ||||||
|                               MatrixAPICallback callback, |  | ||||||
|                               gpointer user_data, |  | ||||||
|                               GError **error); |  | ||||||
| void matrix_api_get_presence_list(MatrixAPI *api, | void matrix_api_get_presence_list(MatrixAPI *api, | ||||||
|                                   const gchar *user_id, |                                   const gchar *user_id, | ||||||
|                                   MatrixAPICallback callback, |                                   MatrixAPICallback callback, | ||||||
| @@ -886,8 +874,6 @@ void matrix_api_media_upload(MatrixAPI *api, | |||||||
|                              GError **error); |                              GError **error); | ||||||
| const gchar *matrix_api_get_token(MatrixAPI *api); | const gchar *matrix_api_get_token(MatrixAPI *api); | ||||||
| void matrix_api_set_token(MatrixAPI *api, const gchar *token); | void matrix_api_set_token(MatrixAPI *api, const gchar *token); | ||||||
| const gchar *matrix_api_get_refresh_token(MatrixAPI *api); |  | ||||||
| void matrix_api_set_refresh_token(MatrixAPI *api, const gchar *refresh_token); |  | ||||||
| const gchar *matrix_api_get_user_id(MatrixAPI *api); | const gchar *matrix_api_get_user_id(MatrixAPI *api); | ||||||
| const gchar *matrix_api_get_homeserver(MatrixAPI *api); | const gchar *matrix_api_get_homeserver(MatrixAPI *api); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,7 +39,6 @@ enum  { | |||||||
|     PROP_VALIDATE_CERTIFICATE, |     PROP_VALIDATE_CERTIFICATE, | ||||||
|     PROP_USER_ID, |     PROP_USER_ID, | ||||||
|     PROP_TOKEN, |     PROP_TOKEN, | ||||||
|     PROP_REFRESH_TOKEN, |  | ||||||
|     PROP_HOMESERVER, |     PROP_HOMESERVER, | ||||||
|     NUM_PROPERTIES |     NUM_PROPERTIES | ||||||
| }; | }; | ||||||
| @@ -52,7 +51,6 @@ typedef struct { | |||||||
|     SoupURI *api_uri; |     SoupURI *api_uri; | ||||||
|     SoupURI *media_uri; |     SoupURI *media_uri; | ||||||
|     gchar *token; |     gchar *token; | ||||||
|     gchar *refresh_token; |  | ||||||
| } MatrixHTTPAPIPrivate; | } MatrixHTTPAPIPrivate; | ||||||
|  |  | ||||||
| static void matrix_http_api_matrix_api_interface_init(MatrixAPIInterface * iface); | static void matrix_http_api_matrix_api_interface_init(MatrixAPIInterface * iface); | ||||||
| @@ -99,7 +97,7 @@ _matrix_http_api_set_url(MatrixHTTPAPI *matrix_http_api, SoupURI **uri, const gc | |||||||
| } | } | ||||||
|  |  | ||||||
| MatrixHTTPAPI * | MatrixHTTPAPI * | ||||||
| matrix_http_api_construct(GType object_type, const gchar *base_url, const gchar *token, const gchar *refresh_token) | matrix_http_api_construct(GType object_type, const gchar *base_url, const gchar *token) | ||||||
| { | { | ||||||
|     MatrixHTTPAPI *ret; |     MatrixHTTPAPI *ret; | ||||||
|     MatrixHTTPAPIPrivate *priv; |     MatrixHTTPAPIPrivate *priv; | ||||||
| @@ -109,7 +107,6 @@ matrix_http_api_construct(GType object_type, const gchar *base_url, const gchar | |||||||
|     ret = (MatrixHTTPAPI*) g_object_new(object_type, |     ret = (MatrixHTTPAPI*) g_object_new(object_type, | ||||||
|                                         "base-url", base_url, |                                         "base-url", base_url, | ||||||
|                                         "token", token, |                                         "token", token, | ||||||
|                                         "refresh-token", refresh_token, |  | ||||||
|                                         NULL); |                                         NULL); | ||||||
|     priv = matrix_http_api_get_instance_private(ret); |     priv = matrix_http_api_get_instance_private(ret); | ||||||
|  |  | ||||||
| @@ -122,16 +119,15 @@ matrix_http_api_construct(GType object_type, const gchar *base_url, const gchar | |||||||
|  * matrix_http_api_new: |  * matrix_http_api_new: | ||||||
|  * @base_url: the base URL of the homeserver to use |  * @base_url: the base URL of the homeserver to use | ||||||
|  * @token: an access token to use |  * @token: an access token to use | ||||||
|  * @refresh_token: a refresh token to use |  | ||||||
|  * |  * | ||||||
|  * Create a new #MatrixHTTPAPI object. |  * Create a new #MatrixHTTPAPI object. | ||||||
|  * |  * | ||||||
|  * Returns: (transfer full): a new #MatrixHTTPAPI object |  * Returns: (transfer full): a new #MatrixHTTPAPI object | ||||||
|  */ |  */ | ||||||
| MatrixHTTPAPI * | MatrixHTTPAPI * | ||||||
| matrix_http_api_new(const gchar *base_url, const gchar *token, const gchar *refresh_token) | matrix_http_api_new(const gchar *base_url, const gchar *token) | ||||||
| { | { | ||||||
|     return matrix_http_api_construct(MATRIX_TYPE_HTTP_API, base_url, token, refresh_token); |     return matrix_http_api_construct(MATRIX_TYPE_HTTP_API, base_url, token); | ||||||
| } | } | ||||||
|  |  | ||||||
| static GHashTable * | static GHashTable * | ||||||
| @@ -218,21 +214,6 @@ _matrix_http_api_response_callback(SoupSession *session, SoupMessage *msg, gpoin | |||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 /* Check if the response holds a refresh token; if it |  | ||||||
|                  * does, set it as our new refresh token */ |  | ||||||
|                 if ((node = json_object_get_member(root, "refresh_token")) != NULL) { |  | ||||||
|                     const gchar *refresh_token; |  | ||||||
|  |  | ||||||
|                     if ((refresh_token = json_node_get_string(node)) != NULL) { |  | ||||||
| #if DEBUG |  | ||||||
|                         g_debug("Got new refresh token: %s", refresh_token); |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|                         g_free(priv->refresh_token); |  | ||||||
|                         priv->refresh_token = g_strdup(refresh_token); |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 /* Check if the response holds a homeserver name */ |                 /* Check if the response holds a homeserver name */ | ||||||
|                 if ((node = json_object_get_member(root, "home_server")) != NULL) { |                 if ((node = json_object_get_member(root, "home_server")) != NULL) { | ||||||
|                     const gchar *homeserver = json_node_get_string(node); |                     const gchar *homeserver = json_node_get_string(node); | ||||||
| @@ -1770,38 +1751,6 @@ matrix_http_api_login(MatrixAPI *matrix_api, MatrixAPICallback cb, void *cb_targ | |||||||
|     json_node_unref(body); |     json_node_unref(body); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void |  | ||||||
| matrix_http_api_token_refresh(MatrixAPI *matrix_api, MatrixAPICallback cb, void *cb_target, const gchar *refresh_token, GError **error) |  | ||||||
| { |  | ||||||
|     JsonBuilder *builder; |  | ||||||
|     MatrixHTTPAPIPrivate *priv = matrix_http_api_get_instance_private(MATRIX_HTTP_API(matrix_api)); |  | ||||||
|     JsonNode *root_node; |  | ||||||
|  |  | ||||||
|     if ((refresh_token == NULL) && (priv->refresh_token == NULL)) { |  | ||||||
|         g_set_error(error, MATRIX_ERROR, MATRIX_ERROR_M_MISSING_TOKEN, "No token available"); |  | ||||||
|  |  | ||||||
|         return; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     builder = json_builder_new(); |  | ||||||
|  |  | ||||||
|     json_builder_begin_object(builder); |  | ||||||
|  |  | ||||||
|     json_builder_set_member_name(builder, "refresh_token"); |  | ||||||
|     json_builder_add_string_value(builder, (refresh_token != NULL) ? refresh_token : priv->refresh_token); |  | ||||||
|  |  | ||||||
|     json_builder_end_object(builder); |  | ||||||
|     root_node = json_builder_get_root(builder); |  | ||||||
|  |  | ||||||
|     _matrix_http_api_send(MATRIX_HTTP_API(matrix_api), |  | ||||||
|                           cb, cb_target, |  | ||||||
|                           CALL_TYPE_API, "POST", "tokenrefresh", |  | ||||||
|                           NULL, NULL, root_node, NULL, FALSE, error); |  | ||||||
|  |  | ||||||
|     json_node_unref(root_node); |  | ||||||
|     g_object_unref(builder); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static void | static void | ||||||
| matrix_http_api_logout(MatrixAPI *matrix_api, MatrixAPICallback cb, void *cb_target, GError **error) | matrix_http_api_logout(MatrixAPI *matrix_api, MatrixAPICallback cb, void *cb_target, GError **error) | ||||||
| { | { | ||||||
| @@ -2288,11 +2237,9 @@ matrix_http_api_set_base_url(MatrixHTTPAPI *matrix_http_api, const gchar *base_u | |||||||
|         priv->base_url = g_strdup(base_url); |         priv->base_url = g_strdup(base_url); | ||||||
|  |  | ||||||
|         g_free(priv->token); |         g_free(priv->token); | ||||||
|         g_free(priv->refresh_token); |  | ||||||
|         g_free(matrix_http_api->_homeserver); |         g_free(matrix_http_api->_homeserver); | ||||||
|         g_free(matrix_http_api->_user_id); |         g_free(matrix_http_api->_user_id); | ||||||
|         priv->token = NULL; |         priv->token = NULL; | ||||||
|         priv->refresh_token = NULL; |  | ||||||
|         matrix_http_api->_homeserver = NULL; |         matrix_http_api->_homeserver = NULL; | ||||||
|         matrix_http_api->_user_id = NULL; |         matrix_http_api->_user_id = NULL; | ||||||
|  |  | ||||||
| @@ -2370,27 +2317,6 @@ matrix_http_api_set_token(MatrixAPI *matrix_api, const gchar *token) | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| static const gchar * |  | ||||||
| matrix_http_api_get_refresh_token (MatrixAPI *matrix_api) |  | ||||||
| { |  | ||||||
|     MatrixHTTPAPIPrivate *priv = matrix_http_api_get_instance_private(MATRIX_HTTP_API(matrix_api)); |  | ||||||
|  |  | ||||||
|     return priv->refresh_token; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static void |  | ||||||
| matrix_http_api_set_refresh_token(MatrixAPI *matrix_api, const gchar *refresh_token) |  | ||||||
| { |  | ||||||
|     MatrixHTTPAPIPrivate *priv = matrix_http_api_get_instance_private(MATRIX_HTTP_API(matrix_api)); |  | ||||||
|  |  | ||||||
|     if (g_strcmp0(refresh_token, priv->refresh_token) != 0) { |  | ||||||
|         g_free(priv->refresh_token); |  | ||||||
|         priv->refresh_token = g_strdup(refresh_token); |  | ||||||
|  |  | ||||||
|         g_object_notify_by_pspec((GObject *)matrix_api, matrix_http_api_properties[PROP_REFRESH_TOKEN]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static const gchar * | static const gchar * | ||||||
| matrix_http_api_get_homeserver(MatrixAPI *api) { | matrix_http_api_get_homeserver(MatrixAPI *api) { | ||||||
|     return MATRIX_HTTP_API(api)->_homeserver; |     return MATRIX_HTTP_API(api)->_homeserver; | ||||||
| @@ -2415,7 +2341,6 @@ matrix_http_api_finalize(GObject *gobject) | |||||||
|  |  | ||||||
|     g_free(matrix_http_api->_user_id); |     g_free(matrix_http_api->_user_id); | ||||||
|     g_free(priv->token); |     g_free(priv->token); | ||||||
|     g_free(priv->refresh_token); |  | ||||||
|     g_free(matrix_http_api->_homeserver); |     g_free(matrix_http_api->_homeserver); | ||||||
|  |  | ||||||
|     G_OBJECT_CLASS(matrix_http_api_parent_class)->finalize(gobject); |     G_OBJECT_CLASS(matrix_http_api_parent_class)->finalize(gobject); | ||||||
| @@ -2442,10 +2367,6 @@ matrix_http_api_get_property(GObject *gobject, guint property_id, GValue *value, | |||||||
|         case PROP_TOKEN: |         case PROP_TOKEN: | ||||||
|             g_value_set_string(value, matrix_api_get_token((MatrixAPI*) matrix_http_api)); |             g_value_set_string(value, matrix_api_get_token((MatrixAPI*) matrix_http_api)); | ||||||
|  |  | ||||||
|             break; |  | ||||||
|         case PROP_REFRESH_TOKEN: |  | ||||||
|             g_value_set_string(value, matrix_api_get_refresh_token((MatrixAPI*) matrix_http_api)); |  | ||||||
|  |  | ||||||
|             break; |             break; | ||||||
|         case PROP_HOMESERVER: |         case PROP_HOMESERVER: | ||||||
|             g_value_set_string(value, matrix_api_get_homeserver((MatrixAPI*) matrix_http_api)); |             g_value_set_string(value, matrix_api_get_homeserver((MatrixAPI*) matrix_http_api)); | ||||||
| @@ -2475,10 +2396,6 @@ matrix_http_api_set_property(GObject *gobject, guint property_id, const GValue * | |||||||
|         case PROP_TOKEN: |         case PROP_TOKEN: | ||||||
|             matrix_api_set_token((MatrixAPI*) matrix_http_api, g_value_get_string(value)); |             matrix_api_set_token((MatrixAPI*) matrix_http_api, g_value_get_string(value)); | ||||||
|  |  | ||||||
|             break; |  | ||||||
|         case PROP_REFRESH_TOKEN: |  | ||||||
|             matrix_api_set_refresh_token((MatrixAPI*) matrix_http_api, g_value_get_string(value)); |  | ||||||
|  |  | ||||||
|             break; |             break; | ||||||
|         default: |         default: | ||||||
|             G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, property_id, pspec); |             G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, property_id, pspec); | ||||||
| @@ -2529,12 +2446,6 @@ matrix_http_api_class_init(MatrixHTTPAPIClass *klass) | |||||||
|             G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); |             G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); | ||||||
|     g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_TOKEN, matrix_http_api_properties[PROP_TOKEN]); |     g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_TOKEN, matrix_http_api_properties[PROP_TOKEN]); | ||||||
|  |  | ||||||
|     matrix_http_api_properties[PROP_REFRESH_TOKEN] = g_param_spec_string( |  | ||||||
|             "refresh-token", "refresh-token", "refresh-token", |  | ||||||
|             NULL, |  | ||||||
|             G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE); |  | ||||||
|     g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_REFRESH_TOKEN, matrix_http_api_properties[PROP_REFRESH_TOKEN]); |  | ||||||
|  |  | ||||||
|     matrix_http_api_properties[PROP_HOMESERVER] = g_param_spec_string( |     matrix_http_api_properties[PROP_HOMESERVER] = g_param_spec_string( | ||||||
|             "homeserver", "homeserver", "homeserver", |             "homeserver", "homeserver", "homeserver", | ||||||
|             NULL, |             NULL, | ||||||
| @@ -2593,7 +2504,6 @@ matrix_http_api_matrix_api_interface_init(MatrixAPIInterface * iface) | |||||||
|     iface->whois = matrix_http_api_whois; |     iface->whois = matrix_http_api_whois; | ||||||
|     iface->versions = matrix_http_api_versions; |     iface->versions = matrix_http_api_versions; | ||||||
|     iface->login = matrix_http_api_login; |     iface->login = matrix_http_api_login; | ||||||
|     iface->token_refresh = matrix_http_api_token_refresh; |  | ||||||
|     iface->logout = matrix_http_api_logout; |     iface->logout = matrix_http_api_logout; | ||||||
|     iface->get_3pids = matrix_http_api_get_3pids; |     iface->get_3pids = matrix_http_api_get_3pids; | ||||||
|     iface->add_3pid = matrix_http_api_add_3pid; |     iface->add_3pid = matrix_http_api_add_3pid; | ||||||
| @@ -2614,8 +2524,6 @@ matrix_http_api_matrix_api_interface_init(MatrixAPIInterface * iface) | |||||||
|     iface->get_user_id = matrix_http_api_get_user_id; |     iface->get_user_id = matrix_http_api_get_user_id; | ||||||
|     iface->get_token = matrix_http_api_get_token; |     iface->get_token = matrix_http_api_get_token; | ||||||
|     iface->set_token = matrix_http_api_set_token; |     iface->set_token = matrix_http_api_set_token; | ||||||
|     iface->get_refresh_token = matrix_http_api_get_refresh_token; |  | ||||||
|     iface->set_refresh_token = matrix_http_api_set_refresh_token; |  | ||||||
|     iface->get_homeserver = matrix_http_api_get_homeserver; |     iface->get_homeserver = matrix_http_api_get_homeserver; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -2629,5 +2537,4 @@ matrix_http_api_init(MatrixHTTPAPI *matrix_http_api) | |||||||
|     priv->api_uri = NULL; |     priv->api_uri = NULL; | ||||||
|     priv->media_uri = NULL; |     priv->media_uri = NULL; | ||||||
|     priv->token = NULL; |     priv->token = NULL; | ||||||
|     priv->refresh_token = NULL; |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -47,8 +47,8 @@ struct _MatrixHTTPAPIClass { | |||||||
| }; | }; | ||||||
|  |  | ||||||
| GType matrix_http_api_get_type(void) G_GNUC_CONST; | GType matrix_http_api_get_type(void) G_GNUC_CONST; | ||||||
| MatrixHTTPAPI *matrix_http_api_new(const gchar *base_url, const gchar *token, const gchar *refresh_token); | MatrixHTTPAPI *matrix_http_api_new(const gchar *base_url, const gchar *token); | ||||||
| MatrixHTTPAPI *matrix_http_api_construct(GType object_type, const gchar* base_url, const gchar* token, const gchar *refresh_token); | MatrixHTTPAPI *matrix_http_api_construct(GType object_type, const gchar *base_url, const gchar *token); | ||||||
| const gchar *matrix_http_api_get_base_url(MatrixHTTPAPI *http_api); | const gchar *matrix_http_api_get_base_url(MatrixHTTPAPI *http_api); | ||||||
| void matrix_http_api_set_base_url(MatrixHTTPAPI *http_api, const gchar *base_url); | void matrix_http_api_set_base_url(MatrixHTTPAPI *http_api, const gchar *base_url); | ||||||
| gboolean matrix_http_api_get_validate_certificate(MatrixHTTPAPI *http_api); | gboolean matrix_http_api_get_validate_certificate(MatrixHTTPAPI *http_api); | ||||||
|   | |||||||
| @@ -118,7 +118,6 @@ logout_callback(MatrixAPI *matrix_api, const gchar *content_type, JsonNode *json | |||||||
| { | { | ||||||
|     matrix_api_abort_pending(matrix_api); |     matrix_api_abort_pending(matrix_api); | ||||||
|     matrix_api_set_token(matrix_api, NULL); |     matrix_api_set_token(matrix_api, NULL); | ||||||
|     matrix_api_set_refresh_token(matrix_api, NULL); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| static void | static void | ||||||
| @@ -329,19 +328,6 @@ _process_event_list_obj(MatrixHTTPClient *matrix_http_client, JsonNode* node, co | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| static void |  | ||||||
| refresh_callback(MatrixAPI *matrix_api, const gchar *content_type, JsonNode *json_content, GByteArray *raw_content, GError *err, gpointer user_data) |  | ||||||
| { |  | ||||||
|     g_signal_emit_by_name(MATRIX_CLIENT(matrix_api), "login-finished", g_error_matches(err, MATRIX_ERROR, MATRIX_ERROR_NONE)); |  | ||||||
|  |  | ||||||
|     if (matrix_api_get_token(matrix_api) == NULL) { |  | ||||||
|         matrix_api_set_refresh_token(matrix_api, NULL); |  | ||||||
|         g_signal_emit_by_name(MATRIX_CLIENT(matrix_api), "polling-stopped", err); |  | ||||||
|  |  | ||||||
|         matrix_client_stop_polling(MATRIX_CLIENT(matrix_api), FALSE, NULL); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static void | static void | ||||||
| cb_sync(MatrixAPI *matrix_api, const gchar *content_type, JsonNode *json_content, GByteArray *raw_content, GError *error, gpointer user_data) | cb_sync(MatrixAPI *matrix_api, const gchar *content_type, JsonNode *json_content, GByteArray *raw_content, GError *error, gpointer user_data) | ||||||
| { | { | ||||||
| @@ -448,10 +434,6 @@ cb_sync(MatrixAPI *matrix_api, const gchar *content_type, JsonNode *json_content | |||||||
|                 (error->code == MATRIX_ERROR_M_UNKNOWN_TOKEN) || |                 (error->code == MATRIX_ERROR_M_UNKNOWN_TOKEN) || | ||||||
|                 (error->code == MATRIX_ERROR_M_UNAUTHORIZED))) { |                 (error->code == MATRIX_ERROR_M_UNAUTHORIZED))) { | ||||||
|         matrix_api_set_token(matrix_api, NULL); |         matrix_api_set_token(matrix_api, NULL); | ||||||
|         matrix_api_token_refresh(matrix_api, |  | ||||||
|                                  NULL, |  | ||||||
|                                  refresh_callback, NULL, |  | ||||||
|                                  NULL); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // It is possible that polling has been disabled while we were processing events. Don’t |     // It is possible that polling has been disabled while we were processing events. Don’t | ||||||
| @@ -728,7 +710,6 @@ matrix_http_client_real_save_state(MatrixClient *matrix_client, const gchar *fil | |||||||
|     const gchar *user_id; |     const gchar *user_id; | ||||||
|     const gchar *homeserver; |     const gchar *homeserver; | ||||||
|     const gchar *token; |     const gchar *token; | ||||||
|     const gchar *refresh_token; |  | ||||||
|     JsonNode *node; |     JsonNode *node; | ||||||
|     JsonGenerator *generator; |     JsonGenerator *generator; | ||||||
|  |  | ||||||
| @@ -752,10 +733,6 @@ matrix_http_client_real_save_state(MatrixClient *matrix_client, const gchar *fil | |||||||
|         json_object_set_string_member(root, "access_token", token); |         json_object_set_string_member(root, "access_token", token); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if ((refresh_token = matrix_api_get_refresh_token(MATRIX_API(matrix_client))) != NULL) { |  | ||||||
|         json_object_set_string_member(root, "refresh_token", refresh_token); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     node = json_node_new(JSON_NODE_OBJECT); |     node = json_node_new(JSON_NODE_OBJECT); | ||||||
|     json_node_set_object(node, root); |     json_node_set_object(node, root); | ||||||
|  |  | ||||||
| @@ -853,14 +830,6 @@ matrix_http_client_real_load_state(MatrixClient *matrix_client, const gchar *fil | |||||||
|  |  | ||||||
| #if DEBUG | #if DEBUG | ||||||
|         g_debug("Loaded access token %s", matrix_api_get_token(MATRIX_API(matrix_client))); |         g_debug("Loaded access token %s", matrix_api_get_token(MATRIX_API(matrix_client))); | ||||||
| #endif |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if ((node = json_object_get_member(root, "refresh_token")) != NULL) { |  | ||||||
|         matrix_api_set_refresh_token(MATRIX_API(matrix_client), json_node_get_string(node)); |  | ||||||
|  |  | ||||||
| #if DEBUG |  | ||||||
|         g_debug("Loaded refresh token %s", matrix_api_get_refresh_token(MATRIX_API(matrix_client))); |  | ||||||
| #endif | #endif | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -189,9 +189,8 @@ main(int argc, char *argv[]) | |||||||
|  |  | ||||||
|     g_info("Starting up: %s with %s:%s", *homeserver, user, password); |     g_info("Starting up: %s with %s:%s", *homeserver, user, password); | ||||||
|  |  | ||||||
|     api = MATRIX_API(matrix_http_api_new(*homeserver, NULL, NULL)); |     api = MATRIX_API(matrix_http_api_new(*homeserver, NULL)); | ||||||
|     matrix_http_api_set_validate_certificate(MATRIX_HTTP_API(api), |     matrix_http_api_set_validate_certificate(MATRIX_HTTP_API(api), !no_validate_certs); | ||||||
|                                              !no_validate_certs); |  | ||||||
|     builder = json_builder_new(); |     builder = json_builder_new(); | ||||||
|     json_builder_begin_object(builder); |     json_builder_begin_object(builder); | ||||||
|     json_builder_set_member_name(builder, "user"); |     json_builder_set_member_name(builder, "user"); | ||||||
|   | |||||||
| @@ -489,7 +489,6 @@ namespace Matrix { | |||||||
|     [CCode (cheader_filename = "matrix-api.h", type_cname = "MatrixAPIInterface")] |     [CCode (cheader_filename = "matrix-api.h", type_cname = "MatrixAPIInterface")] | ||||||
|     public interface API : GLib.Object { |     public interface API : GLib.Object { | ||||||
|         public abstract string? token { get; set; default = null; } |         public abstract string? token { get; set; default = null; } | ||||||
|         public abstract string? refresh_token { get; set; default = null; } |  | ||||||
|         public abstract string? user_id { get; default = null; } |         public abstract string? user_id { get; default = null; } | ||||||
|         public abstract string? homeserver { get; default = null; } |         public abstract string? homeserver { get; default = null; } | ||||||
|  |  | ||||||
| @@ -649,9 +648,6 @@ namespace Matrix { | |||||||
|         public abstract void logout([CCode (delegate_target_pos = 1.5, scope = "async")] owned Matrix.API.Callback? @callback) |         public abstract void logout([CCode (delegate_target_pos = 1.5, scope = "async")] owned Matrix.API.Callback? @callback) | ||||||
|         throws Matrix.Error; |         throws Matrix.Error; | ||||||
|  |  | ||||||
|         public abstract void token_refresh([CCode (delegate_target_pos = 1.5, scope = "async")] owned Matrix.API.Callback? @callback, string? refresh_token) |  | ||||||
|         throws Matrix.Error; |  | ||||||
|  |  | ||||||
|         public abstract void get_presence_list([CCode (delegate_target_pos = 1.5, scope = "async")] owned Matrix.API.Callback? @callback, string user_id) |         public abstract void get_presence_list([CCode (delegate_target_pos = 1.5, scope = "async")] owned Matrix.API.Callback? @callback, string user_id) | ||||||
|         throws Matrix.Error; |         throws Matrix.Error; | ||||||
|  |  | ||||||
| @@ -711,12 +707,9 @@ namespace Matrix { | |||||||
|         protected string? _user_id; |         protected string? _user_id; | ||||||
|         public string? user_id { get; default = null; } |         public string? user_id { get; default = null; } | ||||||
|         public string? token { get; set; default = null; } |         public string? token { get; set; default = null; } | ||||||
|         public string? refresh_token { get; set; default = null; } |  | ||||||
|         protected string? _homeserver; |         protected string? _homeserver; | ||||||
|         public string? homeserver { get; default = null; } |         public string? homeserver { get; default = null; } | ||||||
|  |  | ||||||
|         protected HTTPAPI(string base_url, string? token = null, string? refresh_token = null); |  | ||||||
|  |  | ||||||
|         /* Media */ |         /* Media */ | ||||||
|  |  | ||||||
|         public void media_download(API.Callback? cb, string server_name, string media_id) |         public void media_download(API.Callback? cb, string server_name, string media_id) | ||||||
| @@ -888,9 +881,6 @@ namespace Matrix { | |||||||
|         public void login(API.Callback? cb, string login_type, Json.Node? content) |         public void login(API.Callback? cb, string login_type, Json.Node? content) | ||||||
|         throws Matrix.Error; |         throws Matrix.Error; | ||||||
|  |  | ||||||
|         public void token_refresh(API.Callback? cb, string? refresh_token) |  | ||||||
|         throws Matrix.Error; |  | ||||||
|  |  | ||||||
|         public void logout(API.Callback? cb) |         public void logout(API.Callback? cb) | ||||||
|         throws Matrix.Error; |         throws Matrix.Error; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user