Avatar.java

 1package eu.siacs.conversations.xmpp.pep;
 2
 3import android.util.Base64;
 4
 5import java.security.NoSuchAlgorithmException;
 6
 7import io.ipfs.cid.Cid;
 8
 9import eu.siacs.conversations.utils.CryptoHelper;
10import eu.siacs.conversations.xml.Element;
11import androidx.annotation.NonNull;
12import com.google.common.base.MoreObjects;
13import eu.siacs.conversations.xmpp.Jid;
14import okhttp3.HttpUrl;
15
16public class Avatar {
17
18    @Override
19    @NonNull
20    public String toString() {
21        return MoreObjects.toStringHelper(this)
22                .add("type", type)
23                .add("sha1sum", sha1sum)
24                .add("url", url)
25                .add("image", image)
26                .add("height", height)
27                .add("width", width)
28                .add("size", size)
29                .add("owner", owner)
30                .add("origin", origin)
31                .toString();
32    }
33
34    public enum Origin {
35        PEP,
36        VCARD
37    }
38
39    public String type;
40    public String sha1sum;
41    public HttpUrl url;
42    public String image;
43    public int height;
44    public int width;
45    public long size;
46    public Jid owner;
47    public Origin origin = Origin.PEP; // default to maintain compat
48
49    public byte[] getImageAsBytes() {
50        return Base64.decode(image, Base64.DEFAULT);
51    }
52
53    public String getFilename() {
54        return sha1sum;
55    }
56
57    @Override
58    public boolean equals(Object object) {
59        if (object != null && object instanceof Avatar other) {
60            return other.getFilename().equals(this.getFilename());
61        } else {
62            return false;
63        }
64    }
65
66    public Cid cid() {
67        if (sha1sum == null) return null;
68
69        try {
70            return CryptoHelper.cid(CryptoHelper.hexToBytes(sha1sum), "sha-1");
71        } catch (final NoSuchAlgorithmException e) {
72            return null;
73        }
74    }
75}