diff options
author | steckbrief <steckbrief@chefmail.de> | 2017-08-07 12:57:57 +0200 |
---|---|---|
committer | steckbrief <steckbrief@chefmail.de> | 2017-08-07 12:57:57 +0200 |
commit | a892bb6f1685b84b74ba37e5a6a24ee8fb45eee7 (patch) | |
tree | f6d8036841f961dd987c2fb48e41983b327be049 /src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion | |
parent | be1992ce897d3b0551e545646a3e0f45cc6dd8c2 (diff) |
Simplifying introduction of new XEP implementations, implements FS#250 and FS#251 (Privacy and Security settings), refactoring of location of some interfaces
Diffstat (limited to '')
5 files changed, 97 insertions, 28 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersion.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersion.java new file mode 100644 index 00000000..e90ccb5a --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersion.java @@ -0,0 +1,9 @@ +package de.thedevstack.conversationsplus.xmpp.iqversion; + +/** + * + */ +public interface IqVersion { + String NAMESPACE = "jabber:iq:version"; + String ELEMENT = "query"; +} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacket.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacket.java deleted file mode 100644 index a3cecdac..00000000 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacket.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.thedevstack.conversationsplus.xmpp.iqversion; - -import android.os.Build; - -import de.thedevstack.conversationsplus.ConversationsPlusApplication; -import de.thedevstack.conversationsplus.xml.Element; -import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; - -/** - * Representation of an software version packet as defined in XEP-0092. - * @see <a href="http://xmpp.org/extensions/xep-0092.html">http://xmpp.org/extensions/xep-0092.html</a> - */ -public class IqVersionPacket extends IqPacket { - public static final String NAMESPACE = "jabber:iq:version"; - - IqVersionPacket() { - super(IqPacket.TYPE.RESULT); - Element query = this.addChild("query", NAMESPACE); - query.addChild("name").setContent(ConversationsPlusApplication.getName()); - query.addChild("version").setContent(ConversationsPlusApplication.getVersion()); - query.addChild("os").setContent("Android " + Build.VERSION.RELEASE); - } -} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketGenerator.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketGenerator.java index 97a7e90d..c4961c1d 100644 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketGenerator.java +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketGenerator.java @@ -1,6 +1,12 @@ package de.thedevstack.conversationsplus.xmpp.iqversion; +import android.os.Build; + +import de.thedevstack.conversationsplus.ConversationsPlusApplication; +import de.thedevstack.conversationsplus.ConversationsPlusPreferences; +import de.thedevstack.conversationsplus.xml.Element; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; +import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacketGenerator; /** * Generates the IQ Packets for Software Version @@ -26,12 +32,17 @@ public final class IqVersionPacketGenerator { * @param packet the packet to respond to * @return */ - public static IqVersionPacket generateResponse(IqPacket packet) { - IqVersionPacket iqVersionPacket = new IqVersionPacket(); - iqVersionPacket.setTo(packet.getFrom()); - iqVersionPacket.setId(packet.getId()); + public static IqPacket generateResponse(IqPacket packet) { + IqPacket responsePacket = IqPacketGenerator.generateIqResultResponse(packet); + + Element query = responsePacket.addChild(IqVersion.ELEMENT, IqVersion.NAMESPACE); + query.addChild("name").setContent(ConversationsPlusApplication.getName()); + query.addChild("version").setContent(ConversationsPlusApplication.getVersion()); + if (ConversationsPlusPreferences.sendOsInformation()) { + query.addChild("os").setContent("Android " + Build.VERSION.RELEASE); + } - return iqVersionPacket; + return responsePacket; } private IqVersionPacketGenerator() {} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketHandler.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketHandler.java new file mode 100644 index 00000000..7462d0cb --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketHandler.java @@ -0,0 +1,21 @@ +package de.thedevstack.conversationsplus.xmpp.iqversion; + +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; + +/** + */ +public class IqVersionPacketHandler implements IqPacketHandler { + @Override + public void handleIqPacket(Account account, IqPacket packet) throws IqPacketErrorException { + if (packet.getType() == IqPacket.TYPE.GET) { + XmppSendUtil.sendIqPacket(account, IqVersionPacketGenerator.generateResponse(packet)); + } else { + throw new NotAllowedIqException(packet, "only type=get allowed for processing an Software Version (XEP-0092)"); + } + } +} diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/SoftwareVersionXep.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/SoftwareVersionXep.java new file mode 100644 index 00000000..9cd69bb2 --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/SoftwareVersionXep.java @@ -0,0 +1,51 @@ +package de.thedevstack.conversationsplus.xmpp.iqversion; + +import de.thedevstack.conversationsplus.xmpp.AbstractXep; +import de.thedevstack.conversationsplus.xmpp.IqPacketHandler; + +/** + */ +public class SoftwareVersionXep extends AbstractXep { + public SoftwareVersionXep() { + super(); + } + + public SoftwareVersionXep(boolean enabled) { + super(enabled); + } + + @Override + public String xepNumber() { + return "0092"; + } + + @Override + public String shortName() { + return "iq-version"; + } + + @Override + public String name() { + return "Software Version"; + } + + @Override + public String namespace() { + return IqVersion.NAMESPACE; + } + + @Override + public String featureNamespace() { + return IqVersion.NAMESPACE; + } + + @Override + public String elementName() { + return IqVersion.ELEMENT; + } + + @Override + public IqPacketHandler handler() { + return new IqVersionPacketHandler(); + } +} |