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}