package mail.processing;
import javax.mail.Flags.Flag;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import log.Logger;
import persistence.PersistedObject;
import persistence.Persistence;
import utils.StringUtils;
public class VerifyPublicationResultEmail implements MessageProcess
{
private Persistence persistence;
@Override
public void treatMessage(Message message) throws Exception
{
String sender = InternetAddress.toString(message.getFrom());
String subject = message.getSubject();
if (sender.contains("leboncoin.fr") && subject.contains("est en ligne"))
{
// ACCEPTED
String id = extractAdId(message.getContent().toString());
String name = extractAdName(subject);
persistence.update(new PersistedObject(id, StringUtils.md5(name)));
Logger.traceINFO("[ACCEPTED] Ad {" + name + "} has been accepted! Updating the persistence with new id : " + id);
message.setFlag(Flag.SEEN, true);
}
else if (sender.contains("leboncoin.fr") && subject.contains("sur leboncoin.fr"))
{
// REFUSED
String name = extractAdName(subject);
Logger.traceERROR("[REJECTED] Ad {" + name + "} has been rejected! Cleaning the ad from the persistence.");
persistence.remove(new PersistedObject(null, StringUtils.md5(name)));
message.setFlag(Flag.SEEN, true);
}
}
private static String extractAdId(String mailBody)
{
String url = StringUtils.truncBeforeAndOverSymbol(mailBody, "http");
int id = StringUtils.extractInt(url);
return String.valueOf(id);
}
private static String extractAdName(String subject)
{
// Mail subject and not mail body.
String res = StringUtils.truncBeforeAndOverSymbol(subject, "\"");
res = StringUtils.truncAfter(res, "\"");
res = res.replaceAll("\"", "");
return res.trim();
}
public VerifyPublicationResultEmail(Persistence persistence)
{
this.persistence = persistence;
}
}