Mercurial > hg
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) {