Search in sources :

Example 1 with Rewardable

use of com.gamebuster19901.excite.game.challenge.Rewardable in project ExciteBot by TheGameCommunity.

the class Mailbox method analyzeMail.

private static LinkedHashSet<MailResponse> analyzeMail(Wii responder, MimeMessage prompt) throws MessagingException {
    LinkedHashSet<MailResponse> responses = new LinkedHashSet<MailResponse>();
    Session session = Session.getInstance(new Properties());
    Address[] from = prompt.getFrom();
    LOGGER.log(Level.FINEST, "Analyzing mail from: " + (from != null ? from[0] : from));
    if (from == null) {
        responses.add(new NoResponse(prompt));
        return responses;
    }
    ElectronicAddress senderEmail = new EmailAddress(prompt.getFrom()[0]);
    Wii sender = Wii.getWii(senderEmail);
    if (sender instanceof InvalidWii) {
        LOGGER.log(Level.FINEST, "Ignoring non-wii mail");
        responses.add(new NoResponse(prompt));
        return responses;
    } else {
        boolean wasKnown;
        if (!(wasKnown = sender.isKnown())) {
            try {
                Insertion.insertInto(WIIS).setColumns(WII_ID).to(sender.getWiiCode().toString()).prepare(ConsoleContext.INSTANCE).execute();
            } catch (SQLException e) {
                throw new MessagingException("Database error", e);
            }
        }
        String[] appheaders = prompt.getHeader(APP_ID_HEADER);
        String app = "";
        if (appheaders.length > 0) {
            app = appheaders[0];
        }
        Rewardable attachment = InvalidChallenge.INSTANCE;
        if (app.equals(EXCITEBOTS)) {
            attachment = analyzeIngameMail(prompt, sender);
        }
        if (sender.getOwner() instanceof UnknownDiscordUser) {
            // if wii is not registered
            if (app.equals(FRIEND_REQUEST) && !wasKnown) {
                MailResponse friendResponse = new AddFriendResponse(responder, sender, prompt);
                LOGGER.finest("Sending friend request to " + sender.getEmail());
                MailResponse codeResponse = new DiscordCodeResponse(responder, sender, prompt);
                LOGGER.finest("Sending verification discord code to " + sender.getEmail());
                responses.add(friendResponse);
                responses.add(codeResponse);
            }
            if (attachment.getReward() > 0) {
            // responses.add(new RefundResponse(responder, prompt, attachment));
            }
        } else {
            // excitebot is not currently accepting mail from anything other than Excitebots
            LOGGER.log(Level.FINEST, "Excitebot is not currently accepting mail from anything other than Excitebots");
            responses.add(new NoResponse(prompt));
        }
    }
    return responses;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) InvalidWii(com.gamebuster19901.excite.bot.user.Wii.InvalidWii) Address(javax.mail.Address) SQLException(java.sql.SQLException) MessagingException(javax.mail.MessagingException) UnknownDiscordUser(com.gamebuster19901.excite.bot.user.UnknownDiscordUser) Properties(java.util.Properties) Rewardable(com.gamebuster19901.excite.game.challenge.Rewardable) InvalidWii(com.gamebuster19901.excite.bot.user.Wii.InvalidWii) Wii(com.gamebuster19901.excite.bot.user.Wii) Session(javax.mail.Session)

Aggregations

UnknownDiscordUser (com.gamebuster19901.excite.bot.user.UnknownDiscordUser)1 Wii (com.gamebuster19901.excite.bot.user.Wii)1 InvalidWii (com.gamebuster19901.excite.bot.user.Wii.InvalidWii)1 Rewardable (com.gamebuster19901.excite.game.challenge.Rewardable)1 SQLException (java.sql.SQLException)1 LinkedHashSet (java.util.LinkedHashSet)1 Properties (java.util.Properties)1 Address (javax.mail.Address)1 MessagingException (javax.mail.MessagingException)1 Session (javax.mail.Session)1