aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
diff options
context:
space:
mode:
authorlookshe <github@lookshe.org>2015-08-11 17:35:53 +0200
committerlookshe <github@lookshe.org>2015-08-11 17:35:53 +0200
commit8fd688ca96005152be754eeba1be72c7c0aab9ad (patch)
treec4d2e3dfe7250a6794aaa3fa9816ad3da70a813e /src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
parent553f41a2dbc068a8a43f613e088713cd3ec7680e (diff)
Merge tag '1.5.2' into trz/rebasetrz/1.5.2.1
Diffstat (limited to 'src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java')
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java39
1 files changed, 33 insertions, 6 deletions
diff --git a/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java b/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
index 93aaa68c..e32811af 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java
@@ -1,5 +1,10 @@
package eu.siacs.conversations.xmpp.stanzas;
+import android.util.Pair;
+
+import java.text.ParseException;
+
+import eu.siacs.conversations.parser.AbstractParser;
import eu.siacs.conversations.xml.Element;
public class MessagePacket extends AbstractStanza {
@@ -14,12 +19,7 @@ public class MessagePacket extends AbstractStanza {
}
public String getBody() {
- Element body = this.findChild("body");
- if (body != null) {
- return body.getContent();
- } else {
- return null;
- }
+ return findChildContent("body");
}
public void setBody(String text) {
@@ -66,4 +66,31 @@ public class MessagePacket extends AbstractStanza {
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.getTimestamp(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;
+ }
}