bool QXmppVersionManager::handleStanza(const QDomElement &element) { if (element.tagName() == "iq" && QXmppVersionIq::isVersionIq(element)) { QXmppVersionIq versionIq; versionIq.parse(element); if(versionIq.type() == QXmppIq::Get) { // respond to query QXmppVersionIq responseIq; responseIq.setType(QXmppIq::Result); responseIq.setId(versionIq.id()); responseIq.setTo(versionIq.from()); responseIq.setName(clientName()); responseIq.setVersion(clientVersion()); responseIq.setOs(clientOs()); client()->sendPacket(responseIq); } emit versionReceived(versionIq); return true; } return false; }
bool XmppServerVersion::handleStanza(const QDomElement &element) { if (element.attribute("to") != server()->domain()) return false; // XEP-0092: Software Version if(QXmppVersionIq::isVersionIq(element)) { QXmppVersionIq versionIq; versionIq.parse(element); if (versionIq.type() == QXmppIq::Get) { QXmppVersionIq responseIq; responseIq.setType(QXmppIq::Result); responseIq.setId(versionIq.id()); responseIq.setTo(versionIq.from()); responseIq.setName(qApp->applicationName()); responseIq.setVersion(qApp->applicationVersion()); server()->sendPacket(responseIq); } return true; } return false; }
QString QXmppVersionManager::requestVersion(const QString& jid) { QXmppVersionIq request; request.setType(QXmppIq::Get); request.setTo(jid); if(client()->sendPacket(request)) return request.id(); else return QString(); }
void TestPackets::testVersionGet() { const QByteArray xmlGet( "<iq id=\"version_1\" to=\"[email protected]/balcony\" " "from=\"[email protected]/orchard\" type=\"get\">" "<query xmlns=\"jabber:iq:version\"/></iq>"); QXmppVersionIq verIqGet; parsePacket(verIqGet, xmlGet); QCOMPARE(verIqGet.id(), QLatin1String("version_1")); QCOMPARE(verIqGet.to(), QLatin1String("[email protected]/balcony")); QCOMPARE(verIqGet.from(), QLatin1String("[email protected]/orchard")); QCOMPARE(verIqGet.type(), QXmppIq::Get); serializePacket(verIqGet, xmlGet); }
void TestPackets::testVersionResult() { const QByteArray xmlResult( "<iq id=\"version_1\" to=\"[email protected]/orchard\" " "from=\"[email protected]/balcony\" type=\"result\">" "<query xmlns=\"jabber:iq:version\">" "<name>qxmpp</name>" "<os>Windows-XP</os>" "<version>0.2.0</version>" "</query></iq>"); QXmppVersionIq verIqResult; parsePacket(verIqResult, xmlResult); QCOMPARE(verIqResult.id(), QLatin1String("version_1")); QCOMPARE(verIqResult.to(), QLatin1String("[email protected]/orchard")); QCOMPARE(verIqResult.from(), QLatin1String("[email protected]/balcony")); QCOMPARE(verIqResult.type(), QXmppIq::Result); QCOMPARE(verIqResult.name(), QString("qxmpp")); QCOMPARE(verIqResult.version(), QString("0.2.0")); QCOMPARE(verIqResult.os(), QString("Windows-XP")); serializePacket(verIqResult, xmlResult); }