Add API method for email based account registration
This commit is contained in:
		| @@ -17,6 +17,7 @@ matrix_api_set_avatar_url | ||||
| matrix_api_get_display_name | ||||
| matrix_api_set_display_name | ||||
| matrix_api_register_account | ||||
| matrix_api_register_account_email | ||||
| matrix_api_set_account_data | ||||
| matrix_api_get_room_tags | ||||
| matrix_api_delete_room_tag | ||||
|   | ||||
| @@ -45,6 +45,7 @@ | ||||
|  * @get_display_name: the virtual function pointer to matrix_api_get_display_name() | ||||
|  * @set_display_name: the virtual function pointer to matrix_api_set_display_name() | ||||
|  * @register_account: the virtual function pointer to matrix_api_register_account() | ||||
|  * @register_account_email: the virtual function pointer to matrix_api_register_account_email() | ||||
|  * @set_account_data: the virtual function pointer to matrix_api_set_account_data() | ||||
|  * @get_room_tags: the virtual function pointer to matrix_api_get_room_tags() | ||||
|  * @delete_room_tag: the virtual function pointer to matrix_api_delete_room_tag() | ||||
| @@ -404,6 +405,24 @@ matrix_api_register_account(MatrixAPI *matrix_api, | ||||
|     MATRIX_API_GET_IFACE(matrix_api)->register_account(matrix_api, callback, user_data, account_kind, bind_email, username, password, error); | ||||
| } | ||||
|  | ||||
| void | ||||
| matrix_api_register_account_email(MatrixAPI *api, | ||||
|                                   const gchar *id_server, | ||||
|                                   const gchar *client_secret, | ||||
|                                   const gchar *email, | ||||
|                                   guint send_attempt, | ||||
|                                   MatrixAPICallback callback, | ||||
|                                   gpointer user_data, | ||||
|                                   GError **error) | ||||
| { | ||||
|     g_return_if_fail(api != NULL); | ||||
|     g_return_if_fail(id_server); | ||||
|     g_return_if_fail(client_secret); | ||||
|     g_return_if_fail(email); | ||||
|  | ||||
|     MATRIX_API_GET_IFACE(api)->register_account_email(api, callback, user_data, id_server, client_secret, email, send_attempt, error); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * matrix_api_set_account_data: | ||||
|  * @api: a #MatrixAPI | ||||
|   | ||||
| @@ -105,6 +105,14 @@ struct _MatrixAPIInterface { | ||||
|                              const gchar *username, | ||||
|                              const gchar *password, | ||||
|                              GError **error); | ||||
|     void (*register_account_email)(MatrixAPI *api, | ||||
|                                    MatrixAPICallback callback, | ||||
|                                    gpointer user_data, | ||||
|                                    const gchar *id_server, | ||||
|                                    const gchar *client_secret, | ||||
|                                    const gchar *email, | ||||
|                                    guint send_attempt, | ||||
|                                    GError **error); | ||||
|     void (*set_account_data)(MatrixAPI *api, | ||||
|                              MatrixAPICallback callback, | ||||
|                              gpointer user_data, | ||||
| @@ -526,6 +534,14 @@ void matrix_api_register_account(MatrixAPI *api, | ||||
|                                  MatrixAPICallback callback, | ||||
|                                  gpointer user_data, | ||||
|                                  GError **error); | ||||
| void matrix_api_register_account_email(MatrixAPI *api, | ||||
|                                        const gchar *id_server, | ||||
|                                        const gchar *client_secret, | ||||
|                                        const gchar *email, | ||||
|                                        guint send_attempt, | ||||
|                                        MatrixAPICallback callback, | ||||
|                                        gpointer user_data, | ||||
|                                        GError **error); | ||||
| void matrix_api_set_account_data(MatrixAPI *api, | ||||
|                                  const gchar *user_id, | ||||
|                                  const gchar *room_id, | ||||
|   | ||||
| @@ -2012,6 +2012,48 @@ matrix_http_api_register_account(MatrixAPI *matrix_api, MatrixAPICallback cb, vo | ||||
|     g_hash_table_unref(parms); | ||||
| } | ||||
|  | ||||
| static void | ||||
| register_account_email(MatrixAPI *api, | ||||
|                        MatrixAPICallback callback, | ||||
|                        gpointer user_data, | ||||
|                        const gchar *id_server, | ||||
|                        const gchar *client_secret, | ||||
|                        const gchar *email, | ||||
|                        guint send_attempt, | ||||
|                        GError **error) | ||||
| { | ||||
|     JsonBuilder *builder; | ||||
|     JsonNode *root_node; | ||||
|  | ||||
|     builder = json_builder_new(); | ||||
|  | ||||
|     json_builder_begin_object(builder); | ||||
|  | ||||
|     json_builder_set_member_name(builder, "id_server"); | ||||
|     json_builder_add_string_value(builder, id_server); | ||||
|  | ||||
|     json_builder_set_member_name(builder, "client_secret"); | ||||
|     json_builder_add_string_value(builder, client_secret); | ||||
|  | ||||
|     json_builder_set_member_name(builder, "email"); | ||||
|     json_builder_add_string_value(builder, email); | ||||
|  | ||||
|     json_builder_set_member_name(builder, "send_attempt"); | ||||
|     json_builder_add_int_value(builder, send_attempt); | ||||
|  | ||||
|     json_builder_end_object(builder); | ||||
|  | ||||
|     root_node = json_builder_get_root(builder); | ||||
|  | ||||
|     _matrix_http_api_send(MATRIX_HTTP_API(api), | ||||
|                           callback, user_data, | ||||
|                           CALL_TYPE_API, "POST", "register/email/requestToken", | ||||
|                           NULL, NULL, root_node, NULL, FALSE, error); | ||||
|  | ||||
|     json_node_unref(root_node); | ||||
|     g_object_unref(builder); | ||||
| } | ||||
|  | ||||
| static void | ||||
| matrix_http_api_set_account_data(MatrixAPI *matrix_api, MatrixAPICallback cb, void *cb_target, const gchar *user_id, const gchar *room_id, const gchar *event_type, JsonNode *content, GError **error) | ||||
| { | ||||
| @@ -2528,6 +2570,7 @@ matrix_http_api_matrix_api_interface_init(MatrixAPIInterface * iface) | ||||
|     iface->get_display_name = matrix_http_api_get_display_name; | ||||
|     iface->set_display_name = matrix_http_api_set_display_name; | ||||
|     iface->register_account = matrix_http_api_register_account; | ||||
|     iface->register_account_email = register_account_email; | ||||
|     iface->set_account_data = matrix_http_api_set_account_data; | ||||
|     iface->get_room_tags = matrix_http_api_get_room_tags; | ||||
|     iface->delete_room_tag = matrix_http_api_delete_room_tag; | ||||
|   | ||||
| @@ -70,6 +70,7 @@ | ||||
|  * @MATRIX_ERROR_M_THREEPID_AUTH_FAILED: 3rd party authentication failed | ||||
|  * @MATRIX_ERROR_M_THREEPID_IN_USE: the provided 3rd party ID is already in use | ||||
|  * @MATRIX_ERROR_M_INVALID_USERNAME: the given username is invalid | ||||
|  * @MATRIX_ERROR_M_THREEPID_NOT_FOUND: the provided 3rd party ID is not found | ||||
|  * @MATRIX_ERROR_UNSPECIFIED: no error code was sent by the homeserver. If you see this error, | ||||
|  *     that usually indicates a homeserver bug | ||||
|  * @MATRIX_ERROR_UNKNOWN_ERROR: an error unknown to this library | ||||
|   | ||||
| @@ -64,6 +64,7 @@ typedef enum { | ||||
|     MATRIX_ERROR_M_THREEPID_AUTH_FAILED, | ||||
|     MATRIX_ERROR_M_THREEPID_IN_USE, | ||||
|     MATRIX_ERROR_M_INVALID_USERNAME, | ||||
|     MATRIX_ERROR_M_THREEPID_NOT_FOUND, | ||||
|  | ||||
|     /* Allow for a lot of Matrix.org defined codes. Do not define | ||||
|      * Matrix-specific error codes after this! */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user