From ba63727f50c192e63e171bedca92d7003981800c Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Tue, 5 Aug 2014 22:58:46 +0200 Subject: fetch missing avatars from server --- src/eu/siacs/conversations/xmpp/pep/Avatar.java | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/eu/siacs/conversations/xmpp') diff --git a/src/eu/siacs/conversations/xmpp/pep/Avatar.java b/src/eu/siacs/conversations/xmpp/pep/Avatar.java index b000c0557..b99a2fe36 100644 --- a/src/eu/siacs/conversations/xmpp/pep/Avatar.java +++ b/src/eu/siacs/conversations/xmpp/pep/Avatar.java @@ -1,5 +1,6 @@ package eu.siacs.conversations.xmpp.pep; +import eu.siacs.conversations.xml.Element; import android.util.Base64; public class Avatar { @@ -9,6 +10,7 @@ public class Avatar { public int height; public int width; public long size; + public String owner; public byte[] getImageAsBytes() { return Base64.decode(image, Base64.DEFAULT); } @@ -23,4 +25,43 @@ public class Avatar { return sha1sum; } } + public static Avatar parseMetadata(Element 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"); + avatar.sha1sum = child.getAttribute("id"); + return avatar; + } + } + return null; + } } -- cgit v1.2.3