LegacyCapabilities.java

 1package im.conversations.android.xmpp.model.capabilties;
 2
 3import com.google.common.base.Strings;
 4import com.google.common.io.BaseEncoding;
 5
 6import eu.siacs.conversations.xml.Namespace;
 7import im.conversations.android.annotation.XmlElement;
 8import im.conversations.android.xmpp.EntityCapabilities;
 9import im.conversations.android.xmpp.model.Extension;
10
11@XmlElement(name = "c", namespace = Namespace.ENTITY_CAPABILITIES)
12public class LegacyCapabilities extends Extension {
13
14    private static final String HASH_ALGORITHM = "sha-1";
15
16    public LegacyCapabilities() {
17        super(LegacyCapabilities.class);
18    }
19
20    public String getNode() {
21        return this.getAttribute("node");
22    }
23
24    public EntityCapabilities.EntityCapsHash getHash() {
25        final String hash = getAttribute("hash");
26        final String ver = getAttribute("ver");
27        if (Strings.isNullOrEmpty(ver) || Strings.isNullOrEmpty(hash)) {
28            return null;
29        }
30        if (HASH_ALGORITHM.equals(hash) && BaseEncoding.base64().canDecode(ver)) {
31            return EntityCapabilities.EntityCapsHash.of(ver);
32        } else {
33            return null;
34        }
35    }
36
37    public void setNode(final String node) {
38        this.setAttribute("node", node);
39    }
40
41    public void setHash(final EntityCapabilities.EntityCapsHash hash) {
42        this.setAttribute("hash", HASH_ALGORITHM);
43        this.setAttribute("ver", hash.encoded());
44    }
45}