Search in sources :

Example 1 with Data

use of de.pixart.messenger.xmpp.forms.Data in project Pix-Art-Messenger by kriztan.

the class ServiceDiscoveryResult method toJSON.

public JSONObject toJSON() {
    try {
        JSONObject o = new JSONObject();
        JSONArray ids = new JSONArray();
        for (Identity id : this.getIdentities()) {
            ids.put(id.toJSON());
        }
        o.put("identities", ids);
        o.put("features", new JSONArray(this.getFeatures()));
        JSONArray forms = new JSONArray();
        for (Data data : this.forms) {
            forms.put(createJSONFromForm(data));
        }
        o.put("forms", forms);
        return o;
    } catch (JSONException e) {
        return null;
    }
}
Also used : JSONObject(org.json.JSONObject) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) Data(de.pixart.messenger.xmpp.forms.Data)

Example 2 with Data

use of de.pixart.messenger.xmpp.forms.Data in project Pix-Art-Messenger by kriztan.

the class ServiceDiscoveryResult method createFormFromJSONObject.

private static Data createFormFromJSONObject(JSONObject o) {
    Data data = new Data();
    JSONArray names = o.names();
    for (int i = 0; i < names.length(); ++i) {
        try {
            String name = names.getString(i);
            JSONArray jsonValues = o.getJSONArray(name);
            ArrayList<String> values = new ArrayList<>(jsonValues.length());
            for (int j = 0; j < jsonValues.length(); ++j) {
                values.add(jsonValues.getString(j));
            }
            data.put(name, values);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return data;
}
Also used : JSONArray(org.json.JSONArray) ArrayList(java.util.ArrayList) Data(de.pixart.messenger.xmpp.forms.Data) JSONException(org.json.JSONException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) UnsupportedEncodingException(java.io.UnsupportedEncodingException)

Example 3 with Data

use of de.pixart.messenger.xmpp.forms.Data in project Pix-Art-Messenger by kriztan.

the class IqGenerator method queryMessageArchiveManagement.

public IqPacket queryMessageArchiveManagement(final MessageArchiveService.Query mam) {
    final IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
    final Element query = packet.query(mam.isLegacy() ? Namespace.MAM_LEGACY : Namespace.MAM);
    query.setAttribute("queryid", mam.getQueryId());
    final Data data = new Data();
    data.setFormType(mam.isLegacy() ? Namespace.MAM_LEGACY : Namespace.MAM);
    if (mam.muc()) {
        packet.setTo(mam.getWith());
    } else if (mam.getWith() != null) {
        data.put("with", mam.getWith().toString());
    }
    if (mam.getStart() != 0) {
        data.put("start", getTimestamp(mam.getStart()));
    }
    data.put("end", getTimestamp(mam.getEnd()));
    data.submit();
    query.addChild(data);
    Element set = query.addChild("set", "http://jabber.org/protocol/rsm");
    if (mam.getPagingOrder() == MessageArchiveService.PagingOrder.REVERSE) {
        set.addChild("before").setContent(mam.getReference());
    } else if (mam.getReference() != null) {
        set.addChild("after").setContent(mam.getReference());
    }
    set.addChild("max").setContent(String.valueOf(Config.PAGE_SIZE));
    return packet;
}
Also used : Element(de.pixart.messenger.xml.Element) Data(de.pixart.messenger.xmpp.forms.Data) IqPacket(de.pixart.messenger.xmpp.stanzas.IqPacket)

Example 4 with Data

use of de.pixart.messenger.xmpp.forms.Data in project Pix-Art-Messenger by kriztan.

the class IqGenerator method enablePush.

public IqPacket enablePush(Jid jid, String node, String secret) {
    IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
    Element enable = packet.addChild("enable", "urn:xmpp:push:0");
    enable.setAttribute("jid", jid.toString());
    enable.setAttribute("node", node);
    Data data = new Data();
    data.setFormType("http://jabber.org/protocol/pubsub#publish-options");
    data.put("secret", secret);
    data.submit();
    enable.addChild(data);
    return packet;
}
Also used : Element(de.pixart.messenger.xml.Element) Data(de.pixart.messenger.xmpp.forms.Data) IqPacket(de.pixart.messenger.xmpp.stanzas.IqPacket)

Example 5 with Data

use of de.pixart.messenger.xmpp.forms.Data in project Pix-Art-Messenger by kriztan.

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) {
            if (packet.getType() == IqPacket.TYPE.TIMEOUT) {
                return;
            }
            if (packet.getType() == IqPacket.TYPE.ERROR) {
                throw new StateChangingError(Account.State.REGISTRATION_FAILED);
            }
            final Element query = packet.query("jabber:iq:register");
            if (query.hasChild("username") && (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, true);
            } else if (query.hasChild("x", Namespace.DATA)) {
                final Data data = Data.parse(query.findChild("x", Namespace.DATA));
                final Element blob = query.findChild("data", "urn:xmpp:bob");
                final String id = packet.getId();
                InputStream is;
                if (blob != null) {
                    try {
                        final String base64Blob = blob.getContent();
                        final byte[] strBlob = Base64.decode(base64Blob, Base64.DEFAULT);
                        is = new ByteArrayInputStream(strBlob);
                    } catch (Exception e) {
                        is = null;
                    }
                } else {
                    try {
                        Field field = data.getFieldByName("url");
                        URL url = field != null && field.getValue() != null ? new URL(field.getValue()) : null;
                        is = url != null ? url.openStream() : null;
                    } catch (IOException e) {
                        is = null;
                    }
                }
                if (is != null) {
                    Bitmap captcha = BitmapFactory.decodeStream(is);
                    try {
                        if (mXmppConnectionService.displayCaptchaRequest(account, id, data, captcha)) {
                            return;
                        }
                    } catch (Exception e) {
                        throw new StateChangingError(Account.State.REGISTRATION_FAILED);
                    }
                }
                throw new StateChangingError(Account.State.REGISTRATION_FAILED);
            } else if (query.hasChild("instructions") || query.hasChild("x", Namespace.OOB)) {
                final String instructions = query.findChildContent("instructions");
                final Element oob = query.findChild("x", Namespace.OOB);
                final String url = oob == null ? null : oob.findChildContent("url");
                if (url != null) {
                    setAccountCreationFailed(url);
                } else if (instructions != null) {
                    Matcher matcher = Patterns.AUTOLINK_WEB_URL.matcher(instructions);
                    if (matcher.find()) {
                        setAccountCreationFailed(instructions.substring(matcher.start(), matcher.end()));
                    }
                }
                throw new StateChangingError(Account.State.REGISTRATION_FAILED);
            }
        }
    }, true);
}
Also used : Account(de.pixart.messenger.entities.Account) Matcher(java.util.regex.Matcher) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) Element(de.pixart.messenger.xml.Element) Data(de.pixart.messenger.xmpp.forms.Data) IOException(java.io.IOException) KeyManagementException(java.security.KeyManagementException) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) InvalidJidException(de.pixart.messenger.xmpp.jid.InvalidJidException) ConnectException(java.net.ConnectException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) UnknownHostException(java.net.UnknownHostException) URL(java.net.URL) IqPacket(de.pixart.messenger.xmpp.stanzas.IqPacket) Field(de.pixart.messenger.xmpp.forms.Field) Bitmap(android.graphics.Bitmap) ByteArrayInputStream(java.io.ByteArrayInputStream)

Aggregations

Data (de.pixart.messenger.xmpp.forms.Data)9 IqPacket (de.pixart.messenger.xmpp.stanzas.IqPacket)6 Element (de.pixart.messenger.xml.Element)5 Account (de.pixart.messenger.entities.Account)3 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)3 OnIqPacketReceived (de.pixart.messenger.xmpp.OnIqPacketReceived)2 Field (de.pixart.messenger.xmpp.forms.Field)2 InvalidJidException (de.pixart.messenger.xmpp.jid.InvalidJidException)2 UnsupportedEncodingException (java.io.UnsupportedEncodingException)2 JSONArray (org.json.JSONArray)2 JSONException (org.json.JSONException)2 Bitmap (android.graphics.Bitmap)1 Jid (de.pixart.messenger.xmpp.jid.Jid)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 ConnectException (java.net.ConnectException)1 MalformedURLException (java.net.MalformedURLException)1 URL (java.net.URL)1 UnknownHostException (java.net.UnknownHostException)1