From af2c2d963290e99ec98587b1c7fd5949df0e1c87 Mon Sep 17 00:00:00 2001 From: Sebastien Date: Wed, 28 Feb 2018 17:59:09 +0100 Subject: [PATCH] Javadoc ! close #26 --- src/main/java/net/Broken/BotListener.java | 2 +- src/main/java/net/Broken/Commande.java | 24 ++- src/main/java/net/Broken/Commands/Cat.java | 11 +- .../java/net/Broken/Commands/DayTrigger.java | 22 +-- src/main/java/net/Broken/Commands/Error.java | 13 +- src/main/java/net/Broken/Commands/Flush.java | 12 +- src/main/java/net/Broken/Commands/Help.java | 12 +- src/main/java/net/Broken/Commands/Move.java | 36 +---- src/main/java/net/Broken/Commands/Music.java | 14 +- .../java/net/Broken/Commands/Over18/Ass.java | 2 +- .../net/Broken/Commands/Over18/Boobs.java | 2 +- .../net/Broken/Commands/Over18/Madame.java | 21 ++- .../java/net/Broken/Commands/Over18/Pipe.java | 2 +- .../java/net/Broken/Commands/Over18/SM.java | 11 +- src/main/java/net/Broken/Commands/Ping.java | 15 +- src/main/java/net/Broken/Commands/Spam.java | 13 +- .../java/net/Broken/Commands/SpamInfo.java | 11 +- .../Broken/DB/Entity/PendingUserEntity.java | 3 + .../java/net/Broken/DB/Entity/UserEntity.java | 3 + .../DB/Repository/PendingUserRepository.java | 3 + .../Broken/DB/Repository/UserRepository.java | 4 + src/main/java/net/Broken/Init.java | 7 + src/main/java/net/Broken/MainBot.java | 21 ++- .../net/Broken/RestApi/CommandInterface.java | 11 ++ .../java/net/Broken/RestApi/Commands/Add.java | 3 + .../net/Broken/RestApi/Commands/Connect.java | 3 + .../net/Broken/RestApi/Commands/Dell.java | 9 +- .../Broken/RestApi/Commands/Disconnect.java | 3 + .../net/Broken/RestApi/Commands/Flush.java | 9 +- .../net/Broken/RestApi/Commands/Next.java | 9 +- .../net/Broken/RestApi/Commands/Pause.java | 9 +- .../net/Broken/RestApi/Commands/Play.java | 9 +- .../net/Broken/RestApi/Commands/Stop.java | 3 + .../Data/{Chanel.java => ChanelData.java} | 7 +- .../Broken/RestApi/Data/CommandPostData.java | 4 +- .../RestApi/Data/CommandResponseData.java | 4 +- .../Broken/RestApi/Data/CurrentMusicData.java | 4 +- .../net/Broken/RestApi/Data/PlaylistData.java | 4 +- .../RestApi/Data/UserAudioTrackData.java | 6 +- .../Data/UserManager/CheckResposeData.java | 3 + .../RestApi/Data/UserManager/ConfirmData.java | 3 + .../Data/UserManager/UserConnectionData.java | 3 + .../Data/UserManager/UserInfoData.java | 3 + .../Broken/RestApi/MusicWebAPIController.java | 56 ++----- .../RestApi/UserManagerAPIController.java | 17 +- src/main/java/net/Broken/Tools/AntiSpam.java | 28 ++-- .../Broken/Tools/Command/CommandLoader.java | 8 + .../Broken/Tools/Command/CommandParser.java | 13 +- .../Tools/Command/NumberedCommande.java | 31 ++-- .../Broken/Tools/DayListener/DayListener.java | 30 +++- .../DayListener/Listeners/DailyMadame.java | 5 +- .../DayListener/Listeners/ResetSpam.java | 3 + .../Tools/DayListener/NewDayListener.java | 6 + .../net/Broken/Tools/EmbedMessageUtils.java | 3 + .../Broken/Tools/FindContentOnWebPage.java | 21 ++- .../java/net/Broken/Tools/LimitChecker.java | 9 +- .../java/net/Broken/Tools/MessageTimeOut.java | 4 + .../java/net/Broken/Tools/Moderateur.java | 13 +- .../java/net/Broken/Tools/PrivateMessage.java | 17 +- .../java/net/Broken/Tools/Redirection.java | 9 +- .../java/net/Broken/Tools/ResourceLoader.java | 6 + .../java/net/Broken/Tools/TableRenderer.java | 23 ++- .../{UserRegister.java => UserUtils.java} | 65 ++++++-- .../java/net/Broken/Tools/UserSpamUtils.java | 3 + src/main/java/net/Broken/audio/AudioM.java | 146 +++++++++++------- .../java/net/Broken/audio/FindGeneral.java | 15 +- .../Broken/audio/NotConectedException.java | 4 - .../Broken/audio/NotConnectedException.java | 8 + .../net/Broken/audio/NullMusicManager.java | 3 + .../java/net/Broken/audio/TrackScheduler.java | 13 +- .../java/net/Broken/audio/UserAudioTrack.java | 5 +- .../java/net/Broken/audio/WebLoadUtils.java | 27 +++- .../net/Broken/webView/GeneralWebView.java | 3 + .../java/net/Broken/webView/MusicWebView.java | 3 + .../net/Broken/webView/MvcApplication.java | 3 + ...isterWebView.java => RegisterWebView.java} | 5 +- 76 files changed, 605 insertions(+), 373 deletions(-) rename src/main/java/net/Broken/RestApi/Data/{Chanel.java => ChanelData.java} (61%) rename src/main/java/net/Broken/Tools/UserManager/{UserRegister.java => UserUtils.java} (74%) delete mode 100644 src/main/java/net/Broken/audio/NotConectedException.java create mode 100644 src/main/java/net/Broken/audio/NotConnectedException.java rename src/main/java/net/Broken/webView/{ResisterWebView.java => RegisterWebView.java} (86%) diff --git a/src/main/java/net/Broken/BotListener.java b/src/main/java/net/Broken/BotListener.java index 1ecd3e3..991ce80 100644 --- a/src/main/java/net/Broken/BotListener.java +++ b/src/main/java/net/Broken/BotListener.java @@ -24,7 +24,7 @@ import org.apache.logging.log4j.Logger; /** - * Created by seb65 on 19/10/2016. + * Bot Listener */ public class BotListener extends ListenerAdapter { private AntiSpam antispam=new AntiSpam(); diff --git a/src/main/java/net/Broken/Commande.java b/src/main/java/net/Broken/Commande.java index e34f4be..7123f42 100644 --- a/src/main/java/net/Broken/Commande.java +++ b/src/main/java/net/Broken/Commande.java @@ -4,14 +4,32 @@ package net.Broken; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; /** - * Created by seb65 on 19/10/2016. + * Interface that define command structure. */ public interface Commande { - boolean called(String[] args, MessageReceivedEvent event); + /** + * Main action of command + * @param args Command args. + * @param event Command MessageReceivedEvent + */ void action(String[] args, MessageReceivedEvent event); - void executed(boolean success, MessageReceivedEvent event); + + /** + * Determines if the command is usable whit private message + * @return boolean + */ boolean isPrivateUsable(); + + /** + * Determines if the command is usable only by admin user + * @return boolean + */ boolean isAdminCmd(); + + /** + * Determines if the command is only usable on NSFW channels + * @return boolean + */ boolean isNSFW(); diff --git a/src/main/java/net/Broken/Commands/Cat.java b/src/main/java/net/Broken/Commands/Cat.java index dba4a54..7b19546 100644 --- a/src/main/java/net/Broken/Commands/Cat.java +++ b/src/main/java/net/Broken/Commands/Cat.java @@ -13,13 +13,9 @@ import java.net.URL; import java.net.URLConnection; /** - * Created by Seb on 06/02/2017. + * Command that return a random picture of cat. */ public class Cat implements Commande { - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } @Override public void action(String[] args, MessageReceivedEvent event) { @@ -63,11 +59,6 @@ public class Cat implements Commande { } - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - @Override public boolean isPrivateUsable() { return false; diff --git a/src/main/java/net/Broken/Commands/DayTrigger.java b/src/main/java/net/Broken/Commands/DayTrigger.java index 89440d9..80229f0 100644 --- a/src/main/java/net/Broken/Commands/DayTrigger.java +++ b/src/main/java/net/Broken/Commands/DayTrigger.java @@ -1,29 +1,18 @@ package net.Broken.Commands; import net.Broken.Commande; -import net.Broken.MainBot; import net.Broken.Tools.DayListener.DayListener; -import net.Broken.Tools.EmbedMessageUtils; -import net.Broken.Tools.MessageTimeOut; -import net.Broken.Tools.PrivateMessage; -import net.dv8tion.jda.core.Permission; import net.dv8tion.jda.core.entities.ChannelType; -import net.dv8tion.jda.core.entities.Message; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.ArrayList; -import java.util.List; - +/** + * Admin command to manually trigger daily action(s) + */ public class DayTrigger implements Commande{ Logger logger = LogManager.getLogger(); - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } - @Override public void action(String[] args, MessageReceivedEvent event) { if(!event.isFromType(ChannelType.PRIVATE)) @@ -32,11 +21,6 @@ public class DayTrigger implements Commande{ } - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - @Override public boolean isPrivateUsable() { return true; diff --git a/src/main/java/net/Broken/Commands/Error.java b/src/main/java/net/Broken/Commands/Error.java index 7e07e27..e036712 100644 --- a/src/main/java/net/Broken/Commands/Error.java +++ b/src/main/java/net/Broken/Commands/Error.java @@ -8,13 +8,13 @@ import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +/** + * Send standard internal error. + */ + public class Error implements Commande{ private Logger logger = LogManager.getLogger(); - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } @Override public void action(String[] args, MessageReceivedEvent event) { @@ -24,11 +24,6 @@ public class Error implements Commande{ event.getTextChannel().sendMessage(EmbedMessageUtils.getInternalError()).queue(); } - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - @Override public boolean isPrivateUsable() { return true; diff --git a/src/main/java/net/Broken/Commands/Flush.java b/src/main/java/net/Broken/Commands/Flush.java index 054cf56..a081cb4 100644 --- a/src/main/java/net/Broken/Commands/Flush.java +++ b/src/main/java/net/Broken/Commands/Flush.java @@ -12,13 +12,12 @@ import org.apache.logging.log4j.Logger; import java.util.List; +/** + * Command to flush X last message on channel. + */ public class Flush implements Commande{ Logger logger = LogManager.getLogger(); - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return true; - } @Override public void action(String[] args, MessageReceivedEvent event) { @@ -54,11 +53,6 @@ public class Flush implements Commande{ } } - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - @Override public boolean isPrivateUsable() { return false; diff --git a/src/main/java/net/Broken/Commands/Help.java b/src/main/java/net/Broken/Commands/Help.java index 08c5af1..fe93065 100644 --- a/src/main/java/net/Broken/Commands/Help.java +++ b/src/main/java/net/Broken/Commands/Help.java @@ -2,7 +2,6 @@ package net.Broken.Commands; import net.Broken.Commande; import net.Broken.MainBot; -import net.Broken.RestApi.CommandInterface; import net.Broken.Tools.EmbedMessageUtils; import net.Broken.Tools.MessageTimeOut; import net.Broken.Tools.PrivateMessage; @@ -23,15 +22,11 @@ import java.util.List; import java.util.Map; /** - * Created by seb65 on 23/10/2016. + * Help Command. */ public class Help implements Commande { Logger logger = LogManager.getLogger(); private int cellLenght = 25; - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return true; - } @Override public void action(String[] args, MessageReceivedEvent event) { @@ -174,11 +169,6 @@ public class Help implements Commande { } - } - - @Override - public void executed(boolean success, MessageReceivedEvent event) { - } @Override diff --git a/src/main/java/net/Broken/Commands/Move.java b/src/main/java/net/Broken/Commands/Move.java index 887312b..1bab7df 100644 --- a/src/main/java/net/Broken/Commands/Move.java +++ b/src/main/java/net/Broken/Commands/Move.java @@ -4,7 +4,6 @@ import net.Broken.Commande; import net.Broken.MainBot; import net.Broken.Tools.EmbedMessageUtils; import net.Broken.Tools.MessageTimeOut; -import net.dv8tion.jda.core.Permission; import net.dv8tion.jda.core.entities.*; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.exceptions.HierarchyException; @@ -17,12 +16,9 @@ import org.apache.logging.log4j.Logger; import java.util.ArrayList; import java.util.List; -/** - * Created by seb65 on 20/10/2016. - */ /** - * + * Move Command */ public class Move implements Commande { @@ -34,14 +30,14 @@ public class Move implements Commande { public GuildManager serveurManager; public GuildController guildController; - /** + /** Perform a move (Reset is role and add target(s) role(s) * - * @param user - * @param cible + * @param user User to move + * @param cible Complete list of new role * @param reset - * @param serveur - * @param serveurManager - * @return + * @param serveur Guild + * @param serveurManager GuildManager + * @return success */ public boolean exc(Member user, List cible , boolean reset, Guild serveur, GuildManager serveurManager) throws HierarchyException { @@ -77,13 +73,7 @@ public class Move implements Commande { return erreur; } - @Override - - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } - - /** + /** Command handler * * @param args * @param event @@ -188,16 +178,6 @@ public class Move implements Commande { - } - - /** - * - * @param success - * @param event - */ - @Override - public void executed(boolean success, MessageReceivedEvent event) { - } @Override diff --git a/src/main/java/net/Broken/Commands/Music.java b/src/main/java/net/Broken/Commands/Music.java index 7b98f59..4d5a09b 100644 --- a/src/main/java/net/Broken/Commands/Music.java +++ b/src/main/java/net/Broken/Commands/Music.java @@ -15,6 +15,10 @@ import org.apache.logging.log4j.Logger; import java.util.ArrayList; import java.util.List; +/** + * Music commands + */ + public class Music implements Commande { public AudioM audio; Logger logger = LogManager.getLogger(); @@ -22,11 +26,6 @@ public class Music implements Commande { audio = new AudioM(MainBot.jda.getGuilds().get(0)); } - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } - @Override public void action(String[] args, MessageReceivedEvent event) { @@ -157,11 +156,6 @@ public class Music implements Commande { } } - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - @Override public boolean isPrivateUsable() { return false; diff --git a/src/main/java/net/Broken/Commands/Over18/Ass.java b/src/main/java/net/Broken/Commands/Over18/Ass.java index 3d3beb0..a18a407 100644 --- a/src/main/java/net/Broken/Commands/Over18/Ass.java +++ b/src/main/java/net/Broken/Commands/Over18/Ass.java @@ -4,7 +4,7 @@ import net.Broken.Tools.Command.NumberedCommande; import org.apache.logging.log4j.LogManager; /** - * Created by seb65 on 07/11/2016. + * Ass command, return random picture from les400culs.com */ public class Ass extends NumberedCommande { diff --git a/src/main/java/net/Broken/Commands/Over18/Boobs.java b/src/main/java/net/Broken/Commands/Over18/Boobs.java index c5ecb0d..c5c080e 100644 --- a/src/main/java/net/Broken/Commands/Over18/Boobs.java +++ b/src/main/java/net/Broken/Commands/Over18/Boobs.java @@ -4,7 +4,7 @@ import net.Broken.Tools.Command.NumberedCommande; import org.apache.logging.log4j.LogManager; /** - * Created by seb65 on 07/11/2016. + * Boobs command, return random picture from lesaintdesseins.fr */ public class Boobs extends NumberedCommande { diff --git a/src/main/java/net/Broken/Commands/Over18/Madame.java b/src/main/java/net/Broken/Commands/Over18/Madame.java index 82b69dc..16f4123 100644 --- a/src/main/java/net/Broken/Commands/Over18/Madame.java +++ b/src/main/java/net/Broken/Commands/Over18/Madame.java @@ -12,16 +12,12 @@ import java.io.IOException; /** - * Created by seb65 on 11/11/2016. + * Madame command that return random picture from dites.bonjourmadame.fr */ public class Madame implements Commande{ Logger logger = LogManager.getLogger(); MessageReceivedEvent event; public String HELP="T'es sérieux la?"; - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } @Override public void action(String[] args, MessageReceivedEvent event) { @@ -63,11 +59,6 @@ public class Madame implements Commande{ } - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - @Override public boolean isPrivateUsable() { return false; @@ -83,8 +74,16 @@ public class Madame implements Commande{ return true; } + + /** + * Detect if picture link go to Tepeee + * @param url + * @return true is Tepeee link is detected + * @throws StringIndexOutOfBoundsException + * @throws IOException + */ private boolean scanPageForTipeee(String url) throws StringIndexOutOfBoundsException, IOException{ - String content = FindContentOnWebPage.getUrlSource(url); + String content = FindContentOnWebPage.getSourceUrl(url); String imgClickLink = content.substring(content.indexOf("photo post")); imgClickLink = imgClickLink.substring(imgClickLink.indexOf(" threadHashMap = new HashMap<>(); Logger logger = LogManager.getLogger(); - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } @Override public void action(String[] args, MessageReceivedEvent event) { @@ -92,11 +88,6 @@ public class SpamInfo implements Commande{ - } - - @Override - public void executed(boolean success, MessageReceivedEvent event) { - } @Override diff --git a/src/main/java/net/Broken/DB/Entity/PendingUserEntity.java b/src/main/java/net/Broken/DB/Entity/PendingUserEntity.java index eb06cd7..6c41ee4 100644 --- a/src/main/java/net/Broken/DB/Entity/PendingUserEntity.java +++ b/src/main/java/net/Broken/DB/Entity/PendingUserEntity.java @@ -6,6 +6,9 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +/** + * Entity for DB. Represent user who not yet confirmed her account. + */ @Entity public class PendingUserEntity { @Id diff --git a/src/main/java/net/Broken/DB/Entity/UserEntity.java b/src/main/java/net/Broken/DB/Entity/UserEntity.java index b0fafd7..68bf40b 100644 --- a/src/main/java/net/Broken/DB/Entity/UserEntity.java +++ b/src/main/java/net/Broken/DB/Entity/UserEntity.java @@ -5,6 +5,9 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +/** + * Entity for DB. Represent confirmed user account. + */ @Entity public class UserEntity { @Id diff --git a/src/main/java/net/Broken/DB/Repository/PendingUserRepository.java b/src/main/java/net/Broken/DB/Repository/PendingUserRepository.java index c72adbc..488e6b5 100644 --- a/src/main/java/net/Broken/DB/Repository/PendingUserRepository.java +++ b/src/main/java/net/Broken/DB/Repository/PendingUserRepository.java @@ -5,6 +5,9 @@ import org.springframework.data.repository.CrudRepository; import java.util.List; +/** + * Repository for PendingUserEntity + */ public interface PendingUserRepository extends CrudRepository { List findByJdaId(String jdaId); diff --git a/src/main/java/net/Broken/DB/Repository/UserRepository.java b/src/main/java/net/Broken/DB/Repository/UserRepository.java index 86d05d5..57552aa 100644 --- a/src/main/java/net/Broken/DB/Repository/UserRepository.java +++ b/src/main/java/net/Broken/DB/Repository/UserRepository.java @@ -5,6 +5,10 @@ import org.springframework.data.repository.CrudRepository; import java.util.List; +/** + * Repository for UserEntity + */ + public interface UserRepository extends CrudRepository{ List findByName(String name); List findByJdaId(String jdaId); diff --git a/src/main/java/net/Broken/Init.java b/src/main/java/net/Broken/Init.java index 0905412..aaeffa8 100644 --- a/src/main/java/net/Broken/Init.java +++ b/src/main/java/net/Broken/Init.java @@ -18,9 +18,16 @@ import org.apache.logging.log4j.Logger; import javax.security.auth.login.LoginException; import java.util.List; + public class Init { static private Logger logger = LogManager.getLogger(); + /** + * Initialize all bot functionality + * @param token bot user token + * @param dev dev Mode or not + * @return JDA object + */ static JDA initBot(String token, boolean dev){ boolean okInit; JDA jda = null; diff --git a/src/main/java/net/Broken/MainBot.java b/src/main/java/net/Broken/MainBot.java index 7b789cc..c70c56e 100644 --- a/src/main/java/net/Broken/MainBot.java +++ b/src/main/java/net/Broken/MainBot.java @@ -5,7 +5,6 @@ import net.Broken.Tools.Command.CommandParser; import net.Broken.Tools.EmbedMessageUtils; import net.Broken.Tools.MessageTimeOut; import net.Broken.Tools.PrivateMessage; -import net.Broken.Tools.UserManager.UserRegister; import net.Broken.Tools.UserSpamUtils; import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.Permission; @@ -23,10 +22,9 @@ import org.springframework.stereotype.Controller; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; /** - * Created by seb65 on 19/10/2016. + * Main Class */ @SpringBootApplication @Controller @@ -91,9 +89,10 @@ public class MainBot { } - /*************************************** - * Traitement de la commande * - ***************************************/ + /** + * Perform test (admin, NSFW and private usable or not) and execute command or not + * @param cmd Container whit all command info + */ public static void handleCommand(CommandParser.CommandContainer cmd) { //On verifie que la commande existe @@ -114,13 +113,11 @@ public class MainBot { { commandes.get(cmd.commande).action(cmd.args, cmd.event); - commandes.get(cmd.commande).executed(true, cmd.event); } else if (!cmd.event.isFromType(ChannelType.PRIVATE)) { if(!cmdObj.isNSFW() || cmd.event.getTextChannel().isNSFW()){ commandes.get(cmd.commande).action(cmd.args, cmd.event); - commandes.get(cmd.commande).executed(true, cmd.event); } else{ Message msg = cmd.event.getTextChannel().sendMessage(cmd.event.getAuthor().getAsMention() + "\n:warning: **__Channel règlementé! Go sur over18!__**:warning: ").complete(); @@ -159,9 +156,11 @@ public class MainBot { } - /******************************* - * RAZ Compteur Spam * - *******************************/ + + + /** + * TODO Change this, better use daylistener + */ public static class ModoTimer extends Thread{ diff --git a/src/main/java/net/Broken/RestApi/CommandInterface.java b/src/main/java/net/Broken/RestApi/CommandInterface.java index 0e46caf..51ed076 100644 --- a/src/main/java/net/Broken/RestApi/CommandInterface.java +++ b/src/main/java/net/Broken/RestApi/CommandInterface.java @@ -6,6 +6,17 @@ import net.Broken.RestApi.Data.CommandResponseData; import net.dv8tion.jda.core.entities.User; import org.springframework.http.ResponseEntity; + +/** + * Represent RestApi command + */ public interface CommandInterface { + /** + * Main action + * @param musicCommande Current guild music command + * @param data Received data + * @param user User who submit RestApi command + * @return HTTP Response + */ ResponseEntity action(Music musicCommande, CommandPostData data, User user); } diff --git a/src/main/java/net/Broken/RestApi/Commands/Add.java b/src/main/java/net/Broken/RestApi/Commands/Add.java index fec1b6a..3b6f300 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Add.java +++ b/src/main/java/net/Broken/RestApi/Commands/Add.java @@ -8,6 +8,9 @@ import net.Broken.audio.WebLoadUtils; import net.dv8tion.jda.core.entities.User; import org.springframework.http.ResponseEntity; +/** + * Add track RestApi + */ public class Add implements CommandInterface { @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { diff --git a/src/main/java/net/Broken/RestApi/Commands/Connect.java b/src/main/java/net/Broken/RestApi/Commands/Connect.java index 9cf8967..42f6975 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Connect.java +++ b/src/main/java/net/Broken/RestApi/Commands/Connect.java @@ -10,6 +10,9 @@ import net.dv8tion.jda.core.entities.VoiceChannel; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Connect to vocal channel RestApi command + */ public class Connect implements CommandInterface{ @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { diff --git a/src/main/java/net/Broken/RestApi/Commands/Dell.java b/src/main/java/net/Broken/RestApi/Commands/Dell.java index fff542f..abd2b93 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Dell.java +++ b/src/main/java/net/Broken/RestApi/Commands/Dell.java @@ -4,23 +4,26 @@ import net.Broken.Commands.Music; import net.Broken.RestApi.CommandInterface; import net.Broken.RestApi.Data.CommandPostData; import net.Broken.RestApi.Data.CommandResponseData; -import net.Broken.audio.NotConectedException; +import net.Broken.audio.NotConnectedException; import net.Broken.audio.NullMusicManager; import net.dv8tion.jda.core.entities.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Delete track RestApi command + */ public class Dell implements CommandInterface { @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { if(data.url != null) { try { - if(musicCommande.getAudioManager().getMusicManager().scheduler.remove(data.url)){ + if(musicCommande.getAudioManager().getGuildMusicManager().scheduler.remove(data.url)){ return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK); } else return new ResponseEntity<>(new CommandResponseData(data.command,"URL not found"), HttpStatus.NOT_FOUND); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { return new ResponseEntity<>(new CommandResponseData(data.command, "Not connected to vocal!"), HttpStatus.NOT_ACCEPTABLE); } } diff --git a/src/main/java/net/Broken/RestApi/Commands/Disconnect.java b/src/main/java/net/Broken/RestApi/Commands/Disconnect.java index 1a30dfe..0b31493 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Disconnect.java +++ b/src/main/java/net/Broken/RestApi/Commands/Disconnect.java @@ -10,6 +10,9 @@ import net.dv8tion.jda.core.entities.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Disconnect from vocal chanel RestApi Command + */ public class Disconnect implements CommandInterface{ @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { diff --git a/src/main/java/net/Broken/RestApi/Commands/Flush.java b/src/main/java/net/Broken/RestApi/Commands/Flush.java index 0bf7e3a..bd15fc2 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Flush.java +++ b/src/main/java/net/Broken/RestApi/Commands/Flush.java @@ -4,19 +4,22 @@ import net.Broken.Commands.Music; import net.Broken.RestApi.CommandInterface; import net.Broken.RestApi.Data.CommandPostData; import net.Broken.RestApi.Data.CommandResponseData; -import net.Broken.audio.NotConectedException; +import net.Broken.audio.NotConnectedException; import net.Broken.audio.NullMusicManager; import net.dv8tion.jda.core.entities.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Flush playlist RestApi Command + */ public class Flush implements CommandInterface { @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { try { - musicCommande.getAudioManager().getMusicManager().scheduler.flush(); + musicCommande.getAudioManager().getGuildMusicManager().scheduler.flush(); return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { return new ResponseEntity<>(new CommandResponseData(data.command, "Not connected to vocal!"), HttpStatus.NOT_ACCEPTABLE); } } diff --git a/src/main/java/net/Broken/RestApi/Commands/Next.java b/src/main/java/net/Broken/RestApi/Commands/Next.java index d056cd3..60eb19d 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Next.java +++ b/src/main/java/net/Broken/RestApi/Commands/Next.java @@ -4,19 +4,22 @@ import net.Broken.Commands.Music; import net.Broken.RestApi.CommandInterface; import net.Broken.RestApi.Data.CommandPostData; import net.Broken.RestApi.Data.CommandResponseData; -import net.Broken.audio.NotConectedException; +import net.Broken.audio.NotConnectedException; import net.Broken.audio.NullMusicManager; import net.dv8tion.jda.core.entities.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Next Track RestApi command + */ public class Next implements CommandInterface { @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { try { - musicCommande.getAudioManager().getMusicManager().scheduler.nextTrack(); + musicCommande.getAudioManager().getGuildMusicManager().scheduler.nextTrack(); return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { return new ResponseEntity<>(new CommandResponseData(data.command, "Not connected to vocal!"), HttpStatus.NOT_ACCEPTABLE); } } diff --git a/src/main/java/net/Broken/RestApi/Commands/Pause.java b/src/main/java/net/Broken/RestApi/Commands/Pause.java index f097cb0..354a2b8 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Pause.java +++ b/src/main/java/net/Broken/RestApi/Commands/Pause.java @@ -4,19 +4,22 @@ import net.Broken.Commands.Music; import net.Broken.RestApi.CommandInterface; import net.Broken.RestApi.Data.CommandPostData; import net.Broken.RestApi.Data.CommandResponseData; -import net.Broken.audio.NotConectedException; +import net.Broken.audio.NotConnectedException; import net.Broken.audio.NullMusicManager; import net.dv8tion.jda.core.entities.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Pause track RestApi command + */ public class Pause implements CommandInterface { @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { try { - musicCommande.getAudioManager().getMusicManager().scheduler.pause(); + musicCommande.getAudioManager().getGuildMusicManager().scheduler.pause(); return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { return new ResponseEntity<>(new CommandResponseData(data.command, "Not connected to vocal!"), HttpStatus.NOT_ACCEPTABLE); } } diff --git a/src/main/java/net/Broken/RestApi/Commands/Play.java b/src/main/java/net/Broken/RestApi/Commands/Play.java index 6ea06ef..b5436b0 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Play.java +++ b/src/main/java/net/Broken/RestApi/Commands/Play.java @@ -4,19 +4,22 @@ import net.Broken.Commands.Music; import net.Broken.RestApi.CommandInterface; import net.Broken.RestApi.Data.CommandPostData; import net.Broken.RestApi.Data.CommandResponseData; -import net.Broken.audio.NotConectedException; +import net.Broken.audio.NotConnectedException; import net.Broken.audio.NullMusicManager; import net.dv8tion.jda.core.entities.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Resume (play button) RestApi command + */ public class Play implements CommandInterface { @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { try { - musicCommande.getAudioManager().getMusicManager().scheduler.resume(); + musicCommande.getAudioManager().getGuildMusicManager().scheduler.resume(); return new ResponseEntity<>(new CommandResponseData(data.command, "Accepted"), HttpStatus.OK); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { return new ResponseEntity<>(new CommandResponseData(data.command, "Not connected to vocal!"), HttpStatus.NOT_ACCEPTABLE); } } diff --git a/src/main/java/net/Broken/RestApi/Commands/Stop.java b/src/main/java/net/Broken/RestApi/Commands/Stop.java index 387ce38..576e26a 100644 --- a/src/main/java/net/Broken/RestApi/Commands/Stop.java +++ b/src/main/java/net/Broken/RestApi/Commands/Stop.java @@ -9,6 +9,9 @@ import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Stop RestApi Command + */ public class Stop implements CommandInterface { @Override public ResponseEntity action(Music musicCommande, CommandPostData data, User user) { diff --git a/src/main/java/net/Broken/RestApi/Data/Chanel.java b/src/main/java/net/Broken/RestApi/Data/ChanelData.java similarity index 61% rename from src/main/java/net/Broken/RestApi/Data/Chanel.java rename to src/main/java/net/Broken/RestApi/Data/ChanelData.java index 7bdca94..57e3b5c 100644 --- a/src/main/java/net/Broken/RestApi/Data/Chanel.java +++ b/src/main/java/net/Broken/RestApi/Data/ChanelData.java @@ -1,11 +1,14 @@ package net.Broken.RestApi.Data; -public class Chanel { +/** + * Data for JSON Parsing + */ +public class ChanelData { public String name; public String id; public int pos; - public Chanel(String name, String id, int pos) { + public ChanelData(String name, String id, int pos) { this.name = name; this.id = id; this.pos = pos; diff --git a/src/main/java/net/Broken/RestApi/Data/CommandPostData.java b/src/main/java/net/Broken/RestApi/Data/CommandPostData.java index 1d73cc5..a119623 100644 --- a/src/main/java/net/Broken/RestApi/Data/CommandPostData.java +++ b/src/main/java/net/Broken/RestApi/Data/CommandPostData.java @@ -1,6 +1,8 @@ package net.Broken.RestApi.Data; - +/** + * Data for JSON Parsing + */ public class CommandPostData { public String command; public boolean onHead; diff --git a/src/main/java/net/Broken/RestApi/Data/CommandResponseData.java b/src/main/java/net/Broken/RestApi/Data/CommandResponseData.java index ffea0d8..1d349d6 100644 --- a/src/main/java/net/Broken/RestApi/Data/CommandResponseData.java +++ b/src/main/java/net/Broken/RestApi/Data/CommandResponseData.java @@ -1,7 +1,9 @@ package net.Broken.RestApi.Data; import com.fasterxml.jackson.annotation.JsonInclude; - +/** + * Data for JSON Parsing + */ @JsonInclude(JsonInclude.Include.NON_NULL) public class CommandResponseData { public String Commande; diff --git a/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java b/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java index 9e23a62..9085374 100644 --- a/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java +++ b/src/main/java/net/Broken/RestApi/Data/CurrentMusicData.java @@ -5,7 +5,9 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; import com.sedmelluq.discord.lavaplayer.track.AudioTrackState; - +/** + * Data for JSON Parsing + */ @JsonInclude(JsonInclude.Include.NON_NULL) public class CurrentMusicData { private final UserAudioTrackData info; diff --git a/src/main/java/net/Broken/RestApi/Data/PlaylistData.java b/src/main/java/net/Broken/RestApi/Data/PlaylistData.java index 97992aa..2a3acd1 100644 --- a/src/main/java/net/Broken/RestApi/Data/PlaylistData.java +++ b/src/main/java/net/Broken/RestApi/Data/PlaylistData.java @@ -3,7 +3,9 @@ package net.Broken.RestApi.Data; import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; import java.util.List; - +/** + * Data for JSON Parsing + */ public class PlaylistData { private List list; diff --git a/src/main/java/net/Broken/RestApi/Data/UserAudioTrackData.java b/src/main/java/net/Broken/RestApi/Data/UserAudioTrackData.java index d834fa0..7bb6bbf 100644 --- a/src/main/java/net/Broken/RestApi/Data/UserAudioTrackData.java +++ b/src/main/java/net/Broken/RestApi/Data/UserAudioTrackData.java @@ -2,7 +2,9 @@ package net.Broken.RestApi.Data; import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; import net.Broken.audio.UserAudioTrack; - +/** + * Data for JSON Parsing + */ public class UserAudioTrackData { private String user; private AudioTrackInfo audioTrackInfo; @@ -14,7 +16,7 @@ public class UserAudioTrackData { public UserAudioTrackData(UserAudioTrack userAudioTrack){ this.audioTrackInfo = userAudioTrack.getAudioTrack().getInfo(); - this.user = userAudioTrack.getSubmitedUser().getName(); + this.user = userAudioTrack.getSubmittedUser().getName(); } public String getUser() { diff --git a/src/main/java/net/Broken/RestApi/Data/UserManager/CheckResposeData.java b/src/main/java/net/Broken/RestApi/Data/UserManager/CheckResposeData.java index b169111..7f391e1 100644 --- a/src/main/java/net/Broken/RestApi/Data/UserManager/CheckResposeData.java +++ b/src/main/java/net/Broken/RestApi/Data/UserManager/CheckResposeData.java @@ -1,5 +1,8 @@ package net.Broken.RestApi.Data.UserManager; +/** + * Data for JSON Parsing + */ public class CheckResposeData { public boolean accepted; public String name; diff --git a/src/main/java/net/Broken/RestApi/Data/UserManager/ConfirmData.java b/src/main/java/net/Broken/RestApi/Data/UserManager/ConfirmData.java index 9aad50b..1e7b537 100644 --- a/src/main/java/net/Broken/RestApi/Data/UserManager/ConfirmData.java +++ b/src/main/java/net/Broken/RestApi/Data/UserManager/ConfirmData.java @@ -1,5 +1,8 @@ package net.Broken.RestApi.Data.UserManager; +/** + * Data for JSON Parsing + */ public class ConfirmData { public String id; public String checkToken; diff --git a/src/main/java/net/Broken/RestApi/Data/UserManager/UserConnectionData.java b/src/main/java/net/Broken/RestApi/Data/UserManager/UserConnectionData.java index 77563a0..9ef2088 100644 --- a/src/main/java/net/Broken/RestApi/Data/UserManager/UserConnectionData.java +++ b/src/main/java/net/Broken/RestApi/Data/UserManager/UserConnectionData.java @@ -1,5 +1,8 @@ package net.Broken.RestApi.Data.UserManager; +/** + * Data for JSON Parsing + */ public class UserConnectionData { public boolean accepted; public String token; diff --git a/src/main/java/net/Broken/RestApi/Data/UserManager/UserInfoData.java b/src/main/java/net/Broken/RestApi/Data/UserManager/UserInfoData.java index c5edf0e..9a099a4 100644 --- a/src/main/java/net/Broken/RestApi/Data/UserManager/UserInfoData.java +++ b/src/main/java/net/Broken/RestApi/Data/UserManager/UserInfoData.java @@ -1,5 +1,8 @@ package net.Broken.RestApi.Data.UserManager; +/** + * Data for JSON Parsing + */ public class UserInfoData { public String name; public String password; diff --git a/src/main/java/net/Broken/RestApi/MusicWebAPIController.java b/src/main/java/net/Broken/RestApi/MusicWebAPIController.java index 8f1706b..4b35b96 100644 --- a/src/main/java/net/Broken/RestApi/MusicWebAPIController.java +++ b/src/main/java/net/Broken/RestApi/MusicWebAPIController.java @@ -2,19 +2,15 @@ package net.Broken.RestApi; import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; import com.sedmelluq.discord.lavaplayer.track.AudioTrack; -import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; import net.Broken.Commands.Music; import net.Broken.DB.Entity.UserEntity; import net.Broken.DB.Repository.UserRepository; import net.Broken.MainBot; import net.Broken.RestApi.Data.*; -import net.Broken.RestApi.Data.UserManager.CheckResposeData; -import net.Broken.RestApi.Data.UserManager.UserInfoData; import net.Broken.Tools.UserManager.Exceptions.UnknownTokenException; -import net.Broken.Tools.UserManager.Exceptions.UserNotFoundException; -import net.Broken.Tools.UserManager.UserRegister; +import net.Broken.Tools.UserManager.UserUtils; import net.Broken.audio.FindGeneral; -import net.Broken.audio.NotConectedException; +import net.Broken.audio.NotConnectedException; import net.Broken.audio.NullMusicManager; import net.dv8tion.jda.core.entities.VoiceChannel; import org.apache.logging.log4j.LogManager; @@ -22,7 +18,6 @@ import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -32,18 +27,18 @@ import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; -// import net.Broken.DB.Repository.SavedPlaylistRepository; +/** + * Rest Api Controller for /api/music + */ @RestController @RequestMapping("/api/music/") public class MusicWebAPIController { Logger logger = LogManager.getLogger(); -// @Autowired -// public SavedPlaylistRepository savedPlaylist; @Autowired UserRepository userRepository; - UserRegister userRegister = UserRegister.getInstance(); + UserUtils userUtils = UserUtils.getInstance(); @RequestMapping("/currentMusicInfo") @@ -52,15 +47,15 @@ public class MusicWebAPIController { if(musicCommande.audio.getGuild().getAudioManager().isConnected()){ try { - AudioPlayer player = musicCommande.audio.getMusicManager().player; + AudioPlayer player = musicCommande.audio.getGuildMusicManager().player; AudioTrack currentTrack = player.getPlayingTrack(); if(currentTrack == null) { return new CurrentMusicData(null,0, "STOP",false); } - UserAudioTrackData uat = new UserAudioTrackData(musicCommande.audio.getMusicManager().scheduler.getCurrentPlayingTrack()); + UserAudioTrackData uat = new UserAudioTrackData(musicCommande.audio.getGuildMusicManager().scheduler.getCurrentPlayingTrack()); return new CurrentMusicData(uat, currentTrack.getPosition(), currentTrack.getState().toString(), player.isPaused()); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { return new CurrentMusicData(null,0, "STOP",false); } }else @@ -74,9 +69,9 @@ public class MusicWebAPIController { Music musicCommande = (Music) MainBot.commandes.get("music"); List list = null; try { - list = musicCommande.getAudioManager().getMusicManager().scheduler.getList(); + list = musicCommande.getAudioManager().getGuildMusicManager().scheduler.getList(); return new PlaylistData(list); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { return new PlaylistData(list); } } @@ -87,7 +82,7 @@ public class MusicWebAPIController { if(data.command != null) { if(data.token != null) { try { - UserEntity user = userRegister.getUserWithApiToken(userRepository, data.token); + UserEntity user = userUtils.getUserWithApiToken(userRepository, data.token); logger.info("receive command " + data.command + " from " + request.getRemoteAddr() + " USER: " + user.getName()); Music musicCommande = (Music) MainBot.commandes.get("music"); @@ -115,35 +110,14 @@ public class MusicWebAPIController { } @RequestMapping(value = "/getChanel", method = RequestMethod.GET) - public List getChanel(){ - List temp = new ArrayList<>(); + public List getChanel(){ + List temp = new ArrayList<>(); for(VoiceChannel aChanel : FindGeneral.find(MainBot.jda.getGuilds().get(0)).getVoiceChannels()){ - temp.add(new Chanel(aChanel.getName(),aChanel.getId(),aChanel.getPosition())); + temp.add(new ChanelData(aChanel.getName(),aChanel.getId(),aChanel.getPosition())); } return temp; } - - - -// DB Test Ignore it - -// @RequestMapping(value = "/test", method = RequestMethod.GET) -// public ResponseEntity test(){ -// SavedPlaylistEntity savedPlaylistEntity = new SavedPlaylistEntity(); -// savedPlaylistEntity.setAutorName("Test"); -// savedPlaylistEntity.setName("Playlist de test"); -// savedPlaylist.save(savedPlaylistEntity); -// logger.info(savedPlaylistEntity); -// return new ResponseEntity("OK",HttpStatus.OK); -// } -// @GetMapping(path="/all") -// public @ResponseBody Iterable getAllUsers() { -// // This returns a JSON or XML with the users -// return savedPlaylist.findAll(); -// } - - } diff --git a/src/main/java/net/Broken/RestApi/UserManagerAPIController.java b/src/main/java/net/Broken/RestApi/UserManagerAPIController.java index 846dd72..d0b79f7 100644 --- a/src/main/java/net/Broken/RestApi/UserManagerAPIController.java +++ b/src/main/java/net/Broken/RestApi/UserManagerAPIController.java @@ -4,7 +4,6 @@ import net.Broken.DB.Entity.PendingUserEntity; import net.Broken.DB.Entity.UserEntity; import net.Broken.DB.Repository.PendingUserRepository; import net.Broken.DB.Repository.UserRepository; -import net.Broken.MainBot; import net.Broken.RestApi.Data.UserManager.CheckResposeData; import net.Broken.RestApi.Data.UserManager.ConfirmData; import net.Broken.RestApi.Data.UserManager.UserConnectionData; @@ -13,7 +12,7 @@ import net.Broken.Tools.UserManager.Exceptions.PasswordNotMatchException; import net.Broken.Tools.UserManager.Exceptions.TokenNotMatch; import net.Broken.Tools.UserManager.Exceptions.UserAlreadyRegistered; import net.Broken.Tools.UserManager.Exceptions.UserNotFoundException; -import net.Broken.Tools.UserManager.UserRegister; +import net.Broken.Tools.UserManager.UserUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +24,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; + +/** + * Rest Api controller for /api/userManagement + */ @RestController @RequestMapping("/api/userManagement") public class UserManagerAPIController { @@ -38,14 +41,14 @@ public class UserManagerAPIController { @Autowired private PasswordEncoder passwordEncoder; - UserRegister userRegister = UserRegister.getInstance(); + UserUtils userUtils = UserUtils.getInstance(); @RequestMapping(value = "/preRegister", method = RequestMethod.POST) public ResponseEntity command(@RequestBody UserInfoData data){ if(data != null && data.name != null) { try { - String id = userRegister.sendCheckToken(pendingUserRepository, userRepository, passwordEncoder, data); + String id = userUtils.sendCheckToken(pendingUserRepository, userRepository, passwordEncoder, data); return new ResponseEntity<>(new CheckResposeData(true, data.name, "Message sent", id), HttpStatus.OK); } catch (UserNotFoundException e) { logger.warn("User \"" + data.name + "\" not found!"); @@ -66,8 +69,8 @@ public class UserManagerAPIController { public ResponseEntity confirAccount(@RequestBody ConfirmData data){ //TODO move pending user to accepted and return right things try { - PendingUserEntity pUser = userRegister.confirmCheckToken(pendingUserRepository, Integer.parseInt(data.id), data.checkToken); - UserEntity user = new UserEntity(pUser, userRegister.generateApiToken()); + PendingUserEntity pUser = userUtils.confirmCheckToken(pendingUserRepository, Integer.parseInt(data.id), data.checkToken); + UserEntity user = new UserEntity(pUser, userUtils.generateApiToken()); userRepository.save(user); pendingUserRepository.delete(pUser); @@ -84,7 +87,7 @@ public class UserManagerAPIController { @RequestMapping(value = "/requestToken", method = RequestMethod.POST) public ResponseEntity requestToken(@RequestBody UserInfoData data){ try { - UserEntity user = userRegister.getUser(userRepository, passwordEncoder, data); + UserEntity user = userUtils.getUser(userRepository, passwordEncoder, data); return new ResponseEntity<>(new UserConnectionData(true, user.getName(), user.getApiToken(), ""), HttpStatus.OK); } catch (UserNotFoundException e) { diff --git a/src/main/java/net/Broken/Tools/AntiSpam.java b/src/main/java/net/Broken/Tools/AntiSpam.java index 00d3355..6d0dddb 100644 --- a/src/main/java/net/Broken/Tools/AntiSpam.java +++ b/src/main/java/net/Broken/Tools/AntiSpam.java @@ -17,22 +17,25 @@ import static java.lang.Thread.sleep; /** - * Created by seb65 on 20/10/2016. + * AntiSpam punishment system */ public class AntiSpam { - public Move move = new Move(); + Logger logger = LogManager.getLogger(); - + public Move move = new Move(); public AntiSpam() { - - - - //Constructeur - } - public void extermine(Member user, Guild serveur, GuildManager serveurManger, Boolean incrMulti, MessageReceivedEvent event){ + /** + * Send user to Spam role + * @param user User to punish + * @param guild Guild + * @param guildManager GuildManager + * @param incrMulti True for increment punishment time + * @param event Message Received Event + */ + public void extermine(Member user, Guild guild, GuildManager guildManager, Boolean incrMulti, MessageReceivedEvent event){ try { sleep(1000); } catch (InterruptedException e) { @@ -65,9 +68,9 @@ public class AntiSpam { if(!MainBot.spamUtils.get(user.getUser()).isOnSpam()) { MainBot.spamUtils.get(user.getUser()).setOnSpam(true); - List spm = serveur.getRolesByName("Spammer", false); + List spm = guild.getRolesByName("Spammer", false); try{ - move.exc(user, spm, true, serveur, serveurManger); + move.exc(user, spm, true, guild, guildManager); MainBot.spamUtils.get(user.getUser()).addMessage(event.getTextChannel().sendMessage(EmbedMessageUtils.getSpamExtermine(user,MainBot.spamUtils.get(user.getUser()).getMultip())).complete()); MainBot.spamUtils.get(user.getUser()).setMinuteur(new Minuteur(MainBot.spamUtils.get(user.getUser()).getMultip(), move.user, move.saveRoleUser, move.serveur, move.serveurManager,event)); MainBot.spamUtils.get(user.getUser()).launchMinuteur(); @@ -89,6 +92,9 @@ public class AntiSpam { } + /** + * Timer to auto remove user from Spam role + */ public class Minuteur extends Thread{ public TextChannel chanel; public List saveRoleUser; diff --git a/src/main/java/net/Broken/Tools/Command/CommandLoader.java b/src/main/java/net/Broken/Tools/Command/CommandLoader.java index 9bc7131..e130fa8 100644 --- a/src/main/java/net/Broken/Tools/Command/CommandLoader.java +++ b/src/main/java/net/Broken/Tools/Command/CommandLoader.java @@ -10,8 +10,16 @@ import org.reflections.util.ConfigurationBuilder; import java.util.Set; + +/** + * Find and load bot's command + */ public class CommandLoader { private static Logger logger = LogManager.getLogger(); + + /** + * Search all implemented Command interface class and add it to MainBot.commands HashMap + */ public static void load(){ logger.info("Loading Command..."); Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage( diff --git a/src/main/java/net/Broken/Tools/Command/CommandParser.java b/src/main/java/net/Broken/Tools/Command/CommandParser.java index 3160f12..1918344 100644 --- a/src/main/java/net/Broken/Tools/Command/CommandParser.java +++ b/src/main/java/net/Broken/Tools/Command/CommandParser.java @@ -8,11 +8,18 @@ import java.util.ArrayList; import java.util.Arrays; /** - * Created by seb65 on 19/10/2016. + * */ public class CommandParser { private Logger logger = LogManager.getLogger(); + + /** + * Parse raw received string. + * @param brt Raw command string. + * @param e Event + * @return Readable container that contain all useful data + */ public CommandContainer parse(String brt, MessageReceivedEvent e) { ArrayList split =new ArrayList(); @@ -39,6 +46,10 @@ public class CommandParser { return new CommandContainer(brut, sansTete, splitSansTete, commande, args, e); } + + /** + * Container + */ public class CommandContainer{ public final String brut; public final String sansTete; diff --git a/src/main/java/net/Broken/Tools/Command/NumberedCommande.java b/src/main/java/net/Broken/Tools/Command/NumberedCommande.java index c8ab314..2456bc2 100644 --- a/src/main/java/net/Broken/Tools/Command/NumberedCommande.java +++ b/src/main/java/net/Broken/Tools/Command/NumberedCommande.java @@ -2,7 +2,6 @@ package net.Broken.Tools.Command; import net.Broken.Commande; import net.Broken.Tools.FindContentOnWebPage; import net.Broken.Tools.LimitChecker; -import net.Broken.Tools.Redirection; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -12,18 +11,24 @@ import java.net.HttpURLConnection; import java.net.URL; /** - * Created by seb65 on 07/11/2016. + * Abstact class used for all command that need to find the max number of page on a web site. */ public abstract class NumberedCommande implements Commande{ private Logger logger = LogManager.getLogger(); - public String HELP="T'es sérieux la?"; - int minNumber = 1; - int maxNumber = -1; - String baseURL; - String divClass; - String htmlType; + private int minNumber = 1; + private int maxNumber = -1; + private String baseURL; + private String divClass; + private String htmlType; + /** + * Default constructor + * @param logger Logger used for logs + * @param baseURL WebSite base url + * @param divClass DivClass to search to extract image + * @param htmlType HTML tag to extract image (img) + */ public NumberedCommande(Logger logger, String baseURL, String divClass, String htmlType) { this.logger = logger; this.baseURL = baseURL; @@ -38,11 +43,6 @@ public abstract class NumberedCommande implements Commande{ } } - @Override - public boolean called(String[] args, MessageReceivedEvent event) { - return false; - } - @Override public void action(String[] args, MessageReceivedEvent event) { try @@ -117,10 +117,5 @@ public abstract class NumberedCommande implements Commande{ } - @Override - public void executed(boolean success, MessageReceivedEvent event) { - - } - } diff --git a/src/main/java/net/Broken/Tools/DayListener/DayListener.java b/src/main/java/net/Broken/Tools/DayListener/DayListener.java index 7d46e81..2c6162e 100644 --- a/src/main/java/net/Broken/Tools/DayListener/DayListener.java +++ b/src/main/java/net/Broken/Tools/DayListener/DayListener.java @@ -9,30 +9,49 @@ import java.util.Calendar; import java.util.GregorianCalendar; /** - * Created by seb65 on 09/11/2016. + * Day change listener */ public class DayListener extends Thread { + private Logger logger = LogManager.getLogger(); private Calendar calendar; private int previousDay; - private ArrayList listeners = new ArrayList<>(); - private Logger logger = LogManager.getLogger(); + /** + * List of listeners to need to be triggered + */ + private ArrayList listeners = new ArrayList<>(); + private static DayListener INSTANCE = new DayListener(); + + + /** + * Default private constructor + */ private DayListener() { calendar = Calendar.getInstance(); previousDay = calendar.get(GregorianCalendar.DAY_OF_MONTH); } - private static DayListener INSTANCE = new DayListener(); + /** + * Singleton + * @return Unique DayListener instance. + */ public static DayListener getInstance() { return INSTANCE; } + /** + * Add Listener who will be triggered + * @param listener + */ public void addListener(NewDayListener listener){ listeners.add(listener); } + /** + * Trigger all listeners + */ public void trigger(){ for(NewDayListener listener : listeners){ listener.onNewDay(); @@ -40,6 +59,9 @@ public class DayListener extends Thread { } + /** + * Thread loop + */ @Override public void run() { while(true) diff --git a/src/main/java/net/Broken/Tools/DayListener/Listeners/DailyMadame.java b/src/main/java/net/Broken/Tools/DayListener/Listeners/DailyMadame.java index f824270..212c99b 100644 --- a/src/main/java/net/Broken/Tools/DayListener/Listeners/DailyMadame.java +++ b/src/main/java/net/Broken/Tools/DayListener/Listeners/DailyMadame.java @@ -9,8 +9,11 @@ import org.apache.logging.log4j.Logger; import java.io.IOException; +/** + * Daily Listener for DailyMadame + */ public class DailyMadame implements NewDayListener{ - Logger logger = LogManager.getLogger(); + private Logger logger = LogManager.getLogger(); @Override public void onNewDay() { Redirection redirect = new Redirection(); diff --git a/src/main/java/net/Broken/Tools/DayListener/Listeners/ResetSpam.java b/src/main/java/net/Broken/Tools/DayListener/Listeners/ResetSpam.java index 60261a2..3382a24 100644 --- a/src/main/java/net/Broken/Tools/DayListener/Listeners/ResetSpam.java +++ b/src/main/java/net/Broken/Tools/DayListener/Listeners/ResetSpam.java @@ -6,6 +6,9 @@ import net.dv8tion.jda.core.exceptions.RateLimitedException; import java.util.GregorianCalendar; +/** + * Daily spam reset + */ public class ResetSpam implements NewDayListener { @Override public void onNewDay() { diff --git a/src/main/java/net/Broken/Tools/DayListener/NewDayListener.java b/src/main/java/net/Broken/Tools/DayListener/NewDayListener.java index 54078fd..c0d706a 100644 --- a/src/main/java/net/Broken/Tools/DayListener/NewDayListener.java +++ b/src/main/java/net/Broken/Tools/DayListener/NewDayListener.java @@ -1,5 +1,11 @@ package net.Broken.Tools.DayListener; +/** + * DayListener interface + */ public interface NewDayListener { + /** + * Executed on new day + */ void onNewDay(); } diff --git a/src/main/java/net/Broken/Tools/EmbedMessageUtils.java b/src/main/java/net/Broken/Tools/EmbedMessageUtils.java index 93bc8db..ae1df44 100644 --- a/src/main/java/net/Broken/Tools/EmbedMessageUtils.java +++ b/src/main/java/net/Broken/Tools/EmbedMessageUtils.java @@ -11,6 +11,9 @@ import java.time.Instant; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +/** + * Pre build Message Embed + */ public class EmbedMessageUtils { public static MessageEmbed getUnknowCommand() { return new EmbedBuilder().setTitle(":warning: Commande inconnue! :warning:").setDescription(":arrow_right: Utilisez `//help` pour voirs les commandes disponible.").setColor(Color.orange).setFooter("bot.seb6596.ovh", MainBot.jda.getSelfUser().getAvatarUrl()).setTimestamp(Instant.now()).build(); diff --git a/src/main/java/net/Broken/Tools/FindContentOnWebPage.java b/src/main/java/net/Broken/Tools/FindContentOnWebPage.java index e3fc333..68f7446 100644 --- a/src/main/java/net/Broken/Tools/FindContentOnWebPage.java +++ b/src/main/java/net/Broken/Tools/FindContentOnWebPage.java @@ -6,12 +6,17 @@ import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; -/** - * Created by sebastien on 10/05/17. - */ public class FindContentOnWebPage { + /** + * Find picture URL on webPage + * @param url Web Page URL + * @param divClass Div class where the picture is + * @param htmlType HTML tag of image (img) + * @return Picture URL + * @throws IOException + */ public static String doYourJob(String url, String divClass, String htmlType) throws IOException { - String source = getUrlSource(url); + String source = getSourceUrl(url); int divIndex = source.indexOf(divClass); String sub = source.substring(divIndex); // System.out.println(sub); @@ -24,7 +29,13 @@ public class FindContentOnWebPage { return split[0]; } - public static String getUrlSource(String url) throws IOException { + /** + * Get source code of web page + * @param url Web page URL + * @return Web page source as String + * @throws IOException + */ + public static String getSourceUrl(String url) throws IOException { URL urlC = new URL(url); URLConnection yc = urlC.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader( diff --git a/src/main/java/net/Broken/Tools/LimitChecker.java b/src/main/java/net/Broken/Tools/LimitChecker.java index fff834c..f341403 100644 --- a/src/main/java/net/Broken/Tools/LimitChecker.java +++ b/src/main/java/net/Broken/Tools/LimitChecker.java @@ -9,12 +9,19 @@ import java.net.HttpURLConnection; import java.net.URL; /** - * Created by seb65 on 20/03/2017. + * Find max webPage for web site like baseURL.com/number-2/ */ public class LimitChecker { static Logger logger = LogManager.getLogger(); + /** + * Check max page url for web site like baseURL.com/number-2/ + * @param baseURL Base url without numbers + * @param minNumber Start number + * @return max Number + * @throws IOException + */ public static int doYourJob(String baseURL, int minNumber) throws IOException { int number = minNumber; URL u = null; diff --git a/src/main/java/net/Broken/Tools/MessageTimeOut.java b/src/main/java/net/Broken/Tools/MessageTimeOut.java index df33d1e..a641ce1 100644 --- a/src/main/java/net/Broken/Tools/MessageTimeOut.java +++ b/src/main/java/net/Broken/Tools/MessageTimeOut.java @@ -9,10 +9,14 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +/** + * Auto dell message util + */ public class MessageTimeOut extends Thread{ List messages; int second; Logger logger = LogManager.getLogger(); + public MessageTimeOut(List messages, int second) { this.messages = messages; this.second = second; diff --git a/src/main/java/net/Broken/Tools/Moderateur.java b/src/main/java/net/Broken/Tools/Moderateur.java index c8fc8de..1ef9ba9 100644 --- a/src/main/java/net/Broken/Tools/Moderateur.java +++ b/src/main/java/net/Broken/Tools/Moderateur.java @@ -14,7 +14,7 @@ import org.apache.logging.log4j.Logger; import java.util.ArrayList; /** - * Created by Parayre on 24/10/2016. + * Auto spam utils TODO Rebuild all this shit! */ public class Moderateur { @@ -25,7 +25,16 @@ public class Moderateur { // Cette méthode récupère le dernier message est le rajoute à "historique" // SI (spam) retourne 1 (si l'user spam) // SINON retourne 0 - public int analyse(Member user, Guild serveur, GuildManager serveurManager, MessageReceivedEvent event){ + + /** + * Get last message and add it on history. After analyse for spam detection + * @param user User + * @param guild Guild + * @param guildManager Guild manager + * @param event Message received event + * @return 1 if detected as spam, else 0 + */ + public int analyse(Member user, Guild guild, GuildManager guildManager, MessageReceivedEvent event){ ArrayList thisUserHistory = new ArrayList<>();//Creer tableau pour la copie int i = 0; // variable de parcours de "historique" diff --git a/src/main/java/net/Broken/Tools/PrivateMessage.java b/src/main/java/net/Broken/Tools/PrivateMessage.java index 9b05c35..5e890d2 100644 --- a/src/main/java/net/Broken/Tools/PrivateMessage.java +++ b/src/main/java/net/Broken/Tools/PrivateMessage.java @@ -6,14 +6,29 @@ import net.dv8tion.jda.core.entities.User; import org.apache.logging.log4j.Logger; /** - * Created by seb65 on 04/09/2017. + * Private message utils */ public class PrivateMessage { + + /** + * Auto open private channel and send message + * @param user User to send message + * @param message Message to send + * @param logger Logger + */ public static void send(User user, String message, Logger logger){ user.openPrivateChannel().complete().sendMessage(message).queue(); } + + /** + * Auto open private channel and send message + * @param user User to send message + * @param message Message to send + * @param logger Logger + * @return Sended Message + */ public static Message send(User user, MessageEmbed message, Logger logger){ return user.openPrivateChannel().complete().sendMessage(message).complete(); diff --git a/src/main/java/net/Broken/Tools/Redirection.java b/src/main/java/net/Broken/Tools/Redirection.java index 50b8243..23d30e7 100644 --- a/src/main/java/net/Broken/Tools/Redirection.java +++ b/src/main/java/net/Broken/Tools/Redirection.java @@ -6,7 +6,7 @@ import java.net.URL; import java.net.URLConnection; /** - * Created by seb65 on 07/11/2016. + * Redirection URL Util */ public class Redirection { @@ -15,7 +15,12 @@ public class Redirection { } - + /** + * Return Redirected URL + * @param urlString Source URL + * @return Redirected URL + * @throws IOException + */ public String get(String urlString) throws IOException { URLConnection con = new URL(urlString).openConnection(); //System.out.println( "orignal url: " + con.getURL() ); diff --git a/src/main/java/net/Broken/Tools/ResourceLoader.java b/src/main/java/net/Broken/Tools/ResourceLoader.java index bb6e59e..e540fd5 100644 --- a/src/main/java/net/Broken/Tools/ResourceLoader.java +++ b/src/main/java/net/Broken/Tools/ResourceLoader.java @@ -15,6 +15,12 @@ public class ResourceLoader { private Logger logger = LogManager.getLogger(); + /** + * Get file contents as string for resource folder + * @param fileName Requested file + * @return File contents as string + * @throws FileNotFoundException + */ public String getFile(String fileName) throws FileNotFoundException { StringBuilder result = new StringBuilder(""); diff --git a/src/main/java/net/Broken/Tools/TableRenderer.java b/src/main/java/net/Broken/Tools/TableRenderer.java index 37aa2b3..aa81a21 100644 --- a/src/main/java/net/Broken/Tools/TableRenderer.java +++ b/src/main/java/net/Broken/Tools/TableRenderer.java @@ -8,6 +8,9 @@ import java.util.stream.IntStream; import org.apache.commons.lang3.StringUtils; +/** + * Utils to render table in block code + */ public class TableRenderer { private int width; @@ -20,19 +23,31 @@ public class TableRenderer { } + /** + * Set Table header(s) + * @param header Header(s) as String + */ public void setHeader(Object... header) { this.header = Arrays.asList(header); if (header.length > this.width) this.width = header.length; } - public void addRow(Object... header) { - List objects = Arrays.asList(header); + /** + * Add row to table + * @param content Content(s) as string + */ + public void addRow(Object... content) { + List objects = Arrays.asList(content); table.add(objects); - if (header.length > this.width) - this.width = header.length; + if (content.length > this.width) + this.width = content.length; } + /** + * Change default empty string + * @param str + */ public void setEmptyString(String str) { this.empty = str; } diff --git a/src/main/java/net/Broken/Tools/UserManager/UserRegister.java b/src/main/java/net/Broken/Tools/UserManager/UserUtils.java similarity index 74% rename from src/main/java/net/Broken/Tools/UserManager/UserRegister.java rename to src/main/java/net/Broken/Tools/UserManager/UserUtils.java index f3f583a..59e1c32 100644 --- a/src/main/java/net/Broken/Tools/UserManager/UserRegister.java +++ b/src/main/java/net/Broken/Tools/UserManager/UserUtils.java @@ -14,8 +14,6 @@ import net.dv8tion.jda.core.entities.MessageEmbed; import net.dv8tion.jda.core.entities.User; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.springframework.boot.autoconfigure.security.oauth2.resource.ResourceServerProperties; -import org.springframework.context.annotation.Bean; import org.springframework.security.crypto.password.PasswordEncoder; import java.io.FileNotFoundException; @@ -23,21 +21,37 @@ import java.security.SecureRandom; import java.util.List; import java.util.UUID; -public class UserRegister { - - +public class UserUtils { private Logger logger = LogManager.getLogger(); - private static UserRegister INSTANCE = new UserRegister(); - private UserRegister(){} + private static UserUtils INSTANCE = new UserUtils(); - public static UserRegister getInstance(){ + /** + * Private default constructor + */ + private UserUtils(){} + + /** + * Singleton + * @return Unique UserUtils instance + */ + public static UserUtils getInstance(){ return INSTANCE; } - + /** + * Check if user exist on Guild, if exist, generate and send checkTocken, create entry on PendingUser DB + * @param pendingUserRepository Pending user DB interface + * @param userRepository User DB interface + * @param passwordEncoder Password encoder + * @param userInfo Received data + * @return PendingUserEntity PK + * @throws UserNotFoundException User not found in guild + * @throws PasswordNotMatchException User already registered in PendingUser DB but password not match + * @throws UserAlreadyRegistered User already registered in User DB + */ public String sendCheckToken(PendingUserRepository pendingUserRepository, UserRepository userRepository, PasswordEncoder passwordEncoder, UserInfoData userInfo) throws UserNotFoundException, PasswordNotMatchException, UserAlreadyRegistered { logger.info("New registration for " + userInfo.name); @@ -102,6 +116,15 @@ public class UserRegister { } + /** + * Confirm user account + * @param pendingUserRepository Pending user DB interface + * @param id UserPendingEntity PK to cofirm + * @param checkToken received token + * @return PendingUserEntity + * @throws TokenNotMatch Given token not match + * @throws UserNotFoundException User not found in Pending user DB + */ public PendingUserEntity confirmCheckToken(PendingUserRepository pendingUserRepository, int id, String checkToken ) throws TokenNotMatch, UserNotFoundException { PendingUserEntity pendingUser = pendingUserRepository.findOne(id); if(pendingUser != null) { @@ -120,6 +143,15 @@ public class UserRegister { return pendingUser; } + /** + * Get user Entity + * @param userRepository User DB interface + * @param passwordEncoder Password encoder + * @param userInfoData Received data + * @return User Entity + * @throws UserNotFoundException User not found in User DB + * @throws PasswordNotMatchException Given password not match + */ public UserEntity getUser(UserRepository userRepository, PasswordEncoder passwordEncoder, UserInfoData userInfoData) throws UserNotFoundException, PasswordNotMatchException { List users = userRepository.findByName(userInfoData.name); if(users.size()<1){ @@ -140,6 +172,13 @@ public class UserRegister { } } + /** + * return token's UserEntity + * @param userRepository User DB interface + * @param token Received token + * @return User Entity + * @throws UnknownTokenException Can't find token on User DB + */ public UserEntity getUserWithApiToken(UserRepository userRepository, String token) throws UnknownTokenException { List users = userRepository.findByApiToken(token); if(users.size() > 0){ @@ -150,10 +189,18 @@ public class UserRegister { } + /** + * Generate API Token + * @return UUID String TODO Find something more secure + */ public String generateApiToken(){ return UUID.randomUUID().toString(); } + /** + * Generate short check token + * @return check token as string + */ private String generateCheckToken(){ SecureRandom random = new SecureRandom(); long longToken = Math.abs( random.nextLong() ); diff --git a/src/main/java/net/Broken/Tools/UserSpamUtils.java b/src/main/java/net/Broken/Tools/UserSpamUtils.java index e7e63d1..37d646f 100644 --- a/src/main/java/net/Broken/Tools/UserSpamUtils.java +++ b/src/main/java/net/Broken/Tools/UserSpamUtils.java @@ -5,6 +5,9 @@ import net.dv8tion.jda.core.entities.Message; import java.util.List; +/** + * Spam info for one user + */ public class UserSpamUtils { private AntiSpam.Minuteur minuteur; private Member user; diff --git a/src/main/java/net/Broken/audio/AudioM.java b/src/main/java/net/Broken/audio/AudioM.java index e6721ad..14c4b9f 100644 --- a/src/main/java/net/Broken/audio/AudioM.java +++ b/src/main/java/net/Broken/audio/AudioM.java @@ -4,7 +4,6 @@ import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler; import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager; import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers; -import com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager; import com.sedmelluq.discord.lavaplayer.tools.FriendlyException; import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist; import com.sedmelluq.discord.lavaplayer.track.AudioTrack; @@ -17,26 +16,42 @@ import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.Message; import net.dv8tion.jda.core.entities.User; import net.dv8tion.jda.core.entities.VoiceChannel; -import net.dv8tion.jda.core.events.guild.voice.GuildVoiceLeaveEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import javax.jws.soap.SOAPBinding; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class AudioM { - + /** + * Music manager for this guild + */ private GuildMusicManager musicManager; + /** + * Audio player manager for this guild + */ private AudioPlayerManager playerManager; + /** + * Current voice chanel (null if not connected) + */ private VoiceChannel playedChanel; + /** + * Time out for list message + */ private int listTimeOut = 30; + /** + * Extrem limit for playlist + */ private int listExtremLimit = 300; - private Logger logger = LogManager.getLogger(); + /** + * Current guild + */ private Guild guild; + private Logger logger = LogManager.getLogger(); + @@ -47,6 +62,14 @@ public class AudioM { this.guild = guild; } + /** + * Load audio track from url, connect to chanel if not connected + * @param event + * @param voiceChannel Voice channel to connect if no connected + * @param trackUrl Audio track url + * @param playlistLimit Limit of playlist + * @param onHead True for adding audio track on top of playlist + */ public void loadAndPlay(MessageReceivedEvent event, VoiceChannel voiceChannel, final String trackUrl, int playlistLimit, boolean onHead) { GuildMusicManager musicManager = getGuildAudioPlayer(guild); playedChanel = voiceChannel; @@ -109,6 +132,13 @@ public class AudioM { }); } + /** + * Load playlist to playlist + * @param playlist Loaded playlist + * @param playlistLimit Playlist limit + * @param user User who have submitted the playlist + * @param onHead True for adding audio track on top of playlist + */ public void playListLoader(AudioPlaylist playlist, int playlistLimit, User user, boolean onHead){ int i = 0; List tracks = playlist.getTracks(); @@ -135,6 +165,14 @@ public class AudioM { return musicManager; } + /** + * Add single track to playlist, auto-connect if not connected to vocal chanel + * @param guild guild + * @param channel Chanel for auto-connect + * @param musicManager Guild music manager + * @param track Track to add to playlist + * @param onHead True for adding audio track on top of playlist + */ public void play(Guild guild, VoiceChannel channel, GuildMusicManager musicManager, UserAudioTrack track,boolean onHead) { if(!guild.getAudioManager().isConnected()) guild.getAudioManager().openAudioConnection(channel); @@ -144,66 +182,66 @@ public class AudioM { musicManager.scheduler.addNext(track); } + /** + * Skip current track + * @param event + */ public void skipTrack(MessageReceivedEvent event) { GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); musicManager.scheduler.nextTrack(); - Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk("Musique suivante!")).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, MainBot.messageTimeOut).start(); + new MessageTimeOut(MainBot.messageTimeOut, message, event.getMessage()).start(); } + /** + * Pause current track + * @param event + */ public void pause(MessageReceivedEvent event) { GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); musicManager.scheduler.pause(); Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk("Musique en pause !")).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, MainBot.messageTimeOut).start(); + new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), message).start(); + } + /** + * Resume paused track + * @param event + */ public void resume (MessageReceivedEvent event) { GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); musicManager.scheduler.resume(); Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk("Reprise de la piste en cour !")).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, MainBot.messageTimeOut).start(); + new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), message).start(); } - public void info(MessageReceivedEvent event){ + /** + * Print current played track info + * @param event + */ + public void info(MessageReceivedEvent event) { GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); AudioTrackInfo info = musicManager.scheduler.getInfo(); UserAudioTrack userAudioTrack = musicManager.scheduler.getCurrentPlayingTrack(); - Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk(info.title+"\n"+info.uri+"\nSubmitted by: "+userAudioTrack.getSubmitedUser().getName())).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, MainBot.messageTimeOut).start(); + Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk(info.title + "\n" + info.uri + "\nSubmitted by: " + userAudioTrack.getSubmittedUser().getName())).complete(); + new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), message).start(); } - public void flush(MessageReceivedEvent event){ + public void flush(MessageReceivedEvent event){ GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); musicManager.scheduler.flush(); Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk("RAZ de la playlist!")).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, MainBot.messageTimeOut).start(); + new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), message).start(); } + /** + * Print current playlist content + * @param event + */ public void list(MessageReceivedEvent event){ GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); List list = musicManager.scheduler.getList(); @@ -220,44 +258,44 @@ public class AudioM { } } Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk("Playlist:\n\n"+resp.toString())).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, listTimeOut).start(); + new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), message).start(); } - - public void add(MessageReceivedEvent event,String url, int playListLimit, boolean onHead) { + /** + * Called by //add, only if already connected + * @param event + * @param url Audio track url + * @param playListLimit Limit of playlist + * @param onHead True for adding audio track on top of playlist + */ + public void add(MessageReceivedEvent event, String url, int playListLimit, boolean onHead) { if(playedChanel != null){ loadAndPlay(event,playedChanel, url, playListLimit,onHead); } else { Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicError("Aucune lecture en cour!")).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, MainBot.messageTimeOut).start(); + new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), message).start(); } } - + /** + * Stop current playing track and flush playlist + * @param event + */ public void stop (MessageReceivedEvent event) { musicManager.scheduler.stop(); musicManager.scheduler.flush(); if (event != null) { Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk("Arret de la musique!")).complete(); - List messages = new ArrayList(){{ - add(message); - add(event.getMessage()); - }}; - new MessageTimeOut(messages, MainBot.messageTimeOut).start(); + new MessageTimeOut(MainBot.messageTimeOut, event.getMessage(), message).start(); } } + /** + * Stop current playing track and flush playlist (no confirmation message) + */ public void stop () { GuildMusicManager musicManager = getGuildAudioPlayer(guild); @@ -267,11 +305,11 @@ public class AudioM { guild.getAudioManager().closeAudioConnection(); } - public GuildMusicManager getMusicManager() throws NullMusicManager, NotConectedException { + public GuildMusicManager getGuildMusicManager() throws NullMusicManager, NotConnectedException { if( musicManager == null) throw new NullMusicManager(); else if( playedChanel == null) - throw new NotConectedException(); + throw new NotConnectedException(); return musicManager; } diff --git a/src/main/java/net/Broken/audio/FindGeneral.java b/src/main/java/net/Broken/audio/FindGeneral.java index 223c914..1525609 100644 --- a/src/main/java/net/Broken/audio/FindGeneral.java +++ b/src/main/java/net/Broken/audio/FindGeneral.java @@ -8,9 +8,17 @@ import org.apache.logging.log4j.Logger; import java.util.List; - +/** + * Used to find general voice channels + */ public class FindGeneral { static Logger logger = LogManager.getLogger(); + + /** + * Search for 🤖 char on category name, if this category can't be find, auto create it + * @param guild Current guild + * @return General Category + */ public static Category find(Guild guild){ List categories = guild.getCategories(); Category finded = null; @@ -27,6 +35,11 @@ public class FindGeneral { } + /** + * Create default category "🤖 Salons Vocaux 🤖", and create basic voice channel on it. + * @param guild Current guild + * @return Brand new General Category + */ private static Category create(Guild guild){ logger.info("Can't find general voice chanel, creating it!"); Channel temp = guild.getController().createCategory("\uD83E\uDD16 Salons Vocaux \uD83E\uDD16").complete(); diff --git a/src/main/java/net/Broken/audio/NotConectedException.java b/src/main/java/net/Broken/audio/NotConectedException.java deleted file mode 100644 index 1c40122..0000000 --- a/src/main/java/net/Broken/audio/NotConectedException.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.Broken.audio; - -public class NotConectedException extends Exception { -} diff --git a/src/main/java/net/Broken/audio/NotConnectedException.java b/src/main/java/net/Broken/audio/NotConnectedException.java new file mode 100644 index 0000000..7edc342 --- /dev/null +++ b/src/main/java/net/Broken/audio/NotConnectedException.java @@ -0,0 +1,8 @@ +package net.Broken.audio; + + +/** + * Not connected Exception (Voice Channel) + */ +public class NotConnectedException extends Exception { +} diff --git a/src/main/java/net/Broken/audio/NullMusicManager.java b/src/main/java/net/Broken/audio/NullMusicManager.java index a32d1d3..8314a01 100644 --- a/src/main/java/net/Broken/audio/NullMusicManager.java +++ b/src/main/java/net/Broken/audio/NullMusicManager.java @@ -1,4 +1,7 @@ package net.Broken.audio; +/** + * Null music manager + */ public class NullMusicManager extends Exception { } diff --git a/src/main/java/net/Broken/audio/TrackScheduler.java b/src/main/java/net/Broken/audio/TrackScheduler.java index 88ca29b..08a96eb 100644 --- a/src/main/java/net/Broken/audio/TrackScheduler.java +++ b/src/main/java/net/Broken/audio/TrackScheduler.java @@ -12,9 +12,7 @@ import org.apache.logging.log4j.Logger; import java.util.ArrayList; import java.util.List; import java.util.concurrent.BlockingDeque; -import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; -import java.util.concurrent.LinkedBlockingQueue; /** * This class schedules tracks for the audio player. It contains the queue of tracks. @@ -51,6 +49,11 @@ public class TrackScheduler extends AudioEventAdapter { currentPlayingTrack = track; } } + + /** + * Add track on top of playlist + * @param track + */ public void addNext(UserAudioTrack track) { // Calling startTrack with the noInterrupt set to true will start the track only if nothing is currently playing. If // something is playing, it returns false and does nothing. In that case the player was already playing so this @@ -63,6 +66,7 @@ public class TrackScheduler extends AudioEventAdapter { } } + public void pause() { player.setPaused(true); } @@ -72,6 +76,7 @@ public class TrackScheduler extends AudioEventAdapter { } + public void stop(){ player.stopTrack(); this.currentPlayingTrack = null; @@ -89,7 +94,7 @@ public class TrackScheduler extends AudioEventAdapter { Object[] test = queue.toArray(); for(Object track: test){ UserAudioTrack casted = (UserAudioTrack) track; - temp.add(new UserAudioTrackData(casted.getSubmitedUser().getName(), casted.getAudioTrack().getInfo())); + temp.add(new UserAudioTrackData(casted.getSubmittedUser().getName(), casted.getAudioTrack().getInfo())); } return temp; } @@ -106,7 +111,7 @@ public class TrackScheduler extends AudioEventAdapter { for(UserAudioTrack track : queue){ if(track.getAudioTrack().getInfo().uri.equals(uri)){ if(!queue.remove(track)) { - logger.info("Delete failure!"); + logger.error("Delete failure!"); return false; } else { logger.info("Delete succeful"); diff --git a/src/main/java/net/Broken/audio/UserAudioTrack.java b/src/main/java/net/Broken/audio/UserAudioTrack.java index 85fbc8a..84df3db 100644 --- a/src/main/java/net/Broken/audio/UserAudioTrack.java +++ b/src/main/java/net/Broken/audio/UserAudioTrack.java @@ -3,6 +3,9 @@ package net.Broken.audio; import com.sedmelluq.discord.lavaplayer.track.AudioTrack; import net.dv8tion.jda.core.entities.User; +/** + * Container that link AudioTrack to who submit it (User) + */ public class UserAudioTrack{ private User user; private AudioTrack audioTrack; @@ -12,7 +15,7 @@ public class UserAudioTrack{ this.audioTrack = audioTrack; } - public User getSubmitedUser() { + public User getSubmittedUser() { return user; } diff --git a/src/main/java/net/Broken/audio/WebLoadUtils.java b/src/main/java/net/Broken/audio/WebLoadUtils.java index 3a5bf50..8608d6a 100644 --- a/src/main/java/net/Broken/audio/WebLoadUtils.java +++ b/src/main/java/net/Broken/audio/WebLoadUtils.java @@ -14,25 +14,34 @@ import org.apache.logging.log4j.Logger; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +/** + * Interface between WebApi and Music bot for submitting track + */ public class WebLoadUtils { ResponseEntity response; Logger logger = LogManager.getLogger(); - public WebLoadUtils(Music musicCommande, CommandPostData data, User user){ - AudioPlayerManager playerM = musicCommande.getAudioManager().getPlayerManager(); + /** + * Submit a track or playlist to Music bot + * @param musicCommand The current guild music command. + * @param data Received data from API + * @param user User who submit the track + */ + public WebLoadUtils(Music musicCommand, CommandPostData data, User user){ + AudioPlayerManager playerM = musicCommand.getAudioManager().getPlayerManager(); try { - AudioM audioM = musicCommande.getAudioManager(); - playerM.loadItemOrdered(musicCommande.getAudioManager().getMusicManager(), data.url, new AudioLoadResultHandler() { + AudioM audioM = musicCommand.getAudioManager(); + playerM.loadItemOrdered(musicCommand.getAudioManager().getGuildMusicManager(), data.url, new AudioLoadResultHandler() { @Override public void trackLoaded(AudioTrack track) { logger.info("Single Track detected from web!"); try { UserAudioTrack userAudioTrack = new UserAudioTrack(user, track); //TODO - audioM.play(audioM.getGuild(), audioM.getPlayedChanel(), audioM.getMusicManager(), userAudioTrack, data.onHead); + audioM.play(audioM.getGuild(), audioM.getPlayedChanel(), audioM.getGuildMusicManager(), userAudioTrack, data.onHead); response = new ResponseEntity<>(new CommandResponseData("ADD", "Loaded"), HttpStatus.OK); - } catch (NullMusicManager | NotConectedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException nullMusicManager) { nullMusicManager.printStackTrace(); } @@ -64,11 +73,15 @@ public class WebLoadUtils { while(response == null) Thread.sleep(10); - } catch (NullMusicManager | NotConectedException | InterruptedException nullMusicManager) { + } catch (NullMusicManager | NotConnectedException | InterruptedException nullMusicManager) { nullMusicManager.printStackTrace(); } } + /** + * Wait for the end of submit process and return ResponseEntity + * @return HTTP Response + */ public ResponseEntity getResponse(){ while(response == null) { try { diff --git a/src/main/java/net/Broken/webView/GeneralWebView.java b/src/main/java/net/Broken/webView/GeneralWebView.java index c16916e..34730ec 100644 --- a/src/main/java/net/Broken/webView/GeneralWebView.java +++ b/src/main/java/net/Broken/webView/GeneralWebView.java @@ -4,6 +4,9 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; +/** + * Web page controller for index + */ @Controller public class GeneralWebView { @RequestMapping("/") diff --git a/src/main/java/net/Broken/webView/MusicWebView.java b/src/main/java/net/Broken/webView/MusicWebView.java index 75092ed..73d203b 100644 --- a/src/main/java/net/Broken/webView/MusicWebView.java +++ b/src/main/java/net/Broken/webView/MusicWebView.java @@ -4,6 +4,9 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; +/** + * Web page controller for /music page + */ @Controller public class MusicWebView { @RequestMapping("/music") diff --git a/src/main/java/net/Broken/webView/MvcApplication.java b/src/main/java/net/Broken/webView/MvcApplication.java index fdd27e3..3ca4002 100644 --- a/src/main/java/net/Broken/webView/MvcApplication.java +++ b/src/main/java/net/Broken/webView/MvcApplication.java @@ -8,6 +8,9 @@ import org.springframework.web.servlet.resource.ContentVersionStrategy; import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter; import org.springframework.web.servlet.resource.VersionResourceResolver; +/** + * Configuration for js auto versioning + */ @Configuration public class MvcApplication extends WebMvcConfigurerAdapter { diff --git a/src/main/java/net/Broken/webView/ResisterWebView.java b/src/main/java/net/Broken/webView/RegisterWebView.java similarity index 86% rename from src/main/java/net/Broken/webView/ResisterWebView.java rename to src/main/java/net/Broken/webView/RegisterWebView.java index 3c0c246..537775c 100644 --- a/src/main/java/net/Broken/webView/ResisterWebView.java +++ b/src/main/java/net/Broken/webView/RegisterWebView.java @@ -6,8 +6,11 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +/** + * WebPage Controller for /register + */ @Controller -public class ResisterWebView { +public class RegisterWebView { @RequestMapping("/register") public String music(@RequestParam(value="id", required = true, defaultValue = "") String id, Model model){ model.addAttribute("id", id);