diff options
author | Christian Schneppe <christian@pix-art.de> | 2016-07-29 19:52:37 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2016-07-29 19:52:37 +0200 |
commit | 94933e21cd08c53a23e5ec6c12bc1dc383b1f3ce (patch) | |
tree | 4fa096547d0917f603252c9a279e4208ba4ef711 /src/main/java/de/pixart/messenger/xmpp/stanzas | |
parent | 50889004f3c679387d95ba9c49a53a8f882ba33c (diff) |
changed package id inside manifest and project
Diffstat (limited to 'src/main/java/de/pixart/messenger/xmpp/stanzas')
11 files changed, 329 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/AbstractAcknowledgeableStanza.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/AbstractAcknowledgeableStanza.java new file mode 100644 index 000000000..615c4dfbe --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/AbstractAcknowledgeableStanza.java @@ -0,0 +1,31 @@ +package de.pixart.messenger.xmpp.stanzas; + +import de.pixart.messenger.xml.Element; + +abstract public class AbstractAcknowledgeableStanza extends AbstractStanza { + + protected AbstractAcknowledgeableStanza(String name) { + super(name); + } + + + public String getId() { + return this.getAttribute("id"); + } + + public void setId(final String id) { + setAttribute("id", id); + } + + public Element getError() { + Element error = findChild("error"); + if (error != null) { + for(Element element : error.getChildren()) { + if (!element.getName().equals("text")) { + return element; + } + } + } + return null; + } +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/AbstractStanza.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/AbstractStanza.java new file mode 100644 index 000000000..a21d8b56d --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/AbstractStanza.java @@ -0,0 +1,50 @@ +package de.pixart.messenger.xmpp.stanzas; + +import de.pixart.messenger.entities.Account; +import de.pixart.messenger.xml.Element; +import de.pixart.messenger.xmpp.jid.Jid; + +public class AbstractStanza extends Element { + + protected AbstractStanza(final String name) { + super(name); + } + + public Jid getTo() { + return getAttributeAsJid("to"); + } + + public Jid getFrom() { + return getAttributeAsJid("from"); + } + + public void setTo(final Jid to) { + if (to != null) { + setAttribute("to", to.toString()); + } + } + + public void setFrom(final Jid from) { + if (from != null) { + setAttribute("from", from.toString()); + } + } + + public boolean fromServer(final Account account) { + return getFrom() == null + || getFrom().equals(account.getServer()) + || getFrom().equals(account.getJid().toBareJid()) + || getFrom().equals(account.getJid()); + } + + public boolean toServer(final Account account) { + return getTo() == null + || getTo().equals(account.getServer()) + || getTo().equals(account.getJid().toBareJid()) + || getTo().equals(account.getJid()); + } + + public boolean fromAccount(final Account account) { + return getFrom() != null && getFrom().toBareJid().equals(account.getJid().toBareJid()); + } +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/IqPacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/IqPacket.java new file mode 100644 index 000000000..b0a22c314 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/IqPacket.java @@ -0,0 +1,69 @@ +package de.pixart.messenger.xmpp.stanzas; + +import de.pixart.messenger.xml.Element; + +public class IqPacket extends AbstractAcknowledgeableStanza { + + public enum TYPE { + ERROR, + SET, + RESULT, + GET, + INVALID, + TIMEOUT + } + + public IqPacket(final TYPE type) { + super("iq"); + if (type != TYPE.INVALID) { + this.setAttribute("type", type.toString().toLowerCase()); + } + } + + public IqPacket() { + super("iq"); + } + + public Element query() { + Element query = findChild("query"); + if (query == null) { + query = addChild("query"); + } + return query; + } + + public Element query(final String xmlns) { + final Element query = query(); + query.setAttribute("xmlns", xmlns); + return query(); + } + + public TYPE getType() { + final String type = getAttribute("type"); + if (type == null) { + return TYPE.INVALID; + } + switch (type) { + case "error": + return TYPE.ERROR; + case "result": + return TYPE.RESULT; + case "set": + return TYPE.SET; + case "get": + return TYPE.GET; + case "timeout": + return TYPE.TIMEOUT; + default: + return TYPE.INVALID; + } + } + + public IqPacket generateResponse(final TYPE type) { + final IqPacket packet = new IqPacket(type); + packet.setTo(this.getFrom()); + packet.setId(this.getId()); + return packet; + } + +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/MessagePacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/MessagePacket.java new file mode 100644 index 000000000..5af2d701b --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/MessagePacket.java @@ -0,0 +1,99 @@ +package de.pixart.messenger.xmpp.stanzas; + +import android.util.Pair; + +import de.pixart.messenger.parser.AbstractParser; +import de.pixart.messenger.xml.Element; + +public class MessagePacket extends AbstractAcknowledgeableStanza { + public static final int TYPE_CHAT = 0; + public static final int TYPE_NORMAL = 2; + public static final int TYPE_GROUPCHAT = 3; + public static final int TYPE_ERROR = 4; + public static final int TYPE_HEADLINE = 5; + + public MessagePacket() { + super("message"); + } + + public String getBody() { + return findChildContent("body"); + } + + public void setBody(String text) { + this.children.remove(findChild("body")); + Element body = new Element("body"); + body.setContent(text); + this.children.add(0, body); + } + + public void setAxolotlMessage(Element axolotlMessage) { + this.children.remove(findChild("body")); + this.children.add(0, axolotlMessage); + } + + public void setType(int type) { + switch (type) { + case TYPE_CHAT: + this.setAttribute("type", "chat"); + break; + case TYPE_GROUPCHAT: + this.setAttribute("type", "groupchat"); + break; + case TYPE_NORMAL: + break; + case TYPE_ERROR: + this.setAttribute("type","error"); + break; + default: + this.setAttribute("type", "chat"); + break; + } + } + + public int getType() { + String type = getAttribute("type"); + if (type == null) { + return TYPE_NORMAL; + } else if (type.equals("normal")) { + return TYPE_NORMAL; + } else if (type.equals("chat")) { + return TYPE_CHAT; + } else if (type.equals("groupchat")) { + return TYPE_GROUPCHAT; + } else if (type.equals("error")) { + return TYPE_ERROR; + } else if (type.equals("headline")) { + return TYPE_HEADLINE; + } else { + return TYPE_NORMAL; + } + } + + public Pair<MessagePacket,Long> getForwardedMessagePacket(String name, String namespace) { + Element wrapper = findChild(name, namespace); + if (wrapper == null) { + return null; + } + Element forwarded = wrapper.findChild("forwarded", "urn:xmpp:forward:0"); + if (forwarded == null) { + return null; + } + MessagePacket packet = create(forwarded.findChild("message")); + if (packet == null) { + return null; + } + Long timestamp = AbstractParser.parseTimestamp(forwarded, null); + return new Pair(packet,timestamp); + } + + public static MessagePacket create(Element element) { + if (element == null) { + return null; + } + MessagePacket packet = new MessagePacket(); + packet.setAttributes(element.getAttributes()); + packet.setChildren(element.getChildren()); + return packet; + } +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/PresencePacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/PresencePacket.java new file mode 100644 index 000000000..6c816cac3 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/PresencePacket.java @@ -0,0 +1,8 @@ +package de.pixart.messenger.xmpp.stanzas; + +public class PresencePacket extends AbstractAcknowledgeableStanza { + + public PresencePacket() { + super("presence"); + } +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/csi/ActivePacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/csi/ActivePacket.java new file mode 100644 index 000000000..10abb3499 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/csi/ActivePacket.java @@ -0,0 +1,10 @@ +package de.pixart.messenger.xmpp.stanzas.csi; + +import de.pixart.messenger.xmpp.stanzas.AbstractStanza; + +public class ActivePacket extends AbstractStanza { + public ActivePacket() { + super("active"); + setAttribute("xmlns", "urn:xmpp:csi:0"); + } +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/csi/InactivePacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/csi/InactivePacket.java new file mode 100644 index 000000000..ebaad8205 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/csi/InactivePacket.java @@ -0,0 +1,10 @@ +package de.pixart.messenger.xmpp.stanzas.csi; + +import de.pixart.messenger.xmpp.stanzas.AbstractStanza; + +public class InactivePacket extends AbstractStanza { + public InactivePacket() { + super("inactive"); + setAttribute("xmlns", "urn:xmpp:csi:0"); + } +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/AckPacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/AckPacket.java new file mode 100644 index 000000000..5c8131878 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/AckPacket.java @@ -0,0 +1,13 @@ +package de.pixart.messenger.xmpp.stanzas.streammgmt; + +import de.pixart.messenger.xmpp.stanzas.AbstractStanza; + +public class AckPacket extends AbstractStanza { + + public AckPacket(int sequence, int smVersion) { + super("a"); + this.setAttribute("xmlns", "urn:xmpp:sm:" + smVersion); + this.setAttribute("h", Integer.toString(sequence)); + } + +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/EnablePacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/EnablePacket.java new file mode 100644 index 000000000..2beca0f20 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/EnablePacket.java @@ -0,0 +1,13 @@ +package de.pixart.messenger.xmpp.stanzas.streammgmt; + +import de.pixart.messenger.xmpp.stanzas.AbstractStanza; + +public class EnablePacket extends AbstractStanza { + + public EnablePacket(int smVersion) { + super("enable"); + this.setAttribute("xmlns", "urn:xmpp:sm:" + smVersion); + this.setAttribute("resume", "true"); + } + +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/RequestPacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/RequestPacket.java new file mode 100644 index 000000000..19880f3c6 --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/RequestPacket.java @@ -0,0 +1,12 @@ +package de.pixart.messenger.xmpp.stanzas.streammgmt; + +import de.pixart.messenger.xmpp.stanzas.AbstractStanza; + +public class RequestPacket extends AbstractStanza { + + public RequestPacket(int smVersion) { + super("r"); + this.setAttribute("xmlns", "urn:xmpp:sm:" + smVersion); + } + +} diff --git a/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/ResumePacket.java b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/ResumePacket.java new file mode 100644 index 000000000..1c7f8d08c --- /dev/null +++ b/src/main/java/de/pixart/messenger/xmpp/stanzas/streammgmt/ResumePacket.java @@ -0,0 +1,14 @@ +package de.pixart.messenger.xmpp.stanzas.streammgmt; + +import de.pixart.messenger.xmpp.stanzas.AbstractStanza; + +public class ResumePacket extends AbstractStanza { + + public ResumePacket(String id, int sequence, int smVersion) { + super("resume"); + this.setAttribute("xmlns", "urn:xmpp:sm:" + smVersion); + this.setAttribute("previd", id); + this.setAttribute("h", Integer.toString(sequence)); + } + +} |