From 867afe4c5b888ce3f4f9a867906cc8edb86e7aba Mon Sep 17 00:00:00 2001 From: steckbrief Date: Sun, 6 Aug 2017 01:15:13 +0200 Subject: avatar handling refactored --- .../xmpp/avatar/AvatarPacketParser.java | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarPacketParser.java') diff --git a/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarPacketParser.java b/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarPacketParser.java index 0867524b..78ab9288 100644 --- a/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarPacketParser.java +++ b/src/main/java/de/thedevstack/conversationsplus/xmpp/avatar/AvatarPacketParser.java @@ -1,5 +1,6 @@ package de.thedevstack.conversationsplus.xmpp.avatar; +import de.thedevstack.conversationsplus.xmpp.pep.Avatar; import de.thedevstack.conversationsplus.xmpp.pubsub.PubSubPacketParser; import de.thedevstack.conversationsplus.xml.Element; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; @@ -26,4 +27,56 @@ public class AvatarPacketParser { } return base64Avatar; } + + public static Avatar parseMetadata(Element items) { + if (null != items) { + Element item = items.findChild("item"); + if (item == null) { + return null; + } + Element metadata = item.findChild("metadata"); + if (metadata == null) { + return null; + } + String primaryId = item.getAttribute("id"); + if (primaryId == null) { + return null; + } + for (Element child : metadata.getChildren()) { + if (child.getName().equals("info") + && primaryId.equals(child.getAttribute("id"))) { + Avatar avatar = new Avatar(); + String height = child.getAttribute("height"); + String width = child.getAttribute("width"); + String size = child.getAttribute("bytes"); + try { + if (height != null) { + avatar.height = Integer.parseInt(height); + } + if (width != null) { + avatar.width = Integer.parseInt(width); + } + if (size != null) { + avatar.size = Long.parseLong(size); + } + } catch (NumberFormatException e) { + return null; + } + avatar.type = child.getAttribute("type"); + String hash = child.getAttribute("id"); + if (!Avatar.isValidSHA1(hash)) { + return null; + } + avatar.sha1sum = hash; + avatar.origin = Avatar.Origin.PEP; + return avatar; + } + } + } + return null; + } + + public static Avatar parseMetadata(IqPacket packet) { + return parseMetadata(PubSubPacketParser.findItems(packet)); + } } -- cgit v1.2.3