about summary refs log tree commit diff stats
path: root/src/xmpp/iq.c
diff options
context:
space:
mode:
authorswirl <roachh@protonmail.com>2021-07-01 19:30:30 -0400
committerswirl <roachh@protonmail.com>2021-08-17 14:09:48 -0400
commitd9366a26d6ef1a82eeccd7d7523db25d91e4efc1 (patch)
treed3416bf02c3dca0c44b7702e65a3cb8ce8715c81 /src/xmpp/iq.c
parent4641537721df7e89090206802f623213a9abcb1a (diff)
downloadprofani-tty-d9366a26d6ef1a82eeccd7d7523db25d91e4efc1.tar.gz
initial register command test
Diffstat (limited to 'src/xmpp/iq.c')
-rw-r--r--src/xmpp/iq.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c
index 42571b9c..a35144ff 100644
--- a/src/xmpp/iq.c
+++ b/src/xmpp/iq.c
@@ -150,6 +150,7 @@ static int _command_list_result_handler(xmpp_stanza_t* const stanza, void* const
 static int _command_exec_response_handler(xmpp_stanza_t* const stanza, void* const userdata);
 static int _mam_rsm_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
 static int _register_change_password_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
+static int _register_new_account_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata);
 
 static void _iq_free_room_data(ProfRoomInfoData* roominfo);
 static void _iq_free_affiliation_set(ProfPrivilegeSet* affiliation_set);
@@ -2655,6 +2656,36 @@ _mam_rsm_id_handler(xmpp_stanza_t* const stanza, void* const userdata)
 }
 
 void
+iq_register_new_account(const char* const user, const char* const password)
+{
+    //char* id = connection_create_stanza_id();
+    xmpp_ctx_t* const ctx = connection_get_ctx();
+    xmpp_stanza_t* iq = stanza_register_new_account(ctx, user, password);
+
+    const char* id = xmpp_stanza_get_id(iq);
+    iq_id_handler_add(id, _register_new_account_result_id_handler, NULL, NULL);
+
+    iq_send_stanza(iq);
+    xmpp_stanza_release(iq);
+}
+
+static int
+_register_new_account_result_id_handler(xmpp_stanza_t* const stanza, void* const userdata)
+{
+    const char* type = xmpp_stanza_get_type(stanza);
+    if (g_strcmp0(type, "error") == 0) {
+        char* error_message = stanza_get_error_message(stanza);
+        cons_show_error("Server error: %s", error_message);
+        log_debug("Registration error: %s", error_message);
+        free(error_message);
+    } else {
+        cons_show("Registration successful.");
+        log_debug("Registration successful.");
+    }
+    return 0;
+}
+
+void
 iq_register_change_password(const char* const user, const char* const password)
 {
     xmpp_ctx_t* const ctx = connection_get_ctx();
@@ -2807,3 +2838,4 @@ iq_muc_register_nick(const char* const roomjid)
     xmpp_stanza_release(iq);
     xmpp_stanza_release(query);
 }
+