aboutsummaryrefslogtreecommitdiffstats
path: root/src/eu/siacs/conversations/xmpp
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-08-05 22:58:46 +0200
committeriNPUTmice <daniel@gultsch.de>2014-08-05 22:58:46 +0200
commitba63727f50c192e63e171bedca92d7003981800c (patch)
tree6b4956817a46266ec3de683bc6d7a4e46681a656 /src/eu/siacs/conversations/xmpp
parent08755e56a5bf861c97eefd545f629ac67a804275 (diff)
fetch missing avatars from server
Diffstat (limited to 'src/eu/siacs/conversations/xmpp')
-rw-r--r--src/eu/siacs/conversations/xmpp/pep/Avatar.java41
1 files changed, 41 insertions, 0 deletions
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;
+ }
}