aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/xmpp/ping
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/xmpp/ping')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/ping/Ping.java8
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingPacketHandler.java22
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingXep.java51
3 files changed, 81 insertions, 0 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/Ping.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/Ping.java
new file mode 100644
index 00000000..ac201c01
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/Ping.java
@@ -0,0 +1,8 @@
+package de.thedevstack.conversationsplus.xmpp.ping;
+
+/**
+ */
+public interface Ping {
+ String NAMESPACE = "urn:xmpp:ping";
+ String ELEMENT = "ping";
+}
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingPacketHandler.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingPacketHandler.java
new file mode 100644
index 00000000..14e8f57c
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingPacketHandler.java
@@ -0,0 +1,22 @@
+package de.thedevstack.conversationsplus.xmpp.ping;
+
+import de.thedevstack.conversationsplus.entities.Account;
+import de.thedevstack.conversationsplus.utils.XmppSendUtil;
+import de.thedevstack.conversationsplus.xmpp.IqPacketHandler;
+import de.thedevstack.conversationsplus.xmpp.exceptions.IqPacketErrorException;
+import de.thedevstack.conversationsplus.xmpp.exceptions.NotAllowedIqException;
+import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket;
+import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacketGenerator;
+
+/**
+ */
+public class PingPacketHandler implements IqPacketHandler {
+ @Override
+ public void handleIqPacket(Account account, IqPacket packet) throws IqPacketErrorException {
+ if (packet.getType() == IqPacket.TYPE.GET) {
+ XmppSendUtil.sendIqPacket(account, IqPacketGenerator.generateIqResultResponse(packet));
+ } else {
+ throw new NotAllowedIqException(packet, "only type=get allowed for processing an XMPP Ping (XEP-0199)");
+ }
+ }
+}
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingXep.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingXep.java
new file mode 100644
index 00000000..6036a64f
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/ping/PingXep.java
@@ -0,0 +1,51 @@
+package de.thedevstack.conversationsplus.xmpp.ping;
+
+import de.thedevstack.conversationsplus.xmpp.AbstractXep;
+import de.thedevstack.conversationsplus.xmpp.IqPacketHandler;
+
+/**
+ */
+public class PingXep extends AbstractXep {
+ public PingXep() {
+ super();
+ }
+
+ public PingXep(boolean enabled) {
+ super(enabled);
+ }
+
+ @Override
+ public String xepNumber() {
+ return "0199";
+ }
+
+ @Override
+ public String shortName() {
+ return "ping";
+ }
+
+ @Override
+ public String name() {
+ return "XMPP Ping";
+ }
+
+ @Override
+ public String namespace() {
+ return Ping.NAMESPACE;
+ }
+
+ @Override
+ public String featureNamespace() {
+ return Ping.NAMESPACE;
+ }
+
+ @Override
+ public String elementName() {
+ return Ping.ELEMENT;
+ }
+
+ @Override
+ public IqPacketHandler handler() {
+ return new PingPacketHandler();
+ }
+}