diff options
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/xmpp/ping')
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(); + } +} |