aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber/jutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/jabber/jutil.c')
-rw-r--r--protocols/jabber/jutil.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/protocols/jabber/jutil.c b/protocols/jabber/jutil.c
new file mode 100644
index 00000000..dd367ac9
--- /dev/null
+++ b/protocols/jabber/jutil.c
@@ -0,0 +1,122 @@
+/* --------------------------------------------------------------------------
+ *
+ * License
+ *
+ * The contents of this file are subject to the Jabber Open Source License
+ * Version 1.0 (the "JOSL"). You may not copy or use this file, in either
+ * source code or executable form, except in compliance with the JOSL. You
+ * may obtain a copy of the JOSL at http://www.jabber.org/ or at
+ * http://www.opensource.org/.
+ *
+ * Software distributed under the JOSL is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the JOSL
+ * for the specific language governing rights and limitations under the
+ * JOSL.
+ *
+ * Copyrights
+ *
+ * Portions created by or assigned to Jabber.com, Inc. are
+ * Copyright (c) 1999-2002 Jabber.com, Inc. All Rights Reserved. Contact
+ * information for Jabber.com, Inc. is available at http://www.jabber.com/.
+ *
+ * Portions Copyright (c) 1998-1999 Jeremie Miller.
+ *
+ * Acknowledgements
+ *
+ * Special thanks to the Jabber Open Source Contributors for their
+ * suggestions and support of Jabber.
+ *
+ * Alternatively, the contents of this file may be used under the terms of the
+ * GNU General Public License Version 2 or later (the "GPL"), in which case
+ * the provisions of the GPL are applicable instead of those above. If you
+ * wish to allow use of your version of this file only under the terms of the
+ * GPL and not to allow others to use your version of this file under the JOSL,
+ * indicate your decision by deleting the provisions above and replace them
+ * with the notice and other provisions required by the GPL. If you do not
+ * delete the provisions above, a recipient may use your version of this file
+ * under either the JOSL or the GPL.
+ *
+ *
+ * --------------------------------------------------------------------------*/
+
+#include "jabber.h"
+#include <glib.h>
+#include "nogaim.h"
+
+/* util for making presence packets */
+xmlnode jutil_presnew(int type, char *to, char *status)
+{
+ xmlnode pres;
+
+ pres = xmlnode_new_tag("presence");
+ switch(type)
+ {
+ case JPACKET__SUBSCRIBE:
+ xmlnode_put_attrib(pres,"type","subscribe");
+ break;
+ case JPACKET__UNSUBSCRIBE:
+ xmlnode_put_attrib(pres,"type","unsubscribe");
+ break;
+ case JPACKET__SUBSCRIBED:
+ xmlnode_put_attrib(pres,"type","subscribed");
+ break;
+ case JPACKET__UNSUBSCRIBED:
+ xmlnode_put_attrib(pres,"type","unsubscribed");
+ break;
+ case JPACKET__PROBE:
+ xmlnode_put_attrib(pres,"type","probe");
+ break;
+ case JPACKET__UNAVAILABLE:
+ xmlnode_put_attrib(pres,"type","unavailable");
+ break;
+ case JPACKET__INVISIBLE:
+ xmlnode_put_attrib(pres,"type","invisible");
+ break;
+ }
+ if(to != NULL)
+ xmlnode_put_attrib(pres,"to",to);
+ if(status != NULL)
+ xmlnode_insert_cdata(xmlnode_insert_tag(pres,"status"),status,strlen(status));
+
+ return pres;
+}
+
+/* util for making IQ packets */
+xmlnode jutil_iqnew(int type, char *ns)
+{
+ xmlnode iq;
+
+ iq = xmlnode_new_tag("iq");
+ switch(type)
+ {
+ case JPACKET__GET:
+ xmlnode_put_attrib(iq,"type","get");
+ break;
+ case JPACKET__SET:
+ xmlnode_put_attrib(iq,"type","set");
+ break;
+ case JPACKET__RESULT:
+ xmlnode_put_attrib(iq,"type","result");
+ break;
+ case JPACKET__ERROR:
+ xmlnode_put_attrib(iq,"type","error");
+ break;
+ }
+ xmlnode_put_attrib(xmlnode_insert_tag(iq,"query"),"xmlns",ns);
+
+ return iq;
+}
+
+/* util for making stream packets */
+xmlnode jutil_header(char* xmlns, char* server)
+{
+ xmlnode result;
+ if ((xmlns == NULL)||(server == NULL))
+ return NULL;
+ result = xmlnode_new_tag("stream:stream");
+ xmlnode_put_attrib(result, "xmlns:stream", "http://etherx.jabber.org/streams");
+ xmlnode_put_attrib(result, "xmlns", xmlns);
+ xmlnode_put_attrib(result, "to", server);
+
+ return result;
+}