diff --git a/src/server/stanza.c b/src/server/stanza.c index 4e8e302..bc65212 100644 --- a/src/server/stanza.c +++ b/src/server/stanza.c @@ -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) { diff --git a/src/server/stanza.h b/src/server/stanza.h index d47ccb3..e547b4f 100644 --- a/src/server/stanza.h +++ b/src/server/stanza.h @@ -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 diff --git a/src/server/stanzas.c b/src/server/stanzas.c index 98d347d..5cf3e49 100644 --- a/src/server/stanzas.c +++ b/src/server/stanzas.c @@ -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) { diff --git a/src/server/stanzas.h b/src/server/stanzas.h index 74acca8..1391a30 100644 --- a/src/server/stanzas.h +++ b/src/server/stanzas.h @@ -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);