Moved stanza_get_query_request

This commit is contained in:
James Booth
2015-06-06 22:53:33 +01:00
parent 7996baa832
commit c521962dd1
4 changed files with 47 additions and 46 deletions

View File

@@ -213,6 +213,51 @@ stanza_set_id(XMPPStanza *stanza, const char *id)
stanza->attrs = g_list_append(stanza->attrs, attrnew);
}
const char *
stanza_get_attr(XMPPStanza *stanza, const char *name)
{
if (!stanza->attrs) {
return NULL;
}
GList *curr_attr = stanza->attrs;
while (curr_attr) {
XMPPAttr *attr = curr_attr->data;
if (g_strcmp0(attr->name, name) == 0) {
return attr->value;
}
curr_attr = g_list_next(curr_attr);
}
return NULL;
}
const char *
stanza_get_query_request(XMPPStanza *stanza)
{
if (g_strcmp0(stanza->name, "iq") != 0) {
return NULL;
}
const char *type = stanza_get_attr(stanza, "type");
if (g_strcmp0(type, "get") != 0) {
return NULL;
}
XMPPStanza *query = stanza_get_child_by_name(stanza, "query");
if (!query) {
return NULL;
}
const char *xmlns = stanza_get_attr(query, "xmlns");
if (!xmlns) {
return NULL;
}
return xmlns;
}
static void
start_element(void *data, const char *element, const char **attributes)
{

View File

@@ -46,5 +46,7 @@ XMPPStanza* stanza_get_child_by_ns(XMPPStanza *stanza, char *ns);
XMPPStanza* stanza_get_child_by_name(XMPPStanza *stanza, char *name);
const char* stanza_get_id(XMPPStanza *stanza);
void stanza_set_id(XMPPStanza *stanza, const char *id);
const char* stanza_get_attr(XMPPStanza *stanza, const char *name);
const char *stanza_get_query_request(XMPPStanza *stanza);
#endif

View File

@@ -62,51 +62,6 @@ stanza_add(XMPPStanza *stanza)
pthread_mutex_unlock(&stanzas_lock);
}
const char *
stanza_get_attr(XMPPStanza *stanza, const char *name)
{
if (!stanza->attrs) {
return NULL;
}
GList *curr_attr = stanza->attrs;
while (curr_attr) {
XMPPAttr *attr = curr_attr->data;
if (g_strcmp0(attr->name, name) == 0) {
return attr->value;
}
curr_attr = g_list_next(curr_attr);
}
return NULL;
}
const char *
stanza_get_query_request(XMPPStanza *stanza)
{
if (g_strcmp0(stanza->name, "iq") != 0) {
return NULL;
}
const char *type = stanza_get_attr(stanza, "type");
if (g_strcmp0(type, "get") != 0) {
return NULL;
}
XMPPStanza *query = stanza_get_child_by_name(stanza, "query");
if (!query) {
return NULL;
}
const char *xmlns = stanza_get_attr(query, "xmlns");
if (!xmlns) {
return NULL;
}
return xmlns;
}
static int
_xmpp_attr_equal(XMPPAttr *attr1, XMPPAttr *attr2)
{

View File

@@ -28,7 +28,6 @@
#include "server/stanza.h"
void stanza_add(XMPPStanza *stanza);
const char *stanza_get_query_request(XMPPStanza *stanza);
int stanza_verify_any(XMPPStanza *stanza);
int stanza_verify_last(XMPPStanza *stanza);