diff options
Diffstat (limited to 'src/eu/siacs/conversations/generator/MessageGenerator.java')
-rw-r--r-- | src/eu/siacs/conversations/generator/MessageGenerator.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/eu/siacs/conversations/generator/MessageGenerator.java b/src/eu/siacs/conversations/generator/MessageGenerator.java new file mode 100644 index 00000000..57b21fcf --- /dev/null +++ b/src/eu/siacs/conversations/generator/MessageGenerator.java @@ -0,0 +1,57 @@ +package eu.siacs.conversations.generator; + +import net.java.otr4j.OtrException; +import net.java.otr4j.session.Session; +import eu.siacs.conversations.entities.Account; +import eu.siacs.conversations.entities.Conversation; +import eu.siacs.conversations.entities.Message; +import eu.siacs.conversations.xmpp.stanzas.MessagePacket; + +public class MessageGenerator { + 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); + } else { + packet.setTo(message.getCounterpart().split("/")[0]); + packet.setType(MessagePacket.TYPE_GROUPCHAT); + } + packet.setFrom(account.getFullJid()); + packet.setId(message.getUuid()); + return packet; + } + + public MessagePacket generateOtrChat(Message message) throws OtrException { + Session otrSession = message.getConversation().getOtrSession(); + if (otrSession==null) { + throw new OtrException(null); + } + MessagePacket packet = preparePacket(message); + packet.addChild("private", "urn:xmpp:carbons:2"); + packet.addChild("no-copy", "urn:xmpp:hints"); + packet.setBody(otrSession.transformSending(message + .getBody())); + return packet; + } + + public MessagePacket generateChat(Message message) { + MessagePacket packet = preparePacket(message); + packet.setBody(message.getBody()); + return packet; + } + + public MessagePacket generatePgpChat(Message message) { + MessagePacket packet = preparePacket(message); + packet.setBody("This is an XEP-0027 encryted message"); + if (message.getEncryption() == Message.ENCRYPTION_DECRYPTED) { + packet.addChild("x", "jabber:x:encrypted").setContent( + message.getEncryptedBody()); + } else if (message.getEncryption() == Message.ENCRYPTION_PGP) { + packet.setBody(message.getBody()); + } + return packet; + } +} |