aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersion.java9
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacket.java23
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketGenerator.java21
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/IqVersionPacketHandler.java21
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/iqversion/SoftwareVersionXep.java51
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();
+ }
+}