aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/generator
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/generator')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/generator/AbstractGenerator.java74
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/generator/IqGenerator.java289
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/generator/MessageGenerator.java216
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/generator/PresenceGenerator.java62
4 files changed, 0 insertions, 641 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/generator/AbstractGenerator.java b/src/main/java/de/thedevstack/conversationsplus/generator/AbstractGenerator.java
deleted file mode 100644
index 2d825f2c..00000000
--- a/src/main/java/de/thedevstack/conversationsplus/generator/AbstractGenerator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package de.thedevstack.conversationsplus.generator;
-
-import android.util.Base64;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.TimeZone;
-
-import de.thedevstack.conversationsplus.ConversationsPlusApplication;
-import de.tzur.conversations.Settings;
-import de.thedevstack.conversationsplus.crypto.axolotl.AxolotlService;
-
-public abstract class AbstractGenerator {
- private final String[] FEATURES = {
- "urn:xmpp:jingle:1",
- "urn:xmpp:jingle:apps:file-transfer:3",
- "urn:xmpp:jingle:transports:s5b:1",
- "urn:xmpp:jingle:transports:ibb:1",
- "http://jabber.org/protocol/muc",
- "jabber:x:conference",
- "http://jabber.org/protocol/caps",
- "http://jabber.org/protocol/disco#info",
- "urn:xmpp:avatar:metadata+notify",
- "http://jabber.org/protocol/nick+notify",
- "urn:xmpp:ping",
- "jabber:iq:version",
- "http://jabber.org/protocol/chatstates",
- AxolotlService.PEP_DEVICE_LIST+"+notify"};
- private final String[] MESSAGE_CONFIRMATION_FEATURES = {
- "urn:xmpp:chat-markers:0",
- "urn:xmpp:receipts"
- };
- protected final String IDENTITY_TYPE = "phone";
-
- private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
-
- public String getCapHash() {
- StringBuilder s = new StringBuilder();
- s.append("client/" + IDENTITY_TYPE + "//" + ConversationsPlusApplication.getNameAndVersion() + "<");
- MessageDigest md;
- try {
- md = MessageDigest.getInstance("SHA-1");
- } catch (NoSuchAlgorithmException e) {
- return null;
- }
-
- for (String feature : getFeatures()) {
- s.append(feature + "<");
- }
- byte[] sha1 = md.digest(s.toString().getBytes());
- return new String(Base64.encode(sha1, Base64.DEFAULT));
- }
-
- public static String getTimestamp(long time) {
- DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
- return DATE_FORMAT.format(time);
- }
-
- public List<String> getFeatures() {
- ArrayList<String> features = new ArrayList<>();
- features.addAll(Arrays.asList(FEATURES));
- if (Settings.CONFIRM_MESSAGE_RECEIVED) {
- features.addAll(Arrays.asList(MESSAGE_CONFIRMATION_FEATURES));
- }
- Collections.sort(features);
- return features;
- }
-}
diff --git a/src/main/java/de/thedevstack/conversationsplus/generator/IqGenerator.java b/src/main/java/de/thedevstack/conversationsplus/generator/IqGenerator.java
deleted file mode 100644
index 2d4c8f6a..00000000
--- a/src/main/java/de/thedevstack/conversationsplus/generator/IqGenerator.java
+++ /dev/null
@@ -1,289 +0,0 @@
-package de.thedevstack.conversationsplus.generator;
-
-
-import android.util.Base64;
-import android.util.Log;
-
-import org.whispersystems.libaxolotl.IdentityKey;
-import org.whispersystems.libaxolotl.ecc.ECPublicKey;
-import org.whispersystems.libaxolotl.state.PreKeyRecord;
-import org.whispersystems.libaxolotl.state.SignedPreKeyRecord;
-
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import de.thedevstack.conversationsplus.ConversationsPlusApplication;
-import de.thedevstack.conversationsplus.Config;
-import de.thedevstack.conversationsplus.crypto.axolotl.AxolotlService;
-import de.thedevstack.conversationsplus.entities.Account;
-import de.thedevstack.conversationsplus.entities.Conversation;
-import de.thedevstack.conversationsplus.services.MessageArchiveService;
-import de.thedevstack.conversationsplus.utils.Xmlns;
-import de.thedevstack.conversationsplus.xml.Element;
-import de.thedevstack.conversationsplus.xmpp.forms.Data;
-import de.thedevstack.conversationsplus.xmpp.jid.Jid;
-import de.thedevstack.conversationsplus.xmpp.pep.Avatar;
-import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket;
-
-public class IqGenerator extends AbstractGenerator {
-
- public IqPacket discoResponse(final IqPacket request) {
- final IqPacket packet = new IqPacket(IqPacket.TYPE.RESULT);
- packet.setId(request.getId());
- packet.setTo(request.getFrom());
- final Element query = packet.addChild("query",
- "http://jabber.org/protocol/disco#info");
- query.setAttribute("node", request.query().getAttribute("node"));
- final Element identity = query.addChild("identity");
- identity.setAttribute("category", "client");
- identity.setAttribute("type", IDENTITY_TYPE);
- identity.setAttribute("name", ConversationsPlusApplication.getNameAndVersion());
- for (final String feature : getFeatures()) {
- query.addChild("feature").setAttribute("var", feature);
- }
- return packet;
- }
-
- public IqPacket versionResponse(final IqPacket request) {
- final IqPacket packet = request.generateResponse(IqPacket.TYPE.RESULT);
- Element query = packet.query("jabber:iq:version");
- query.addChild("name").setContent(ConversationsPlusApplication.getName());
- query.addChild("version").setContent(ConversationsPlusApplication.getVersion());
- return packet;
- }
-
- protected IqPacket publish(final String node, final Element item) {
- final IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
- final Element pubsub = packet.addChild("pubsub",
- "http://jabber.org/protocol/pubsub");
- final Element publish = pubsub.addChild("publish");
- publish.setAttribute("node", node);
- publish.addChild(item);
- return packet;
- }
-
- protected IqPacket retrieve(String node, Element item) {
- final IqPacket packet = new IqPacket(IqPacket.TYPE.GET);
- final Element pubsub = packet.addChild("pubsub",
- "http://jabber.org/protocol/pubsub");
- final Element items = pubsub.addChild("items");
- items.setAttribute("node", node);
- if (item != null) {
- items.addChild(item);
- }
- return packet;
- }
-
- public IqPacket publishNick(String nick) {
- final Element item = new Element("item");
- item.addChild("nick","http://jabber.org/protocol/nick").setContent(nick);
- return publish("http://jabber.org/protocol/nick", item);
- }
-
- public static IqPacket retrieveVcardAvatar(final Avatar avatar) {
- final IqPacket packet = new IqPacket(IqPacket.TYPE.GET);
- packet.setTo(avatar.owner);
- packet.addChild("vCard", "vcard-temp");
- return packet;
- }
-
- public IqPacket retrieveDeviceIds(final Jid to) {
- final IqPacket packet = retrieve(AxolotlService.PEP_DEVICE_LIST, null);
- if(to != null) {
- packet.setTo(to);
- }
- return packet;
- }
-
- public IqPacket retrieveBundlesForDevice(final Jid to, final int deviceid) {
- final IqPacket packet = retrieve(AxolotlService.PEP_BUNDLES+":"+deviceid, null);
- packet.setTo(to);
- return packet;
- }
-
- public IqPacket retrieveVerificationForDevice(final Jid to, final int deviceid) {
- final IqPacket packet = retrieve(AxolotlService.PEP_VERIFICATION+":"+deviceid, null);
- packet.setTo(to);
- return packet;
- }
-
- public IqPacket publishDeviceIds(final Set<Integer> ids) {
- final Element item = new Element("item");
- final Element list = item.addChild("list", AxolotlService.PEP_PREFIX);
- for(Integer id:ids) {
- final Element device = new Element("device");
- device.setAttribute("id", id);
- list.addChild(device);
- }
- return publish(AxolotlService.PEP_DEVICE_LIST, item);
- }
-
- public IqPacket publishBundles(final SignedPreKeyRecord signedPreKeyRecord, final IdentityKey identityKey,
- final Set<PreKeyRecord> preKeyRecords, final int deviceId) {
- final Element item = new Element("item");
- final Element bundle = item.addChild("bundle", AxolotlService.PEP_PREFIX);
- final Element signedPreKeyPublic = bundle.addChild("signedPreKeyPublic");
- signedPreKeyPublic.setAttribute("signedPreKeyId", signedPreKeyRecord.getId());
- ECPublicKey publicKey = signedPreKeyRecord.getKeyPair().getPublicKey();
- signedPreKeyPublic.setContent(Base64.encodeToString(publicKey.serialize(),Base64.DEFAULT));
- final Element signedPreKeySignature = bundle.addChild("signedPreKeySignature");
- signedPreKeySignature.setContent(Base64.encodeToString(signedPreKeyRecord.getSignature(),Base64.DEFAULT));
- final Element identityKeyElement = bundle.addChild("identityKey");
- identityKeyElement.setContent(Base64.encodeToString(identityKey.serialize(), Base64.DEFAULT));
-
- final Element prekeys = bundle.addChild("prekeys", AxolotlService.PEP_PREFIX);
- for(PreKeyRecord preKeyRecord:preKeyRecords) {
- final Element prekey = prekeys.addChild("preKeyPublic");
- prekey.setAttribute("preKeyId", preKeyRecord.getId());
- prekey.setContent(Base64.encodeToString(preKeyRecord.getKeyPair().getPublicKey().serialize(), Base64.DEFAULT));
- }
-
- return publish(AxolotlService.PEP_BUNDLES+":"+deviceId, item);
- }
-
- public IqPacket publishVerification(byte[] signature, X509Certificate[] certificates, final int deviceId) {
- final Element item = new Element("item");
- final Element verification = item.addChild("verification", AxolotlService.PEP_PREFIX);
- final Element chain = verification.addChild("chain");
- for(int i = 0; i < certificates.length; ++i) {
- try {
- Element certificate = chain.addChild("certificate");
- certificate.setContent(Base64.encodeToString(certificates[i].getEncoded(), Base64.DEFAULT));
- certificate.setAttribute("index",i);
- } catch (CertificateEncodingException e) {
- Log.d(Config.LOGTAG, "could not encode certificate");
- }
- }
- verification.addChild("signature").setContent(Base64.encodeToString(signature, Base64.DEFAULT));
- return publish(AxolotlService.PEP_VERIFICATION+":"+deviceId, item);
- }
-
- public IqPacket queryMessageArchiveManagement(final MessageArchiveService.Query mam) {
- final IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
- final Element query = packet.query("urn:xmpp:mam:0");
- query.setAttribute("queryid", mam.getQueryId());
- final Data data = new Data();
- data.setFormType("urn:xmpp:mam:0");
- if (mam.muc()) {
- packet.setTo(mam.getWith());
- } else if (mam.getWith()!=null) {
- data.put("with", mam.getWith().toString());
- }
- data.put("start", getTimestamp(mam.getStart()));
- data.put("end", getTimestamp(mam.getEnd()));
- data.submit();
- query.addChild(data);
- if (mam.getPagingOrder() == MessageArchiveService.PagingOrder.REVERSE) {
- query.addChild("set", "http://jabber.org/protocol/rsm").addChild("before").setContent(mam.getReference());
- } else if (mam.getReference() != null) {
- query.addChild("set", "http://jabber.org/protocol/rsm").addChild("after").setContent(mam.getReference());
- }
- return packet;
- }
- public IqPacket generateGetBlockList() {
- final IqPacket iq = new IqPacket(IqPacket.TYPE.GET);
- iq.addChild("blocklist", Xmlns.BLOCKING);
-
- return iq;
- }
-
- public IqPacket generateSetBlockRequest(final Jid jid) {
- final IqPacket iq = new IqPacket(IqPacket.TYPE.SET);
- final Element block = iq.addChild("block", Xmlns.BLOCKING);
- block.addChild("item").setAttribute("jid", jid.toBareJid().toString());
- return iq;
- }
-
- public IqPacket generateSetUnblockRequest(final Jid jid) {
- final IqPacket iq = new IqPacket(IqPacket.TYPE.SET);
- final Element block = iq.addChild("unblock", Xmlns.BLOCKING);
- block.addChild("item").setAttribute("jid", jid.toBareJid().toString());
- return iq;
- }
-
- public IqPacket generateSetPassword(final Account account, final String newPassword) {
- final IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
- packet.setTo(account.getServer());
- final Element query = packet.addChild("query", Xmlns.REGISTER);
- final Jid jid = account.getJid();
- query.addChild("username").setContent(jid.getLocalpart());
- query.addChild("password").setContent(newPassword);
- return packet;
- }
-
- public IqPacket changeAffiliation(Conversation conference, Jid jid, String affiliation) {
- List<Jid> jids = new ArrayList<>();
- jids.add(jid);
- return changeAffiliation(conference,jids,affiliation);
- }
-
- public IqPacket changeAffiliation(Conversation conference, List<Jid> jids, String affiliation) {
- IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
- packet.setTo(conference.getJid().toBareJid());
- packet.setFrom(conference.getAccount().getJid());
- Element query = packet.query("http://jabber.org/protocol/muc#admin");
- for(Jid jid : jids) {
- Element item = query.addChild("item");
- item.setAttribute("jid", jid.toString());
- item.setAttribute("affiliation", affiliation);
- }
- return packet;
- }
-
- public IqPacket changeRole(Conversation conference, String nick, String role) {
- IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
- packet.setTo(conference.getJid().toBareJid());
- packet.setFrom(conference.getAccount().getJid());
- Element item = packet.query("http://jabber.org/protocol/muc#admin").addChild("item");
- item.setAttribute("nick", nick);
- item.setAttribute("role", role);
- return packet;
- }
-
- public IqPacket generateCreateAccountWithCaptcha(Account account, String id, Data data) {
- final IqPacket register = new IqPacket(IqPacket.TYPE.SET);
-
- register.setTo(account.getServer());
- register.setId(id);
- register.query("jabber:iq:register").addChild(data);
-
- return register;
- }
-
- public IqPacket pushTokenToAppServer(Jid appServer, String token, String deviceId) {
- IqPacket packet = new IqPacket(IqPacket.TYPE.SET);
- packet.setTo(appServer);
- Element command = packet.addChild("command", "http://jabber.org/protocol/commands");
- command.setAttribute("node","register-push-gcm");
- command.setAttribute("action","execute");
- Data data = new Data();
- data.put("token", token);
- data.put("device-id", deviceId);
- data.submit();
- command.addChild(data);
- return packet;
- }
-
- 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;
- }
-
- public IqPacket queryAffiliation(Conversation conversation, String affiliation) {
- IqPacket packet = new IqPacket(IqPacket.TYPE.GET);
- packet.setTo(conversation.getJid().toBareJid());
- packet.query("http://jabber.org/protocol/muc#admin").addChild("item").setAttribute("affiliation",affiliation);
- return packet;
- }
-}
diff --git a/src/main/java/de/thedevstack/conversationsplus/generator/MessageGenerator.java b/src/main/java/de/thedevstack/conversationsplus/generator/MessageGenerator.java
deleted file mode 100644
index 678f2c75..00000000
--- a/src/main/java/de/thedevstack/conversationsplus/generator/MessageGenerator.java
+++ /dev/null
@@ -1,216 +0,0 @@
-package de.thedevstack.conversationsplus.generator;
-
-import net.java.otr4j.OtrException;
-import net.java.otr4j.session.Session;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Locale;
-import java.util.TimeZone;
-
-import de.thedevstack.conversationsplus.ConversationsPlusPreferences;
-import de.thedevstack.conversationsplus.crypto.axolotl.XmppAxolotlMessage;
-import de.thedevstack.conversationsplus.entities.Account;
-import de.thedevstack.conversationsplus.entities.Conversation;
-import de.thedevstack.conversationsplus.entities.FileParams;
-import de.thedevstack.conversationsplus.entities.Message;
-import de.thedevstack.conversationsplus.xml.Element;
-import de.thedevstack.conversationsplus.xmpp.chatstate.ChatState;
-import de.thedevstack.conversationsplus.xmpp.httpuploadim.HttpUploadHint;
-import de.thedevstack.conversationsplus.xmpp.jid.Jid;
-import de.thedevstack.conversationsplus.xmpp.stanzas.MessagePacket;
-
-public class MessageGenerator extends AbstractGenerator {
-
- private MessagePacket preparePacket(Message message) {
- Conversation conversation = message.getConversation();
- Account account = conversation.getAccount();
- MessagePacket packet = new MessagePacket();
- if (conversation.getMode() == Conversation.MODE_SINGLE) {
- packet.setTo(message.getCounterpart());
- packet.setType(MessagePacket.TYPE_CHAT);
- packet.addChild("markable", "urn:xmpp:chat-markers:0");
- if (ConversationsPlusPreferences.indicateReceived()) {
- packet.addChild("request", "urn:xmpp:receipts");
- }
- } else if (message.getType() == Message.TYPE_PRIVATE) {
- packet.setTo(message.getCounterpart());
- packet.setType(MessagePacket.TYPE_CHAT);
- if (ConversationsPlusPreferences.indicateReceived()) {
- packet.addChild("request", "urn:xmpp:receipts");
- }
- } else {
- packet.setTo(message.getCounterpart().toBareJid());
- packet.setType(MessagePacket.TYPE_GROUPCHAT);
- }
- packet.setFrom(account.getJid());
- packet.setId(message.getUuid());
- if (message.edited()) {
- packet.addChild("replace","urn:xmpp:message-correct:0").setAttribute("id",message.getEditedId());
- }
- return packet;
- }
-
- public void addDelay(MessagePacket packet, long timestamp) {
- final SimpleDateFormat mDateFormat = new SimpleDateFormat(
- "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
- mDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
- Element delay = packet.addChild("delay", "urn:xmpp:delay");
- Date date = new Date(timestamp);
- delay.setAttribute("stamp", mDateFormat.format(date));
- }
-
- public MessagePacket generateAxolotlChat(Message message, XmppAxolotlMessage axolotlMessage) {
- MessagePacket packet = preparePacket(message);
- if (axolotlMessage == null) {
- return null;
- }
- packet.setAxolotlMessage(axolotlMessage.toElement());
- packet.addChild("store", "urn:xmpp:hints");
- return packet;
- }
-
- public static void addXhtmlImImage(MessagePacket packet, FileParams params) {
- Element html = packet.addChild("html", "http://jabber.org/protocol/xhtml-im");
- Element body = html.addChild("body", "http://www.w3.org/1999/xhtml");
- Element img = body.addChild("img");
- img.setAttribute("src", params.getUrl());
- img.setAttribute("height", params.getHeight());
- img.setAttribute("width", params.getWidth());
- }
-
- public static void addMessageHints(MessagePacket packet) {
- packet.addChild("private", "urn:xmpp:carbons:2");
- packet.addChild("no-copy", "urn:xmpp:hints");
- packet.addChild("no-permanent-store", "urn:xmpp:hints");
- packet.addChild("no-permanent-storage", "urn:xmpp:hints"); //do not copy this. this is wrong. it is *store*
- }
-
- public MessagePacket generateOtrChat(Message message) {
- Session otrSession = message.getConversation().getOtrSession();
- if (otrSession == null) {
- return null;
- }
- MessagePacket packet = preparePacket(message);
- addMessageHints(packet);
- try {
- String content = message.getBody();
- packet.setBody(otrSession.transformSending(content)[0]);
- return packet;
- } catch (OtrException e) {
- return null;
- }
- }
-
- public MessagePacket generateChat(Message message) {
- MessagePacket packet = preparePacket(message);
- String content;
- if (message.hasFileOnRemoteHost()) {
- FileParams fileParams = message.getFileParams();
- content = message.getBody();
- if (message.isHttpUploaded()) {
- packet.addChild(new HttpUploadHint());
- }
- packet.addChild("x","jabber:x:oob").addChild("url").setContent(content);
- if (fileParams.getWidth() > 0 && fileParams.getHeight() > 0) {
- addXhtmlImImage(packet, fileParams);
- }
- } else {
- content = message.getBody();
- }
- packet.setBody(content);
- return packet;
- }
-
- public MessagePacket generatePgpChat(Message message) {
- MessagePacket packet = preparePacket(message);
- packet.setBody("This is an XEP-0027 encrypted message");
- if (message.getEncryption() == Message.ENCRYPTION_DECRYPTED) {
- packet.addChild("x", "jabber:x:encrypted").setContent(message.getEncryptedBody());
- } else if (message.getEncryption() == Message.ENCRYPTION_PGP) {
- packet.addChild("x", "jabber:x:encrypted").setContent(message.getBody());
- }
- return packet;
- }
-
- public MessagePacket generateChatState(Conversation conversation) {
- final Account account = conversation.getAccount();
- MessagePacket packet = new MessagePacket();
- packet.setType(MessagePacket.TYPE_CHAT);
- packet.setTo(conversation.getJid().toBareJid());
- packet.setFrom(account.getJid());
- packet.addChild(ChatState.toElement(conversation.getOutgoingChatState()));
- packet.addChild("no-store", "urn:xmpp:hints");
- packet.addChild("no-storage", "urn:xmpp:hints"); //wrong! don't copy this. Its *store*
- return packet;
- }
-
- public MessagePacket confirm(final Account account, final Jid to, final String id) {
- MessagePacket packet = new MessagePacket();
- packet.setType(MessagePacket.TYPE_CHAT);
- packet.setTo(to);
- packet.setFrom(account.getJid());
- Element received = packet.addChild("displayed", "urn:xmpp:chat-markers:0");
- received.setAttribute("id", id);
- return packet;
- }
-
- public MessagePacket conferenceSubject(Conversation conversation,String subject) {
- MessagePacket packet = new MessagePacket();
- packet.setType(MessagePacket.TYPE_GROUPCHAT);
- packet.setTo(conversation.getJid().toBareJid());
- Element subjectChild = new Element("subject");
- subjectChild.setContent(subject);
- packet.addChild(subjectChild);
- packet.setFrom(conversation.getAccount().getJid().toBareJid());
- return packet;
- }
-
- 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());
- return packet;
- }
-
- 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;
- }
-
- public MessagePacket received(Account account, MessagePacket originalMessage, ArrayList<String> namespaces, int type) {
- MessagePacket receivedPacket = new MessagePacket();
- receivedPacket.setType(type);
- receivedPacket.setTo(originalMessage.getFrom());
- receivedPacket.setFrom(account.getJid());
- for(String namespace : namespaces) {
- receivedPacket.addChild("received", namespace).setAttribute("id", originalMessage.getId());
- }
- return receivedPacket;
- }
-
- 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;
- }
-}
diff --git a/src/main/java/de/thedevstack/conversationsplus/generator/PresenceGenerator.java b/src/main/java/de/thedevstack/conversationsplus/generator/PresenceGenerator.java
deleted file mode 100644
index f370c6e0..00000000
--- a/src/main/java/de/thedevstack/conversationsplus/generator/PresenceGenerator.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package de.thedevstack.conversationsplus.generator;
-
-import de.thedevstack.conversationsplus.entities.Account;
-import de.thedevstack.conversationsplus.entities.Contact;
-import de.thedevstack.conversationsplus.entities.Presence;
-import de.thedevstack.conversationsplus.xml.Element;
-import de.thedevstack.conversationsplus.xmpp.stanzas.PresencePacket;
-
-public class PresenceGenerator extends AbstractGenerator {
-
- private PresencePacket subscription(String type, Contact contact) {
- PresencePacket packet = new PresencePacket();
- packet.setAttribute("type", type);
- packet.setTo(contact.getJid());
- packet.setFrom(contact.getAccount().getJid().toBareJid());
- return packet;
- }
-
- public PresencePacket requestPresenceUpdatesFrom(Contact contact) {
- return subscription("subscribe", contact);
- }
-
- public PresencePacket stopPresenceUpdatesFrom(Contact contact) {
- return subscription("unsubscribe", contact);
- }
-
- public PresencePacket stopPresenceUpdatesTo(Contact contact) {
- return subscription("unsubscribed", contact);
- }
-
- public PresencePacket sendPresenceUpdatesTo(Contact contact) {
- return subscription("subscribed", contact);
- }
-
- public PresencePacket selfPresence(Account account, Presence.Status status) {
- PresencePacket packet = new PresencePacket();
- if(status.toShowString() != null) {
- packet.addChild("show").setContent(status.toShowString());
- }
- packet.setFrom(account.getJid());
- String sig = account.getPgpSignature();
- if (sig != 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://conversations.im");
- cap.setAttribute("ver", capHash);
- }
- return packet;
- }
-
- public PresencePacket sendOfflinePresence(Account account) {
- PresencePacket packet = new PresencePacket();
- packet.setFrom(account.getJid());
- packet.setAttribute("type","unavailable");
- return packet;
- }
-}