Search in sources :

Example 31 with Element

use of de.pixart.messenger.xml.Element in project Pix-Art-Messenger by kriztan.

the class MessageGenerator method directInvite.

public MessagePacket directInvite(final Conversation conversation, final Jid contact) {
    MessagePacket packet = new MessagePacket();
    packet.setType(MessagePacket.TYPE_NORMAL);
    packet.setTo(contact);
    packet.setFrom(conversation.getAccount().getJid());
    Element x = packet.addChild("x", "jabber:x:conference");
    x.setAttribute("jid", conversation.getJid().toBareJid().toString());
    String password = conversation.getMucOptions().getPassword();
    if (password != null) {
        x.setAttribute("password", password);
    }
    return packet;
}
Also used : MessagePacket(de.pixart.messenger.xmpp.stanzas.MessagePacket) Element(de.pixart.messenger.xml.Element)

Example 32 with Element

use of de.pixart.messenger.xml.Element in project Pix-Art-Messenger by kriztan.

the class MessageGenerator method invite.

public MessagePacket invite(Conversation conversation, Jid contact) {
    MessagePacket packet = new MessagePacket();
    packet.setTo(conversation.getJid().toBareJid());
    packet.setFrom(conversation.getAccount().getJid());
    Element x = new Element("x");
    x.setAttribute("xmlns", "http://jabber.org/protocol/muc#user");
    Element invite = new Element("invite");
    invite.setAttribute("to", contact.toBareJid().toString());
    x.addChild(invite);
    packet.addChild(x);
    return packet;
}
Also used : MessagePacket(de.pixart.messenger.xmpp.stanzas.MessagePacket) Element(de.pixart.messenger.xml.Element)

Example 33 with Element

use of de.pixart.messenger.xml.Element in project Pix-Art-Messenger by kriztan.

the class MessageGenerator method generateOtrError.

public MessagePacket generateOtrError(Jid to, String id, String errorText) {
    MessagePacket packet = new MessagePacket();
    packet.setType(MessagePacket.TYPE_ERROR);
    packet.setAttribute("id", id);
    packet.setTo(to);
    Element error = packet.addChild("error");
    error.setAttribute("code", "406");
    error.setAttribute("type", "modify");
    error.addChild("not-acceptable", "urn:ietf:params:xml:ns:xmpp-stanzas");
    error.addChild("text").setContent("?OTR Error:" + errorText);
    return packet;
}
Also used : MessagePacket(de.pixart.messenger.xmpp.stanzas.MessagePacket) Element(de.pixart.messenger.xml.Element)

Example 34 with Element

use of de.pixart.messenger.xml.Element in project Pix-Art-Messenger by kriztan.

the class PresenceGenerator method selfPresence.

public PresencePacket selfPresence(Account account, Presence.Status status, boolean includePgpAnnouncement) {
    PresencePacket packet = new PresencePacket();
    if (status.toShowString() != null) {
        packet.addChild("show").setContent(status.toShowString());
    }
    packet.setFrom(account.getJid());
    String sig = account.getPgpSignature();
    if (includePgpAnnouncement && sig != null && mXmppConnectionService.getPgpEngine() != null) {
        packet.addChild("x", "jabber:x:signed").setContent(sig);
    }
    String capHash = getCapHash();
    if (capHash != null) {
        Element cap = packet.addChild("c", "http://jabber.org/protocol/caps");
        cap.setAttribute("hash", "sha-1");
        cap.setAttribute("node", "http://jabber.pix-art.de");
        cap.setAttribute("ver", capHash);
    }
    return packet;
}
Also used : Element(de.pixart.messenger.xml.Element) PresencePacket(de.pixart.messenger.xmpp.stanzas.PresencePacket)

Example 35 with Element

use of de.pixart.messenger.xml.Element 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

Element (de.pixart.messenger.xml.Element)100 IqPacket (de.pixart.messenger.xmpp.stanzas.IqPacket)48 Account (de.pixart.messenger.entities.Account)23 Jid (de.pixart.messenger.xmpp.jid.Jid)19 OnIqPacketReceived (de.pixart.messenger.xmpp.OnIqPacketReceived)17 Contact (de.pixart.messenger.entities.Contact)9 MessagePacket (de.pixart.messenger.xmpp.stanzas.MessagePacket)8 ArrayList (java.util.ArrayList)7 Conversation (de.pixart.messenger.entities.Conversation)6 IOException (java.io.IOException)6 Data (de.pixart.messenger.xmpp.forms.Data)5 Avatar (de.pixart.messenger.xmpp.pep.Avatar)5 HashSet (java.util.HashSet)5 AxolotlService (de.pixart.messenger.crypto.axolotl.AxolotlService)4 MucOptions (de.pixart.messenger.entities.MucOptions)4 ECPublicKey (org.whispersystems.libsignal.ecc.ECPublicKey)4 PreKeyBundle (org.whispersystems.libsignal.state.PreKeyBundle)4 Pair (android.util.Pair)3 Bookmark (de.pixart.messenger.entities.Bookmark)3 Message (de.pixart.messenger.entities.Message)3