Added /room config edit and /room config cancel

This commit is contained in:
James Booth
2014-09-04 22:29:57 +01:00
parent bf283652f8
commit 1e0e5597c2
7 changed files with 114 additions and 17 deletions

View File

@@ -188,6 +188,26 @@ _iq_destroy_instant_room(const char * const room_jid)
xmpp_stanza_release(iq);
}
static void
_iq_request_room_config_form(const char * const room_jid)
{
xmpp_conn_t * const conn = connection_get_conn();
xmpp_ctx_t * const ctx = connection_get_ctx();
xmpp_stanza_t *iq = stanza_create_room_config_request_iq(ctx, room_jid);
xmpp_send(conn, iq);
xmpp_stanza_release(iq);
}
static void
_iq_room_config_cancel(const char * const room_jid)
{
xmpp_conn_t * const conn = connection_get_conn();
xmpp_ctx_t * const ctx = connection_get_ctx();
xmpp_stanza_t *iq = stanza_create_room_config_cancel_iq(ctx, room_jid);
xmpp_send(conn, iq);
xmpp_stanza_release(iq);
}
static void
_iq_send_ping(const char * const target)
{
@@ -800,4 +820,6 @@ iq_init_module(void)
iq_confirm_instant_room = _iq_confirm_instant_room;
iq_destroy_instant_room = _iq_destroy_instant_room;
iq_send_ping = _iq_send_ping;
iq_request_room_config_form = _iq_request_room_config_form;
iq_room_config_cancel = _iq_room_config_cancel;
}

View File

@@ -430,7 +430,7 @@ stanza_create_instant_room_request_iq(xmpp_ctx_t *ctx, const char * const room_j
xmpp_stanza_set_name(iq, STANZA_NAME_IQ);
xmpp_stanza_set_type(iq, STANZA_TYPE_SET);
xmpp_stanza_set_attribute(iq, STANZA_ATTR_TO, room_jid);
char *id = create_unique_id("leave");
char *id = create_unique_id("room");
xmpp_stanza_set_id(iq, id);
free(id);
@@ -459,7 +459,7 @@ stanza_create_instant_room_destroy_iq(xmpp_ctx_t *ctx, const char * const room_j
xmpp_stanza_set_name(iq, STANZA_NAME_IQ);
xmpp_stanza_set_type(iq, STANZA_TYPE_SET);
xmpp_stanza_set_attribute(iq, STANZA_ATTR_TO, room_jid);
char *id = create_unique_id("leave");
char *id = create_unique_id("room");
xmpp_stanza_set_id(iq, id);
free(id);
@@ -479,6 +479,56 @@ stanza_create_instant_room_destroy_iq(xmpp_ctx_t *ctx, const char * const room_j
return iq;
}
xmpp_stanza_t *
stanza_create_room_config_request_iq(xmpp_ctx_t *ctx, const char * const room_jid)
{
xmpp_stanza_t *iq = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(iq, STANZA_NAME_IQ);
xmpp_stanza_set_type(iq, STANZA_TYPE_GET);
xmpp_stanza_set_attribute(iq, STANZA_ATTR_TO, room_jid);
char *id = create_unique_id("room");
xmpp_stanza_set_id(iq, id);
free(id);
xmpp_stanza_t *query = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(query, STANZA_NAME_QUERY);
xmpp_stanza_set_ns(query, STANZA_NS_MUC_OWNER);
xmpp_stanza_add_child(iq, query);
xmpp_stanza_release(query);
return iq;
}
xmpp_stanza_t *
stanza_create_room_config_cancel_iq(xmpp_ctx_t *ctx, const char * const room_jid)
{
xmpp_stanza_t *iq = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(iq, STANZA_NAME_IQ);
xmpp_stanza_set_type(iq, STANZA_TYPE_SET);
xmpp_stanza_set_attribute(iq, STANZA_ATTR_TO, room_jid);
char *id = create_unique_id("room");
xmpp_stanza_set_id(iq, id);
free(id);
xmpp_stanza_t *query = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(query, STANZA_NAME_QUERY);
xmpp_stanza_set_ns(query, STANZA_NS_MUC_OWNER);
xmpp_stanza_t *x = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(x, STANZA_NAME_X);
xmpp_stanza_set_type(x, "cancel");
xmpp_stanza_set_ns(x, STANZA_NS_DATA);
xmpp_stanza_add_child(query, x);
xmpp_stanza_release(x);
xmpp_stanza_add_child(iq, query);
xmpp_stanza_release(query);
return iq;
}
xmpp_stanza_t *
stanza_create_presence(xmpp_ctx_t * const ctx)
{

View File

@@ -207,6 +207,10 @@ xmpp_stanza_t* stanza_create_instant_room_request_iq(xmpp_ctx_t *ctx,
const char * const room_jid);
xmpp_stanza_t* stanza_create_instant_room_destroy_iq(xmpp_ctx_t *ctx,
const char * const room_jid);
xmpp_stanza_t* stanza_create_room_config_request_iq(xmpp_ctx_t *ctx,
const char * const room_jid);
xmpp_stanza_t* stanza_create_room_config_cancel_iq(xmpp_ctx_t *ctx,
const char * const room_jid);
int stanza_get_idle_time(xmpp_stanza_t * const stanza);
char * stanza_get_caps_str(xmpp_stanza_t * const stanza);

View File

@@ -141,6 +141,8 @@ void (*iq_disco_items_request)(gchar *jid);
void (*iq_set_autoping)(int seconds);
void (*iq_confirm_instant_room)(const char * const room_jid);
void (*iq_destroy_instant_room)(const char * const room_jid);
void (*iq_request_room_config_form)(const char * const room_jid);
void (*iq_room_config_cancel)(const char * const room_jid);
void (*iq_send_ping)(const char * const target);
// caps functions