Add API method for email based account registration
This commit is contained in:
parent
ceb8b8c3d2
commit
1be76ea025
@ -15,6 +15,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,28 @@ 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* matrix_api_register_account_email:
|
||||
* @callback: (scope async): the function to call when the request is finished
|
||||
*/
|
||||
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,
|
||||
|
@ -2006,6 +2006,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)
|
||||
{
|
||||
@ -2522,6 +2564,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! */
|
||||
|
Loading…
Reference in New Issue
Block a user