package won.bot.framework.eventbot.action.impl.mail.send; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.support.GenericMessage; import won.bot.framework.bot.context.MailBotContextWrapper; import won.bot.framework.eventbot.EventListenerContext; import won.bot.framework.eventbot.action.BaseEventBotAction; import won.bot.framework.eventbot.action.EventBotActionUtils; import won.bot.framework.eventbot.action.impl.mail.model.UriType; import won.bot.framework.eventbot.action.impl.mail.model.WonURI; import won.bot.framework.eventbot.action.impl.mail.receive.MailContentExtractor; import won.bot.framework.eventbot.event.Event; import won.bot.framework.eventbot.event.impl.wonmessage.HintFromMatcherEvent; import won.bot.framework.eventbot.listener.EventListener; import won.protocol.message.WonMessage; import won.protocol.model.Match; import javax.mail.internet.MimeMessage; import java.net.URI; /** * Created by fsuda on 03.10.2016. */ public class Hint2MailParserAction extends BaseEventBotAction { private MessageChannel sendChannel; private WonMimeMessageGenerator mailGenerator; public Hint2MailParserAction(WonMimeMessageGenerator mailGenerator, MessageChannel sendChannel) { super(mailGenerator.getEventListenerContext()); this.sendChannel = sendChannel; this.mailGenerator = mailGenerator; } @Override protected void doRun(Event event, EventListener executingListener) throws Exception { EventListenerContext ctx = getEventListenerContext(); if (event instanceof HintFromMatcherEvent && ctx.getBotContextWrapper() instanceof MailBotContextWrapper){ MailBotContextWrapper botContextWrapper = (MailBotContextWrapper) ctx.getBotContextWrapper(); Match match = ((HintFromMatcherEvent) event).getMatch(); WonMessage message = ((HintFromMatcherEvent) event).getWonMessage(); URI responseTo = match.getFromNeed(); URI remoteNeedUri = match.getToNeed(); MimeMessage originalMail = botContextWrapper.getMimeMessageForURI(responseTo); logger.debug( "Found a hint for URI: " + responseTo + " sending a mail to the creator: " + MailContentExtractor .getFromAddressString(originalMail)); WonMimeMessage answerMessage = mailGenerator.createHintMail(originalMail, remoteNeedUri); botContextWrapper.addMailIdWonURIRelation(answerMessage.getMessageID(), new WonURI(message.getReceiverURI(), UriType.CONNECTION)); sendChannel.send(new GenericMessage<>(answerMessage)); } } }