package de.lunarakai.blockfox.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.blockfox.BlockFoxPlugin; 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 BlockFoxPlugin plugin; public TestRSSCommand(BlockFoxPlugin 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; } }