1package eu.siacs.conversations.xmpp.jingle.stanzas;
2
3import eu.siacs.conversations.xml.Element;
4import eu.siacs.conversations.xmpp.jingle.JingleFile;
5
6public class Content extends Element {
7
8 private String transportId;
9
10 private Content(String name) {
11 super(name);
12 }
13
14 public Content() {
15 super("content");
16 }
17
18 public void setTransportId(String sid) {
19 this.transportId = sid;
20 }
21
22 public void setFileOffer(JingleFile actualFile) {
23 Element description = this.addChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
24 Element offer = description.addChild("offer");
25 Element file = offer.addChild("file");
26 file.addChild("size").setContent(""+actualFile.getSize());
27 file.addChild("name").setContent(actualFile.getName());
28 }
29
30 public Element getFileOffer() {
31 Element description = this.findChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
32 if (description==null) {
33 return null;
34 }
35 Element offer = description.findChild("offer");
36 if (offer==null) {
37 return null;
38 }
39 return offer.findChild("file");
40 }
41
42 public void setFileOffer(Element fileOffer) {
43 Element description = this.findChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
44 if (description==null) {
45 description = this.addChild("description", "urn:xmpp:jingle:apps:file-transfer:3");
46 }
47 description.addChild(fileOffer);
48 }
49
50 public String getTransportId() {
51 if (hasSocks5Transport()) {
52 this.transportId = socks5transport().getAttribute("sid");
53 } else if (hasIbbTransport()) {
54 this.transportId = ibbTransport().getAttribute("sid");
55 }
56 return this.transportId;
57 }
58
59 public void setUsedCandidate(String cid) {
60 socks5transport().clearChildren();
61 Element usedCandidate = socks5transport().addChild("candidate-used");
62 usedCandidate.setAttribute("cid",cid);
63 }
64
65 public void setCandidateError() {
66 socks5transport().clearChildren();
67 socks5transport().addChild("candidate-error");
68 }
69
70 public Element socks5transport() {
71 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:s5b:1");
72 if (transport==null) {
73 transport = this.addChild("transport", "urn:xmpp:jingle:transports:s5b:1");
74 transport.setAttribute("sid", this.transportId);
75 }
76 return transport;
77 }
78
79 public Element ibbTransport() {
80 Element transport = this.findChild("transport", "urn:xmpp:jingle:transports:ibb:1");
81 if (transport==null) {
82 transport = this.addChild("transport", "urn:xmpp:jingle:transports:ibb:1");
83 transport.setAttribute("sid", this.transportId);
84 }
85 return transport;
86 }
87
88 public boolean hasSocks5Transport() {
89 return this.hasChild("transport", "urn:xmpp:jingle:transports:s5b:1");
90 }
91
92 public boolean hasIbbTransport() {
93 return this.hasChild("transport","urn:xmpp:jingle:transports:ibb:1");
94 }
95}