aboutsummaryrefslogtreecommitdiff
path: root/src/client/QXmppEntityTimeManager.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-10-17 10:31:49 +0200
committerLinus Jahn <lnj@kaidan.im>2022-10-17 16:26:03 +0200
commit3b111ee6b66cf4d0f82d2a245f59fb130728cae7 (patch)
treecd795b1d308e9f6a45d3d4f00c8597bead5cf2b6 /src/client/QXmppEntityTimeManager.cpp
parentd014416ac23f73677f8931161bb2257ec09dced7 (diff)
EntityTimeManager: Use new IQ request handling
Diffstat (limited to 'src/client/QXmppEntityTimeManager.cpp')
-rw-r--r--src/client/QXmppEntityTimeManager.cpp40
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