XMPP: commit xprint statement.
[citadel.git] / citadel / modules / xmpp / xmpp_query_namespace.c
index e791f3e6bcac09305038cb502165288ee9976b4a..e7fcc0c8a98bba7a336e646ec46fc17a8005bbb2 100644 (file)
  */
 void xmpp_roster_item(struct CitContext *cptr)
 {
+       struct CitContext *CCC=CC;
 
-       XPUT("<item subscription=\"both\" jid=\"");
-       XPutProp(cptr->cs_inet_email, strlen(cptr->cs_inet_email));
-       XPUT("\" name=\"");
-       XPutProp(cptr->user.fullname, strlen(cptr->user.fullname));
-       XPUT("\">"
-            "<group>");
-       XPutBody(CFG_KEY(c_humannode));
-       XPUT("</group>"
-            "</item>");
+       XPrint(HKEY("item"), 0,
+              XCPROPERTY("subscription", "both"),
+              XPROPERTY("jid",  CCC->cs_inet_email, strlen(CCC->cs_inet_email)),
+              XPROPERTY("name", cptr->user.fullname, strlen(cptr->user.fullname)),
+              TYPE_ARGEND);
+
+       XPrint(HKEY("group"), XCLOSED,
+              XCFGBODY(c_humannode),
+              TYPE_ARGEND);
+
+       XPUT("</item>");
 }
 
 /* 
@@ -109,11 +112,17 @@ xmpp_query_namespace(purple5b5c1e5a, , vcard-temp:query)
  *
  */
 
-void xmpp_query_namespace(char *iq_id, char *iq_from, char *iq_to, char *query_xmlns)
+void xmpp_query_namespace(TheToken_iq *IQ/*char *iq_id, char *iq_from, char *iq_to*/, char *query_xmlns)
 {
        int supported_namespace = 0;
        int roster_query = 0;
-
+       const char *TypeStr;
+       long TLen;
+       ConstStr Type[] = {
+               {HKEY("result")},
+               {HKEY("error")}
+       };
+       
        /* We need to know before we begin the response whether this is a supported namespace, so
         * unfortunately all supported namespaces need to be defined here *and* down below where
         * they are handled.
@@ -125,25 +134,25 @@ void xmpp_query_namespace(char *iq_id, char *iq_from, char *iq_to, char *query_x
                supported_namespace = 1;
        }
 
-       XMPP_syslog(LOG_DEBUG, "xmpp_query_namespace(%s, %s, %s, %s)\n", iq_id, iq_from, iq_to, query_xmlns);
+       XMPP_syslog(LOG_DEBUG, "xmpp_query_namespace(%s, %s, %s, %s)\n", ChrPtr(IQ->id), ChrPtr(IQ->from), ChrPtr(IQ->to), query_xmlns);
 
        /*
         * Beginning of query result.
         */
        if (supported_namespace) {
-               XPUT("<iq type=\"result\" ");
+               TypeStr = Type[0].Key;
+               TLen    = Type[0].len;
        }
        else {
-                XPUT("<iq type=\"error\" ");
+               TypeStr = Type[1].Key;
+               TLen    = Type[1].len;
        }
-       if (!IsEmptyStr(iq_from)) {
-               XPUT("to=\"");
-               XPutProp(iq_from, strlen(iq_from));
-               XPUT("\" ");
-       }
-       XPUT("id=\"");
-       XPutProp(iq_id, strlen(iq_id));
-       XPUT("\">");
+
+       XPrint(HKEY("iq"), 0,
+              XPROPERTY("type", TypeStr, TLen),
+              XSPROPERTY("to",  IQ->from),
+              XSPROPERTY("id",   IQ->id),
+              TYPE_ARGEND);
 
        /*
         * Is this a query we know how to handle?