aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2009-10-18 23:22:22 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2009-10-18 23:22:22 +0000
commita9d542be47e91ae39390247f8c8bbb21d588388f (patch)
treedf3e1e317a8b616448f7ef383b58b18da086f78b /source
parent8054a813ea973b69fa655ce0cdfb516db58e4295 (diff)
downloadqxmpp-a9d542be47e91ae39390247f8c8bbb21d588388f.tar.gz
Issue 16: Implement XEP-0030
Diffstat (limited to 'source')
-rw-r--r--source/QXmppConstants.cpp2
-rw-r--r--source/QXmppConstants.h2
-rw-r--r--source/QXmppInformationRequestResult.cpp24
-rw-r--r--source/QXmppInformationRequestResult.h13
-rw-r--r--source/QXmppStream.cpp12
-rw-r--r--source/source.pro6
6 files changed, 57 insertions, 2 deletions
diff --git a/source/QXmppConstants.cpp b/source/QXmppConstants.cpp
index ae6c5e6e..bd73494f 100644
--- a/source/QXmppConstants.cpp
+++ b/source/QXmppConstants.cpp
@@ -35,3 +35,5 @@ const char* ns_stanza = "urn:ietf:params:xml:ns:xmpp-stanzas";
const char* ns_vcard = "vcard-temp";
const char* ns_auth = "jabber:iq:auth";
const char* ns_authFeature = "http://jabber.org/features/iq-auth";
+const char* ns_disco_info = "http://jabber.org/protocol/disco#info";
+const char* ns_ibb = "http://jabber.org/protocol/ibb";
diff --git a/source/QXmppConstants.h b/source/QXmppConstants.h
index 4084a89e..ee92560a 100644
--- a/source/QXmppConstants.h
+++ b/source/QXmppConstants.h
@@ -36,5 +36,7 @@ extern const char* ns_stanza;
extern const char* ns_vcard;
extern const char* ns_auth;
extern const char* ns_authFeature;
+extern const char* ns_disco_info;
+extern const char* ns_ibb;
#endif // QXMPPCONSTANTS_H
diff --git a/source/QXmppInformationRequestResult.cpp b/source/QXmppInformationRequestResult.cpp
new file mode 100644
index 00000000..86236ff6
--- /dev/null
+++ b/source/QXmppInformationRequestResult.cpp
@@ -0,0 +1,24 @@
+#include "QXmppInformationRequestResult.h"
+#include "QXmppConstants.h"
+
+QXmppInformationRequestResult::QXmppInformationRequestResult() : QXmppIq(QXmppIq::Result)
+{
+}
+
+QByteArray QXmppInformationRequestResult::toXmlElementFromChild() const
+{
+ QByteArray resultXml;
+
+ resultXml += "<query xmlns='";
+ resultXml += ns_disco_info;
+ resultXml += "'>";
+ resultXml += "<feature var='";
+ resultXml += ns_disco_info;
+ resultXml += "'/>";
+ resultXml += "<feature var='";
+ resultXml += ns_ibb;
+ resultXml += "'/>";
+ resultXml += "</query>";
+
+ return resultXml;
+}
diff --git a/source/QXmppInformationRequestResult.h b/source/QXmppInformationRequestResult.h
new file mode 100644
index 00000000..c3fa20a1
--- /dev/null
+++ b/source/QXmppInformationRequestResult.h
@@ -0,0 +1,13 @@
+#ifndef QXMPPINFORMATIONREQUESTRESULT_H
+#define QXMPPINFORMATIONREQUESTRESULT_H
+
+#include "QXmppIq.h"
+
+class QXmppInformationRequestResult : public QXmppIq
+{
+public:
+ QXmppInformationRequestResult();
+ virtual QByteArray toXmlElementFromChild() const;
+};
+
+#endif // QXMPPINFORMATIONREQUESTRESULT_H
diff --git a/source/QXmppStream.cpp b/source/QXmppStream.cpp
index 0c66cc4b..c6006aa9 100644
--- a/source/QXmppStream.cpp
+++ b/source/QXmppStream.cpp
@@ -36,6 +36,7 @@
#include "QXmppConstants.h"
#include "QXmppVCard.h"
#include "QXmppNonSASLAuth.h"
+#include "QXmppInformationRequestResult.h"
#include <QDomDocument>
#include <QStringList>
@@ -359,6 +360,17 @@ void QXmppStream::parser(const QByteArray& data)
emit vCardIqReceived(vcardIq);
iqPacket = vcardIq;
}
+ // XEP-0030 info query
+ else if(nodeRecv.firstChildElement("query").
+ namespaceURI() == ns_disco_info &&
+ type == "get")
+ {
+ QXmppInformationRequestResult qxmppFeatures;
+ qxmppFeatures.setId(id);
+ qxmppFeatures.setTo(from);
+ qxmppFeatures.setFrom(to);
+ sendPacket(qxmppFeatures);
+ }
else if(id == m_nonSASLAuthId && type == "result")
{
// successful Non-SASL Authentication
diff --git a/source/source.pro b/source/source.pro
index cca279bf..cbc98332 100644
--- a/source/source.pro
+++ b/source/source.pro
@@ -25,7 +25,8 @@ HEADERS += QXmppUtils.h \
QXmppReconnectionManager.h \
QXmppVCardManager.h \
QXmppVCard.h \
- QXmppNonSASLAuth.h
+ QXmppNonSASLAuth.h \
+ QXmppInformationRequestResult.h
# Source files
SOURCES += QXmppUtils.cpp \
@@ -46,4 +47,5 @@ SOURCES += QXmppUtils.cpp \
QXmppReconnectionManager.cpp \
QXmppVCardManager.cpp \
QXmppVCard.cpp \
- QXmppNonSASLAuth.cpp
+ QXmppNonSASLAuth.cpp \
+ QXmppInformationRequestResult.cpp