aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarVcardParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarVcardParser.java')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarVcardParser.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarVcardParser.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarVcardParser.java
new file mode 100644
index 00000000..32ad6f26
--- /dev/null
+++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarVcardParser.java
@@ -0,0 +1,29 @@
+package de.thedevstack.conversationsplus.xmpp.avatar;
+
+import de.thedevstack.conversationsplus.xml.Element;
+import de.thedevstack.conversationsplus.xmpp.pep.Avatar;
+import de.thedevstack.conversationsplus.xmpp.stanzas.PresencePacket;
+
+/**
+ */
+public final class AvatarVcardParser {
+ private AvatarVcardParser() {}
+
+ public static Avatar parseVcardPresenceInformation(PresencePacket packet) {
+ return AvatarVcardParser.parsePresence(packet.findChild("x", "vcard-temp:x:update"));
+ }
+
+ public static Avatar parsePresence(Element x) {
+ String hash = (x == null) ? null : x.findChildContent("photo");
+ if (hash == null) {
+ return null;
+ }
+ if (!Avatar.isValidSHA1(hash)) {
+ return null;
+ }
+ Avatar avatar = new Avatar();
+ avatar.sha1sum = hash;
+ avatar.origin = Avatar.Origin.VCARD;
+ return avatar;
+ }
+}