use of eu.siacs.conversations.xmpp.forms.Field in project Conversations by siacs.
the class XmppConnection method sendRegistryRequest.
private void sendRegistryRequest() {
final IqPacket register = new IqPacket(IqPacket.TYPE.GET);
register.query("jabber:iq:register");
register.setTo(account.getServer());
sendUnmodifiedIqPacket(register, new OnIqPacketReceived() {
@Override
public void onIqPacketReceived(final Account account, final IqPacket packet) {
boolean failed = false;
if (packet.getType() == IqPacket.TYPE.RESULT && packet.query().hasChild("username") && (packet.query().hasChild("password"))) {
final IqPacket register = new IqPacket(IqPacket.TYPE.SET);
final Element username = new Element("username").setContent(account.getUsername());
final Element password = new Element("password").setContent(account.getPassword());
register.query("jabber:iq:register").addChild(username);
register.query().addChild(password);
register.setFrom(account.getJid().toBareJid());
sendUnmodifiedIqPacket(register, registrationResponseListener);
} else if (packet.getType() == IqPacket.TYPE.RESULT && (packet.query().hasChild("x", "jabber:x:data"))) {
final Data data = Data.parse(packet.query().findChild("x", "jabber:x:data"));
final Element blob = packet.query().findChild("data", "urn:xmpp:bob");
final String id = packet.getId();
Bitmap captcha = null;
if (blob != null) {
try {
final String base64Blob = blob.getContent();
final byte[] strBlob = Base64.decode(base64Blob, Base64.DEFAULT);
InputStream stream = new ByteArrayInputStream(strBlob);
captcha = BitmapFactory.decodeStream(stream);
} catch (Exception e) {
//ignored
}
} else {
try {
Field url = data.getFieldByName("url");
String urlString = url.findChildContent("value");
URL uri = new URL(urlString);
captcha = BitmapFactory.decodeStream(uri.openConnection().getInputStream());
} catch (IOException e) {
Log.e(Config.LOGTAG, e.toString());
}
}
if (captcha != null) {
failed = !mXmppConnectionService.displayCaptchaRequest(account, id, data, captcha);
}
} else {
failed = true;
}
if (failed) {
final Element instructions = packet.query().findChild("instructions");
setAccountCreationFailed((instructions != null) ? instructions.getContent() : "");
}
}
});
}
use of eu.siacs.conversations.xmpp.forms.Field in project Conversations by siacs.
the class ServiceDiscoveryResult method mkCapHash.
protected byte[] mkCapHash() {
StringBuilder s = new StringBuilder();
List<Identity> identities = this.getIdentities();
Collections.sort(identities);
for (Identity id : identities) {
s.append(blankNull(id.getCategory()) + "/" + blankNull(id.getType()) + "/" + blankNull(id.getLang()) + "/" + blankNull(id.getName()) + "<");
}
List<String> features = this.getFeatures();
Collections.sort(features);
for (String feature : features) {
s.append(feature + "<");
}
Collections.sort(forms, new Comparator<Data>() {
@Override
public int compare(Data lhs, Data rhs) {
return lhs.getFormType().compareTo(rhs.getFormType());
}
});
for (Data form : forms) {
s.append(form.getFormType() + "<");
List<Field> fields = form.getFields();
Collections.sort(fields, new Comparator<Field>() {
@Override
public int compare(Field lhs, Field rhs) {
return lhs.getFieldName().compareTo(rhs.getFieldName());
}
});
for (Field field : fields) {
s.append(field.getFieldName() + "<");
List<String> values = field.getValues();
Collections.sort(values);
for (String value : values) {
s.append(value + "<");
}
}
}
MessageDigest md;
try {
md = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
return null;
}
try {
return md.digest(s.toString().getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
return null;
}
}
use of eu.siacs.conversations.xmpp.forms.Field in project Conversations by siacs.
the class ServiceDiscoveryResult method createJSONFromForm.
private static JSONObject createJSONFromForm(Data data) {
JSONObject object = new JSONObject();
for (Field field : data.getFields()) {
try {
JSONArray jsonValues = new JSONArray();
for (String value : field.getValues()) {
jsonValues.put(value);
}
object.put(field.getFieldName(), jsonValues);
} catch (Exception e) {
e.printStackTrace();
}
}
try {
JSONArray jsonValues = new JSONArray();
jsonValues.put(data.getFormType());
object.put(Data.FORM_TYPE, jsonValues);
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
Aggregations