changeset 691:3c0a0a993de8

Implement IQ:time requests
author Mikael Berthe <mikael@lilotux.net>
date Thu, 09 Feb 2006 23:21:49 +0100
parents 3e965a1186c7
children d3511f846d47
files mcabber/src/jab_iq.c mcabber/src/jab_priv.h mcabber/src/jabglue.c
diffstat 3 files changed, 69 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/jab_iq.c	Thu Feb 09 23:20:28 2006 +0100
+++ b/mcabber/src/jab_iq.c	Thu Feb 09 23:21:49 2006 +0100
@@ -304,6 +304,69 @@
   jab_send(jc, iqn->xmldata);
 }
 
+void iqscallback_time(iqs *iqp, xmlnode xml_result)
+{
+  xmlnode ansqry;
+  char *p, *p_noutf8;
+
+  // xml_result is null for timeouts and errors
+  if (!xml_result) return;
+
+  ansqry = xmlnode_get_tag(xml_result, "query");
+  if (!ansqry) {
+    scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result!");
+    return;
+  }
+  // Display IQ result sender...
+  p = xmlnode_get_attrib(xml_result, "from");
+  if (!p) {
+    scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:time result (no sender name).");
+    return;
+  }
+  p_noutf8 = from_utf8(p);
+  if (p_noutf8) {
+    scr_LogPrint(LPRINT_LOGNORM, "IQ:time from <%s>", p_noutf8);
+    g_free(p_noutf8);
+  }
+  // Get result data...
+  p = xmlnode_get_tag_data(ansqry, "utc");
+  if (p) {
+    p_noutf8 = from_utf8(p);
+    if (p_noutf8) {
+      scr_LogPrint(LPRINT_LOGNORM, "UTC:  %s", p_noutf8);
+      g_free(p_noutf8);
+    }
+  }
+  p = xmlnode_get_tag_data(ansqry, "tz");
+  if (p) {
+    p_noutf8 = from_utf8(p);
+    if (p_noutf8) {
+      scr_LogPrint(LPRINT_LOGNORM, "TZ:   %s", p_noutf8);
+      g_free(p_noutf8);
+    }
+  }
+  p = xmlnode_get_tag_data(ansqry, "display");
+  if (p) {
+    p_noutf8 = from_utf8(p);
+    if (p_noutf8) {
+      scr_LogPrint(LPRINT_LOGNORM, "Time: %s", p_noutf8);
+      g_free(p_noutf8);
+    }
+  }
+}
+
+void request_time(const char *fulljid)
+{
+  iqs *iqn;
+  gchar *utf8_jid = to_utf8(fulljid);
+
+  iqn = iqs_new(JPACKET__GET, NS_TIME, "time", IQS_DEFAULT_TIMEOUT);
+  xmlnode_put_attrib(iqn->xmldata, "to", utf8_jid);
+  if (utf8_jid) g_free(utf8_jid);
+  iqn->callback = &iqscallback_time;
+  jab_send(jc, iqn->xmldata);
+}
+
 void iqscallback_auth(iqs *iqp, xmlnode xml_result)
 {
   if (jstate == STATE_GETAUTH) {
--- a/mcabber/src/jab_priv.h	Thu Feb 09 23:20:28 2006 +0100
+++ b/mcabber/src/jab_priv.h	Thu Feb 09 23:21:49 2006 +0100
@@ -46,6 +46,7 @@
 void iqs_check_timeout(void);
 void iqscallback_auth(iqs *iqp, xmlnode xml_result);
 void request_version(const char *fulljid);
+void request_time(const char *fulljid);
 
 #endif /* __JAB_PRIV_H__ */
 
--- a/mcabber/src/jabglue.c	Thu Feb 09 23:20:28 2006 +0100
+++ b/mcabber/src/jabglue.c	Thu Feb 09 23:21:49 2006 +0100
@@ -571,6 +571,11 @@
   g_free(cleanjid);
 }
 
+void jb_request_time(const char *fulljid)
+{
+  request_time(fulljid);
+}
+
 // Join a MUC room
 void jb_room_join(const char *room, const char *nickname)
 {