diff --git a/pom.xml b/pom.xml index 7c075f7..7185cbe 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,11 @@ brokkonaut - https://www.iani.de/nexus/content/groups/public + https://www.iani.de/nexus/repository/maven-releases/ + + + lunarakai + https://lunarakai.de/nexus/repository/maven-releases/ @@ -83,5 +87,17 @@ rssreader 3.6.0 + + + org.jsoup + jsoup + 1.18.1 + + + de.lunarakai + LunarUtils + 0.0.1 + lunarutils + diff --git a/src/main/java/de/lunarakai/cuberss/CubeRSS.java b/src/main/java/de/lunarakai/cuberss/CubeRSS.java index 20b5f64..61ad5aa 100644 --- a/src/main/java/de/lunarakai/cuberss/CubeRSS.java +++ b/src/main/java/de/lunarakai/cuberss/CubeRSS.java @@ -1,12 +1,15 @@ package de.lunarakai.cuberss; +import de.iani.cubesideutils.bukkit.commands.CommandRouter; +import de.lunarakai.cuberss.commands.TestRSSCommand; import org.bukkit.plugin.java.JavaPlugin; public final class CubeRSS extends JavaPlugin { @Override public void onEnable() { - // Plugin startup logic + CommandRouter commandRouter = new CommandRouter(getCommand("cuberss")); + commandRouter.addCommandMapping(new TestRSSCommand(this), "test"); } diff --git a/src/main/java/de/lunarakai/cuberss/commands/TestRSSCommand.java b/src/main/java/de/lunarakai/cuberss/commands/TestRSSCommand.java new file mode 100644 index 0000000..f0267e7 --- /dev/null +++ b/src/main/java/de/lunarakai/cuberss/commands/TestRSSCommand.java @@ -0,0 +1,87 @@ +package de.lunarakai.cuberss.commands; + +import com.apptasticsoftware.rssreader.Item; +import com.apptasticsoftware.rssreader.RssReader; +import de.iani.cubesideutils.NamedChatColor; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.bukkit.commands.exceptions.DisallowsCommandBlockException; +import de.iani.cubesideutils.bukkit.commands.exceptions.IllegalSyntaxException; +import de.iani.cubesideutils.bukkit.commands.exceptions.InternalCommandException; +import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException; +import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; +import de.iani.cubesideutils.commands.ArgsParser; +import de.lunarakai.cuberss.CubeRSS; +import de.lunarakai.lunarutils.StringUtils; +import de.lunarakai.lunarutils.chat.MessageUtils; +import java.io.IOException; +import java.util.List; +import java.util.Optional; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; + +public class TestRSSCommand extends SubCommand { + + private final CubeRSS plugin; + + public TestRSSCommand(CubeRSS plugin) { + this.plugin = plugin; + } + + @Override + public String getUsage() { + return ""; + } + + @Override + public boolean requiresPlayer() { + return true; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String commandString, ArgsParser args) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException { + Player player = (Player) sender; + if(args.remaining() != 1) { + sender.sendMessage(NamedChatColor.DARK_RED + commandString + getUsage()); + return true; + } + String url = args.getNext().trim(); + + if(!StringUtils.isValidURL(url)) { + MessageUtils.sendSimpleWarningMessage(player, "please enter a valid URL"); + return true; + } + + RssReader rssReader = new RssReader(); + try { + List items = rssReader.addItemExtension("content:encoded", Item::setComments).read(url).toList(); + + Optional title = items.getFirst().getTitle(); + title.ifPresent(string -> sender.sendMessage(NamedChatColor.BLUE + string)); + + Optional optionalAuthor = items.getFirst().getAuthor(); + optionalAuthor.ifPresent(string -> sender.sendMessage(NamedChatColor.AQUA + string)); + + Optional optionaltest = items.getFirst().getComments(); + if(optionaltest.isPresent()) { + Document parsedTest = Jsoup.parse(optionaltest.get()); + // todo: format html elements to readable string (for example new line at
  • ) + MessageUtils.sendSimpleInfoMessage(player, parsedTest.toString()); + } else { + Optional optionalDescription = items.getFirst().getDescription(); + optionalDescription.ifPresent(string -> sender.sendMessage(NamedChatColor.GOLD + string)); + } + + Optional optionalLink = items.getFirst().getGuid(); + optionalLink.ifPresent(string -> sender.sendMessage(NamedChatColor.AQUA + string)); + + Optional optionalDate = items.getFirst().getPubDate(); + optionalDate.ifPresent(string -> sender.sendMessage(NamedChatColor.GRAY + string)); + } catch (IOException e) { + throw new RuntimeException(e); + } + return true; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3f6f162..8287b17 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,3 +2,9 @@ name: CubeRSS version: '${project.version}' main: de.lunarakai.cuberss.CubeRSS api-version: '1.21' +depend: + - CubesideUtils + - LunarUtils +commands: + cuberss: + description: main command \ No newline at end of file