diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-10-17 10:31:49 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-10-17 16:26:03 +0200 |
| commit | 3b111ee6b66cf4d0f82d2a245f59fb130728cae7 (patch) | |
| tree | cd795b1d308e9f6a45d3d4f00c8597bead5cf2b6 /src/client/QXmppEntityTimeManager.cpp | |
| parent | d014416ac23f73677f8931161bb2257ec09dced7 (diff) | |
EntityTimeManager: Use new IQ request handling
Diffstat (limited to 'src/client/QXmppEntityTimeManager.cpp')
| -rw-r--r-- | src/client/QXmppEntityTimeManager.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/src/client/QXmppEntityTimeManager.cpp b/src/client/QXmppEntityTimeManager.cpp index 0dd1d4cc..17daa844 100644 --- a/src/client/QXmppEntityTimeManager.cpp +++ b/src/client/QXmppEntityTimeManager.cpp @@ -8,6 +8,7 @@ #include "QXmppConstants_p.h" #include "QXmppEntityTimeIq.h" #include "QXmppFutureUtils_p.h" +#include "QXmppIqHandling.h" #include "QXmppUtils.h" #include <QDateTime> @@ -71,31 +72,34 @@ QStringList QXmppEntityTimeManager::discoveryFeatures() const bool QXmppEntityTimeManager::handleStanza(const QDomElement &element) { + if (QXmpp::handleIqRequests<QXmppEntityTimeIq>(element, client(), this)) { + return true; + } + if (element.tagName() == "iq" && QXmppEntityTimeIq::isEntityTimeIq(element)) { QXmppEntityTimeIq entityTime; entityTime.parse(element); - - if (entityTime.type() == QXmppIq::Get) { - // respond to query - QXmppEntityTimeIq responseIq; - responseIq.setType(QXmppIq::Result); - responseIq.setId(entityTime.id()); - responseIq.setTo(entityTime.from()); - - QDateTime currentTime = QDateTime::currentDateTime(); - QDateTime utc = currentTime.toUTC(); - responseIq.setUtc(utc); - - currentTime.setTimeSpec(Qt::UTC); - responseIq.setTzo(utc.secsTo(currentTime)); - - client()->sendPacket(responseIq); - } - emit timeReceived(entityTime); return true; } return false; } + +std::variant<QXmppEntityTimeIq, QXmppStanza::Error> QXmppEntityTimeManager::handleIq(QXmppEntityTimeIq iq) +{ + using Err = QXmppStanza::Error; + if (iq.type() != QXmppIq::Get) { + return Err(Err::Cancel, Err::BadRequest, QStringLiteral("Only IQ requests of type 'get' allowed.")); + } + + QXmppEntityTimeIq responseIq; + QDateTime currentTime = QDateTime::currentDateTime(); + QDateTime utc = currentTime.toUTC(); + responseIq.setUtc(utc); + + currentTime.setTimeSpec(Qt::UTC); + responseIq.setTzo(utc.secsTo(currentTime)); + return responseIq; +} /// \endcond |
