From 90d7f0629775f9cf9bde0bc3c568dacccae94836 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 15 Oct 2023 20:19:06 +0300 Subject: [PATCH 01/93] v3.0.0 --- pom.xml | 39 +- .../com/github/yvasyliev/Application.java | 24 +- .../appenders/TelegramBotAppender.java | 34 +- .../bots/telegram/AbstractRedTelBot.java | 98 +++ .../yvasyliev/bots/telegram/RedTelBot.java | 118 +++ .../bots/telegram/TelegramPublisher.java | 362 +++++++++ .../bots/telegram/notifier/AdminNotifier.java | 32 + .../telegram/notifier/TelegramNotifier.java | 9 + .../github/yvasyliev/config/AppConfig.java | 150 ---- .../config/RedTelBotConfiguration.java | 97 +++ .../config/TelegramLoggerBotConfig.java | 15 - .../config/TelegramNotifierConfig.java | 24 + .../exceptions/VideoUrlParseException.java | 4 +- .../yvasyliev/model/dto/CallbackData.java | 8 + .../yvasyliev/model/dto/PostApprovedData.java | 10 + .../github/yvasyliev/model/dto/PostType.java | 10 + .../{ => model}/dto/RedditAccessToken.java | 4 +- .../model/dto/RedditPostApprovedData.java | 9 + .../yvasyliev/model/entity/BlockedAuthor.java | 25 + .../github/yvasyliev/model/entity/Post.java | 126 +++ .../github/yvasyliev/model/entity/State.java | 38 + .../yvasyliev/model/entity/UserCommand.java | 38 + .../github/yvasyliev/properties/AppData.java | 42 - .../yvasyliev/service/ThrowingBiConsumer.java | 17 + .../service/dao/AbstractService.java | 9 + .../service/dao/BlockedAuthorService.java | 34 + .../yvasyliev/service/dao/PostService.java | 19 + .../yvasyliev/service/dao/StateService.java | 20 + .../service/dao/UserCommandService.java | 26 + .../deserializers/ExpiresAtDeserializer.java | 2 +- .../deserializers/PostDeserializer.java | 59 ++ .../deserializers/mappers/GifPostMapper.java | 38 + .../mappers/PhotoGroupPostMapper.java | 63 ++ .../mappers/PhotoPostMapper.java | 55 ++ .../deserializers/mappers/PollPostMapper.java | 27 + .../deserializers/mappers/PostMapper.java | 20 + .../deserializers/mappers/TextPostMapper.java | 56 ++ .../mappers/VideoPostMapper.java | 54 ++ .../RedditAccessTokenFactoryBean.java} | 10 +- .../RedditAccessTokenRequestFactoryBean.java | 70 ++ .../service/reddit/RedditPostService.java | 48 +- .../service/reddit/RedditVideoDownloader.java | 4 +- .../reddit/api/GetRedditAccessToken.java | 63 +- .../service/reddit/api/GetSubredditNew.java | 732 +++++++++++++++++- .../telegram/callbacks/ApprovePost.java | 39 + .../telegram/callbacks/ApproveRedditPost.java | 37 + .../service/telegram/callbacks/Callback.java | 26 + .../telegram/commands/AddBlockedAuthor.java | 27 + .../telegram/commands/BlockAuthor.java | 22 + .../service/telegram/commands/Cancel.java | 22 + .../service/telegram/commands/Command.java | 31 + .../service/telegram/commands/Done.java | 16 + .../service/telegram/commands/GetBlocked.java | 24 + .../telegram/commands/PausePublishing.java | 21 + .../telegram/commands/PostSuggested.java | 60 ++ .../commands/RemoveBlockedAuthor.java | 28 + .../telegram/commands/ResumePublishing.java | 21 + .../service/telegram/commands/Start.java | 20 + .../service/telegram/commands/Stop.java | 22 + .../telegram/commands/SuggestPost.java | 22 + .../telegram/commands/UnblockAuthor.java | 22 + .../telegram/factory/UsernameParser.java | 38 + .../telegram/readers/BotResponseReader.java | 21 + .../telegram/AbstractTelegramBot.java | 23 - .../yvasyliev/telegram/TelegramLoggerBot.java | 8 - .../telegram/TelegramLoggerBotImpl.java | 31 - .../telegram/TelegramRepeaterBot.java | 10 - .../telegram/TelegramRepeaterBotImpl.java | 26 - .../yvasyliev/telegram/TelegramSenderBot.java | 25 - .../telegram/TelegramSenderBotImpl.java | 129 --- .../telegram/chain/FilterAuthorChain.java | 28 - .../telegram/chain/NOPRepeaterChain.java | 37 - .../telegram/chain/NsfwCheckChain.java | 15 - .../yvasyliev/telegram/chain/RepeatGif.java | 71 -- .../telegram/chain/RepeatMultiplePhotos.java | 113 --- .../telegram/chain/RepeatNestedPost.java | 40 - .../yvasyliev/telegram/chain/RepeatPhoto.java | 117 --- .../yvasyliev/telegram/chain/RepeatPoll.java | 47 -- .../yvasyliev/telegram/chain/RepeatText.java | 71 -- .../yvasyliev/telegram/chain/RepeatVideo.java | 82 -- .../chain/SubredditPostRepeaterChain.java | 30 - src/main/resources/hibernate.properties | 12 + src/main/resources/log4j2.xml | 4 + .../resources/responses/addblockedauthor.md | 5 + src/main/resources/responses/approvepost.md | 3 + src/main/resources/responses/blockauthor.md | 1 + src/main/resources/responses/cancel.md | 1 + src/main/resources/responses/done.md | 1 + src/main/resources/responses/getblocked.md | 3 + .../resources/responses/pausepublishing.md | 1 + src/main/resources/responses/postsuggested.md | 2 + .../responses/removeblockedauthor.md | 5 + .../resources/responses/resumepublishing.md | 1 + src/main/resources/responses/start.md | 5 + src/main/resources/responses/stop.md | 1 + src/main/resources/responses/suggestpost.md | 1 + src/main/resources/responses/unblockauthor.md | 1 + .../responses/usernamenotrecognized.md | 1 + 98 files changed, 2981 insertions(+), 1231 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java create mode 100644 src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java create mode 100644 src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java create mode 100644 src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java create mode 100644 src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java delete mode 100644 src/main/java/com/github/yvasyliev/config/AppConfig.java create mode 100644 src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java delete mode 100644 src/main/java/com/github/yvasyliev/config/TelegramLoggerBotConfig.java create mode 100644 src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/CallbackData.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/PostApprovedData.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/PostType.java rename src/main/java/com/github/yvasyliev/{ => model}/dto/RedditAccessToken.java (83%) create mode 100644 src/main/java/com/github/yvasyliev/model/dto/RedditPostApprovedData.java create mode 100644 src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java create mode 100644 src/main/java/com/github/yvasyliev/model/entity/Post.java create mode 100644 src/main/java/com/github/yvasyliev/model/entity/State.java create mode 100644 src/main/java/com/github/yvasyliev/model/entity/UserCommand.java delete mode 100644 src/main/java/com/github/yvasyliev/properties/AppData.java create mode 100644 src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java create mode 100644 src/main/java/com/github/yvasyliev/service/dao/AbstractService.java create mode 100644 src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java create mode 100644 src/main/java/com/github/yvasyliev/service/dao/PostService.java create mode 100644 src/main/java/com/github/yvasyliev/service/dao/StateService.java create mode 100644 src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java rename src/main/java/com/github/yvasyliev/{ => service}/deserializers/ExpiresAtDeserializer.java (91%) create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java create mode 100644 src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java rename src/main/java/com/github/yvasyliev/{factories/RedditAccessTokenFactory.java => service/factories/RedditAccessTokenFactoryBean.java} (70%) create mode 100644 src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/Done.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/AbstractTelegramBot.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBot.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBotImpl.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBot.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBotImpl.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/TelegramSenderBot.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/TelegramSenderBotImpl.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/FilterAuthorChain.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/NOPRepeaterChain.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/NsfwCheckChain.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/RepeatGif.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/RepeatMultiplePhotos.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/RepeatNestedPost.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/RepeatPhoto.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/RepeatPoll.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/RepeatText.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/RepeatVideo.java delete mode 100644 src/main/java/com/github/yvasyliev/telegram/chain/SubredditPostRepeaterChain.java create mode 100644 src/main/resources/hibernate.properties create mode 100644 src/main/resources/responses/addblockedauthor.md create mode 100644 src/main/resources/responses/approvepost.md create mode 100644 src/main/resources/responses/blockauthor.md create mode 100644 src/main/resources/responses/cancel.md create mode 100644 src/main/resources/responses/done.md create mode 100644 src/main/resources/responses/getblocked.md create mode 100644 src/main/resources/responses/pausepublishing.md create mode 100644 src/main/resources/responses/postsuggested.md create mode 100644 src/main/resources/responses/removeblockedauthor.md create mode 100644 src/main/resources/responses/resumepublishing.md create mode 100644 src/main/resources/responses/start.md create mode 100644 src/main/resources/responses/stop.md create mode 100644 src/main/resources/responses/suggestpost.md create mode 100644 src/main/resources/responses/unblockauthor.md create mode 100644 src/main/resources/responses/usernamenotrecognized.md diff --git a/pom.xml b/pom.xml index 51fd4c4..f460836 100644 --- a/pom.xml +++ b/pom.xml @@ -54,11 +54,16 @@ - - - - - + + + + + com.github.yvasyliev.Application true @@ -76,20 +81,22 @@ org.springframework spring-context - 6.0.7 + 6.0.12 org.telegram telegrambots - 6.5.0 + 6.8.0 + - commons-logging - commons-logging + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + - org.glassfish.hk2.external - aopalliance-repackaged + commons-codec + commons-codec @@ -108,5 +115,15 @@ log4j-core 2.20.0 + + com.h2database + h2 + 2.2.224 + + + org.hibernate.orm + hibernate-core + 6.3.1.Final + diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/Application.java index f3744b7..65c08d6 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/Application.java @@ -1,29 +1,21 @@ package com.github.yvasyliev; -import com.github.yvasyliev.config.AppConfig; -import com.github.yvasyliev.service.reddit.RedditPostService; -import com.github.yvasyliev.telegram.TelegramRepeaterBot; +import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.config.RedTelBotConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.AnnotationConfigApplicationContext; - -import java.io.IOException; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; public class Application { private static final Logger LOGGER = LoggerFactory.getLogger(Application.class); - public static void main(String[] args) { - var context = new AnnotationConfigApplicationContext(AppConfig.class); + public static void main(String[] args) throws TelegramApiException { + var context = new AnnotationConfigApplicationContext(RedTelBotConfiguration.class); context.registerShutdownHook(); - try { - var redditPostService = context.getBean(RedditPostService.class); - var newPosts = redditPostService.findNewPosts(); - - var telegramRepeaterBot = context.getBean(TelegramRepeaterBot.class); - telegramRepeaterBot.repeatSubredditPosts(newPosts); - } catch (IOException | InterruptedException e) { - LOGGER.error("Failed to find new Reddit posts.", e); - } + var redTelBot = context.getBean(RedTelBot.class); + redTelBot.startPolling(); + redTelBot.startPublishingPosts(); } } diff --git a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java index 47755e6..61c957f 100644 --- a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java +++ b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.appenders; -import com.github.yvasyliev.config.TelegramLoggerBotConfig; -import com.github.yvasyliev.telegram.TelegramLoggerBot; +import com.github.yvasyliev.bots.telegram.notifier.TelegramNotifier; +import com.github.yvasyliev.config.TelegramNotifierConfig; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Core; import org.apache.logging.log4j.core.Filter; @@ -24,12 +24,12 @@ @Plugin(name = "TelegramBotAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE) public class TelegramBotAppender extends AbstractAppender { - private final TelegramLoggerBot telegramLoggerBot; + private final TelegramNotifier telegramNotifier; protected TelegramBotAppender(String name, Filter filter, Layout layout, boolean ignoreExceptions, Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); - var applicationContext = new AnnotationConfigApplicationContext(TelegramLoggerBotConfig.class); - this.telegramLoggerBot = applicationContext.getBean(TelegramLoggerBot.class); + var applicationContext = new AnnotationConfigApplicationContext(TelegramNotifierConfig.class); + this.telegramNotifier = applicationContext.getBean(TelegramNotifier.class); } @PluginFactory @@ -41,21 +41,21 @@ public static TelegramBotAppender createAppender(@PluginAttribute("name") String public void append(LogEvent event) { var formattedMessage = event.getMessage().getFormattedMessage(); - try { - var stackTrace = getStackTrace(event.getThrown()); - if (stackTrace != null) { - formattedMessage = """ - %s - %s""".formatted(formattedMessage, stackTrace); - } + var stackTrace = getStackTrace(event.getThrown()); + if (stackTrace != null) { + formattedMessage = """ + %s + %s""".formatted(formattedMessage, stackTrace); + } - telegramLoggerBot.log(formattedMessage); - } catch (TelegramApiException | IOException e) { - throw new RuntimeException(e); + try { + telegramNotifier.notify(formattedMessage); + } catch (TelegramApiException e) { + e.printStackTrace(); } } - private String getStackTrace(Throwable throwable) throws IOException { + private String getStackTrace(Throwable throwable) { if (throwable == null) { return null; } @@ -63,6 +63,8 @@ private String getStackTrace(Throwable throwable) throws IOException { try (var stringWriter = new StringWriter(); var printWriter = new PrintWriter(stringWriter)) { throwable.printStackTrace(printWriter); return stringWriter.toString(); + } catch (IOException e) { + return "Failed to read stack trace: " + e; } } } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java new file mode 100644 index 0000000..32cdf58 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java @@ -0,0 +1,98 @@ +package com.github.yvasyliev.bots.telegram; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.telegram.telegrambots.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; +import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.api.objects.Update; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; + +public abstract class AbstractRedTelBot extends TelegramLongPollingBot { + @Value("${BOT_USERNAME}") + private String botUsername; + + @Value("${ADMIN_ID}") + private String adminId; + + @Value("${CHANNEL_ID}") + private String channelId; + + @Value("${GROUP_ID}") + private String groupId; + + @Autowired + private Executor delayedExecutor; + + public AbstractRedTelBot(String botToken) { + super(botToken); + } + + @Override + public void onUpdateReceived(Update update) { + } + + @Override + public String getBotUsername() { + return botUsername; + } + + public String getAdminId() { + return adminId; + } + + public String getChannelId() { + return channelId; + } + + public String getGroupId() { + return groupId; + } + + public Executor getDelayedExecutor() { + return delayedExecutor; + } + + public List executeDelayed(SendMediaGroup sendMediaGroup) throws TelegramApiException { + try { + return CompletableFuture + .supplyAsync(() -> { + try { + return execute(sendMediaGroup); + } catch (TelegramApiException e) { + throw new CompletionException(e); + } + }, + delayedExecutor + ) + .get(); + } catch (InterruptedException | ExecutionException e) { + throw new TelegramApiException(e); + } + } + + public Message executeDelayed(SendPhoto sendPhoto) throws TelegramApiException { + try { + return CompletableFuture + .supplyAsync(() -> { + try { + return execute(sendPhoto); + } catch (TelegramApiException e) { + throw new CompletionException(e); + } + }, + delayedExecutor + ) + .get(); + } catch (InterruptedException | ExecutionException e) { + throw new TelegramApiException(e); + } + } +} diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java new file mode 100644 index 0000000..bbbd544 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -0,0 +1,118 @@ +package com.github.yvasyliev.bots.telegram; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.dto.CallbackData; +import com.github.yvasyliev.model.entity.UserCommand; +import com.github.yvasyliev.service.dao.UserCommandService; +import com.github.yvasyliev.service.telegram.callbacks.Callback; +import com.github.yvasyliev.service.telegram.commands.Command; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.ApplicationContext; +import org.telegram.telegrambots.meta.TelegramBotsApi; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.api.objects.Update; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import org.telegram.telegrambots.meta.generics.BotSession; + +import java.util.List; +import java.util.Optional; + +public class RedTelBot extends TelegramPublisher { + private static final Logger LOGGER = LoggerFactory.getLogger(RedTelBot.class); + + @Autowired + private ApplicationContext context; + + @Autowired + private UserCommandService userCommandService; + + @Autowired + private ObjectMapper objectMapper; + + private BotSession botSession; + + public RedTelBot(@Value("${BOT_TOKEN}") String botToken) { + super(botToken); + } + + public void startPolling() throws TelegramApiException { + botSession = context.getBean(TelegramBotsApi.class).registerBot(this); + } + + public void stopPolling() { + botSession.stop(); + } + + @Override + public void onUpdatesReceived(List updates) { + var messages = updates + .stream() + .filter(Update::hasMessage) + .map(Update::getMessage) + .filter(Message::getIsAutomaticForward) + .toList(); + if (messages.size() == 10) { + var message = messages.get(0); + sendExtraPhotos(message.getMessageId(), message.getForwardFromMessageId()); + } + super.onUpdatesReceived(updates); + } + + @Override + public void onUpdateReceived(Update update) { + LOGGER.debug("Update received: {}", update); + if (update.hasMessage()) { + var message = update.getMessage(); + if (message.isUserMessage()) { + getCommand(message).ifPresent(command -> { + if (context.containsBean(command)) { + try { + context.getBean(command, Command.class).acceptWithException(message); + } catch (Exception e) { + LOGGER.error("Failed to perform command {}", command, e); + } + } else { + LOGGER.info("Unknown command: {}", command); + } + } + ); + } + } else if (update.hasCallbackQuery()) { + var callbackQuery = update.getCallbackQuery(); + var message = callbackQuery.getMessage(); + if (message.isUserMessage() && getAdminId().equals(callbackQuery.getFrom().getId().toString())) { + try { + var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); + context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); + } catch (JsonProcessingException e) { + LOGGER.error("Failed to parse callback data {}", callbackQuery.getData(), e); + } catch (Exception e) { + LOGGER.error("Failed to handle callback", e); + } + } + } + } + + private Optional getCommand(Message message) { + long userId = message.getFrom().getId(); + if (message.hasText()) { + var text = message.getText().trim(); + if (looksLikeCommand(text)) { + userCommandService.removeUserCommand(userId); + return Optional.of(text); + } + } + + return userCommandService + .getUserCommand(userId) + .map(UserCommand::getCommand); + } + + private boolean looksLikeCommand(String text) { + return text.matches("/\\w+"); + } +} diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java new file mode 100644 index 0000000..1eafdf6 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java @@ -0,0 +1,362 @@ +package com.github.yvasyliev.bots.telegram; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.dto.RedditPostApprovedData; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.service.dao.PostService; +import com.github.yvasyliev.service.dao.StateService; +import com.github.yvasyliev.service.reddit.RedditPostService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.function.ThrowingBiFunction; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.polls.SendPoll; +import org.telegram.telegrambots.meta.api.methods.send.SendAnimation; +import org.telegram.telegrambots.meta.api.methods.send.SendDocument; +import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; +import org.telegram.telegrambots.meta.api.methods.send.SendVideo; +import org.telegram.telegrambots.meta.api.objects.InputFile; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.api.objects.media.InputMedia; +import org.telegram.telegrambots.meta.api.objects.media.InputMediaPhoto; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Predicate; + +public abstract class TelegramPublisher extends AbstractRedTelBot { + private static final Logger LOGGER = LoggerFactory.getLogger(RedditPostService.class); + @Autowired + private ScheduledExecutorService executorService; + + @Autowired + private RedditPostService redditPostService; + + @Autowired + private PostService postService; + + private final AtomicBoolean publishing = new AtomicBoolean(true); + + @Autowired + private StateService stateService; + + @Autowired + private ObjectMapper objectMapper; + + private final Map postCandidates = new ConcurrentHashMap<>(); + + private final Map extraPhotos = new ConcurrentHashMap<>(); + + public TelegramPublisher(String botToken) { + super(botToken); + } + + public void pausePublishing() { + publishing.set(false); + } + + public void resumePublishing() { + publishing.set(true); + } + + public void stopPublishing() { + executorService.shutdown(); + } + + public void startPublishingPosts() { + executorService.scheduleWithFixedDelay(() -> { + if (publishing.get()) { + try { + var newPosts = redditPostService.findNewPosts(); + publishPosts(newPosts); + } catch (IOException | InterruptedException e) { + LOGGER.error("Failed to find new posts.", e); + } + } + }, 0, 10, TimeUnit.MINUTES); + } + + public void publishPosts(List posts) { + posts = new ArrayList<>(posts); +// posts.removeIf(post -> 1696321369 < post.getCreated()); + posts.forEach(this::publishPost); + } + + public void publishPost(Post post) { + var chatId = getChatId(post.isApproved()); + try { + var sentMessage = switch (post.getType()) { + case TEXT -> execute(new SendMessage(chatId, post.getText())); + case PHOTO -> sendPhotoPost(chatId, post); + case PHOTO_GROUP -> sendPhotoGroup(chatId, post); + case GIF -> sendGif(chatId, post); + case VIDEO -> sendVideo(chatId, post); + case POLL -> sendPoll(chatId, post); + }; + if (sentMessage != null && !post.isApproved()) { + askApprove(chatId, post); + postCandidates.put(post.getCreated(), post); + } + } catch (TelegramApiException e) { + LOGGER.error("Failed to send post: {}", post, e); + } catch (JsonProcessingException e) { + LOGGER.error("Failed to serialize post: {}", post, e); + } + stateService.setLastCreated(post.getCreated()); +// try { +// TimeUnit.SECONDS.sleep(10); +// } catch (InterruptedException e) { +// throw new RuntimeException(e); +// } + } + + private Message sendPoll(String chatId, Post post) throws TelegramApiException { + var sendPoll = SendPoll.builder() + .chatId(chatId) + .question(post.getText()) + .options(post.getOptions()) + .build(); + + return execute(sendPoll); + } + + private String getChatId(boolean approved) { + return approved ? getChannelId() : getAdminId(); + } + + private Message sendPhotoPost(String chatId, Post post) throws TelegramApiException { + try { + var sendPhoto = SendPhoto.builder() + .chatId(chatId) + .photo(new InputFile(post.getMediaUrl())) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .build(); + return execute(sendPhoto); + } catch (TelegramApiRequestException e) { + return retrySendPhoto(chatId, post, e); + } + } + + private Message retrySendPhoto(String chatId, Post post, TelegramApiRequestException requestException) throws TelegramApiException { + try { + return onException( + requestException, + ex -> "Bad Request: wrong file identifier/HTTP URL specified".equals(ex.getApiResponse()), + (inputStream, filename) -> { + var sendPhoto = SendPhoto.builder() + .chatId(chatId) + .photo(new InputFile(inputStream, filename)) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .build(); + return execute(sendPhoto); + }, + post + ); + } catch (TelegramApiRequestException e) { + return onException( + requestException, + ex -> "Bad Request: PHOTO_INVALID_DIMENSIONS".equals(ex.getApiResponse()), + (inputStream, filename) -> { + var sendPhoto = SendDocument.builder() + .chatId(chatId) + .document(new InputFile(inputStream, filename)) + .caption(post.getText()) + .build(); + return execute(sendPhoto); + }, + post + ); + } + } + + private Message onException( + TelegramApiRequestException e, + Predicate exceptionPredicate, + ThrowingBiFunction telegramApiCall, + Post post + ) throws TelegramApiException { + if (exceptionPredicate.negate().test(e)) { + throw e; + } + + return sendWithInputStream(telegramApiCall, post); + } + + private Message sendWithInputStream(ThrowingBiFunction telegramApiCall, Post post) throws TelegramApiException { + var mediaUrl = post.getMediaUrl(); + try (var inputStream = new URL(mediaUrl).openStream()) { + var filename = mediaUrl.substring(mediaUrl.lastIndexOf('/') + 1); + if (filename.contains("?")) { + filename = filename.substring(0, filename.indexOf("?")); + } + return telegramApiCall.applyWithException(inputStream, filename); + } catch (Exception e) { + throw new TelegramApiException(e); + } + } + + private List sendPhotoGroup(String chatId, Post post) throws TelegramApiException { + var pages = post.getPhotoUrlsPages(); + var text = post.getText(); + var hasSpoiler = post.isHasSpoiler(); + + var pagesAmount = pages.size(); + var caption = pagesAmount > 1 + ? """ + %s + + *More in comments 👇👇👇*""".formatted(text) + : text; + + var sendMediaGroup = sendMediaGroup(chatId, pages.get(0), hasSpoiler, null); + sendMediaGroup.getMedias().get(0).setCaption(caption); + + var publishedPost = execute(sendMediaGroup); + var messages = new ArrayList<>(publishedPost); + var messageId = publishedPost.get(0).getMessageId(); + + if (!post.isApproved()) { + for (var i = 1; i < pagesAmount; i++) { + var page = pages.get(i); + messages.addAll(page.size() > 1 + ? executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, messageId)) + : List.of(executeDelayed(sendPhoto(chatId, page.get(0), hasSpoiler, messageId))) + ); + } + } else { + extraPhotos.put(messageId, post); + } + + return messages; + } + + public List sendExtraPhotos(int replyMessageId, int forwardMessageId) { + var post = extraPhotos.remove(forwardMessageId); + + if (post == null) { + return List.of(); + } + + var hasSpoiler = post.isHasSpoiler(); + var pages = post.getPhotoUrlsPages(); + var pagesAmount = pages.size(); + var messages = new ArrayList(); + for (var i = 1; i < pagesAmount; i++) { + var page = pages.get(i); + try { + messages.addAll(page.size() > 1 + ? executeDelayed(sendMediaGroup(getGroupId(), page, hasSpoiler, replyMessageId)) + : List.of(executeDelayed(sendPhoto(getGroupId(), page.get(0), hasSpoiler, replyMessageId))) + ); + } catch (TelegramApiException e) { + LOGGER.error("Failed to send extra photos ({}) of {}", i, post, e); + break; + } + } + return messages; + } + + private SendMediaGroup sendMediaGroup(String chatId, List page, boolean hasSpoiler, Integer replyToMessageId) { + var inputMediaPhotos = page + .stream() + .map(photoUrl -> (InputMedia) InputMediaPhoto + .builder() + .media(photoUrl) + .hasSpoiler(hasSpoiler) + .parseMode(ParseMode.MARKDOWNV2) + .build() + ) + .toList(); + + return SendMediaGroup.builder() + .chatId(chatId) + .medias(inputMediaPhotos) + .replyToMessageId(replyToMessageId) + .build(); + } + + private SendPhoto sendPhoto(String chatId, String photo, boolean hasSpoiler, Integer replyToMessageId) { + return SendPhoto.builder() + .chatId(chatId) + .photo(new InputFile(photo)) + .hasSpoiler(hasSpoiler) + .replyToMessageId(replyToMessageId) + .build(); + } + + private Message sendGif(String chatId, Post post) throws TelegramApiException { + return sendWithInputStream((inputStream, filename) -> { + var sendAnimation = SendAnimation.builder() + .chatId(chatId) + .animation(new InputFile(inputStream, filename)) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .build(); + + return execute(sendAnimation); + }, post); + } + + private Message sendVideo(String chatId, Post post) throws TelegramApiException { + return sendWithInputStream((inputStream, filename) -> { + var sendVideo = SendVideo.builder() + .chatId(chatId) + .video(new InputFile(inputStream, filename)) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .supportsStreaming(true) + .build(); + + return execute(sendVideo); + }, post); + } + + private Message askApprove(String chatId, Post post) throws TelegramApiException, JsonProcessingException { + var approveButton = InlineKeyboardButton.builder() + .text("✅ Approve") + .callbackData(objectMapper.writeValueAsString(new RedditPostApprovedData( + "/approveredditpost", + post.getCreated() + ))) + .build(); + + var denyButton = InlineKeyboardButton.builder() + .text("🚫 Deny") + .callbackData("{}") + .build(); + + var sendMessage = SendMessage.builder() + .chatId(chatId) + .text("👆 Shall I publish the post above?") + .replyMarkup(new InlineKeyboardMarkup(List.of(List.of( + approveButton, + denyButton + )))) + .build(); + return execute(sendMessage); + } + + public void publishPostCandidate(int created) { + var post = postCandidates.remove(created); + post.setApproved(true); + publishPost(post); + } +} diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java new file mode 100644 index 0000000..8fdd5e6 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java @@ -0,0 +1,32 @@ +package com.github.yvasyliev.bots.telegram.notifier; + +import com.github.yvasyliev.bots.telegram.AbstractRedTelBot; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +@Component +public class AdminNotifier extends AbstractRedTelBot implements TelegramNotifier { + @Value(""" + ``` + %s + ```""") + private String messageTemplate; + + public AdminNotifier(@Value("${BOT_TOKEN}") String botToken) { + super(botToken); + } + + @Override + public Message notify(String text) throws TelegramApiException { + SendMessage sendMessage = SendMessage.builder() + .chatId(getAdminId()) + .text(messageTemplate.formatted(text)) + .parseMode(ParseMode.MARKDOWN) + .build(); + return execute(sendMessage); + } +} diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java new file mode 100644 index 0000000..88b09b1 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java @@ -0,0 +1,9 @@ +package com.github.yvasyliev.bots.telegram.notifier; + +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +@FunctionalInterface +public interface TelegramNotifier { + Message notify(String text) throws TelegramApiException; +} diff --git a/src/main/java/com/github/yvasyliev/config/AppConfig.java b/src/main/java/com/github/yvasyliev/config/AppConfig.java deleted file mode 100644 index 07ef379..0000000 --- a/src/main/java/com/github/yvasyliev/config/AppConfig.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.github.yvasyliev.config; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.dto.RedditAccessToken; -import com.github.yvasyliev.factories.RedditAccessTokenFactory; -import com.github.yvasyliev.properties.AppData; -import com.github.yvasyliev.service.reddit.RedditPostService; -import com.github.yvasyliev.service.reddit.RedditVideoDownloader; -import com.github.yvasyliev.service.reddit.api.GetRedditAccessToken; -import com.github.yvasyliev.service.reddit.api.GetSubredditNew; -import com.github.yvasyliev.service.reddit.api.Request; -import com.github.yvasyliev.telegram.TelegramRepeaterBot; -import com.github.yvasyliev.telegram.TelegramRepeaterBotImpl; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import com.github.yvasyliev.telegram.TelegramSenderBotImpl; -import com.github.yvasyliev.telegram.chain.FilterAuthorChain; -import com.github.yvasyliev.telegram.chain.NOPRepeaterChain; -import com.github.yvasyliev.telegram.chain.NsfwCheckChain; -import com.github.yvasyliev.telegram.chain.RepeatGif; -import com.github.yvasyliev.telegram.chain.RepeatMultiplePhotos; -import com.github.yvasyliev.telegram.chain.RepeatNestedPost; -import com.github.yvasyliev.telegram.chain.RepeatPhoto; -import com.github.yvasyliev.telegram.chain.RepeatPoll; -import com.github.yvasyliev.telegram.chain.RepeatText; -import com.github.yvasyliev.telegram.chain.RepeatVideo; -import com.github.yvasyliev.telegram.chain.SubredditPostRepeaterChain; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; - -import java.net.http.HttpClient; -import java.util.Properties; - -@Configuration -public class AppConfig extends TelegramLoggerBotConfig { - @Bean(initMethod = "load", destroyMethod = "store") - public Properties appData() { - return new AppData(); - } - - @Bean - public TelegramRepeaterBot telegramRepeaterBot(@Value("${BOT_TOKEN}") String botToken) { - return new TelegramRepeaterBotImpl(botToken); - } - - @Bean - public TelegramSenderBot telegramSenderBot(@Value("${BOT_TOKEN}") String botToken) { - return new TelegramSenderBotImpl(botToken); - } - - @Bean - public FactoryBean redditAccessTokenFactory() { - return new RedditAccessTokenFactory(); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public RedditAccessToken redditAccessToken() throws Exception { - return redditAccessTokenFactory().getObject(); - } - - @Bean(initMethod = "initializeRequest") - public Request getRedditAccessToken() { - return new GetRedditAccessToken(); - } - - @Bean - public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { - return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); - } - - @Bean - public HttpClient httpClient() { - return HttpClient.newHttpClient(); - } - - @Bean - public Request getSubredditNew() { - return new GetSubredditNew(); - } - - @Bean - public ObjectMapper objectMapper() { - return new ObjectMapper(); - } - - @Bean - public RedditPostService redditPostService() { - return new RedditPostService(); - } - - @Bean - public SubredditPostRepeaterChain repeatNestedPost() { - return new RepeatNestedPost(nsfwCheckChain()); - } - - @Bean - public SubredditPostRepeaterChain repeatText() { - return new RepeatText(repeatPhoto()); - } - - @Bean - public SubredditPostRepeaterChain repeatPhoto() { - return new RepeatPhoto(repeatMultiplePhotos()); - } - - @Bean - public SubredditPostRepeaterChain repeatMultiplePhotos() { - return new RepeatMultiplePhotos(repeatGif()); - } - - @Bean - public SubredditPostRepeaterChain repeatGif() { - return new RepeatGif(repeatVideo()); - } - - @Bean - public SubredditPostRepeaterChain repeatVideo() { - return new RepeatVideo(repeatPoll()); - } - - @Bean - public RedditVideoDownloader redditVideoDownloader() { - return new RedditVideoDownloader(); - } - - @Bean - public SubredditPostRepeaterChain nopRepeaterChain() { - return new NOPRepeaterChain(); - } - - @Bean - public SubredditPostRepeaterChain repeatPoll() { - return new RepeatPoll(nopRepeaterChain()); - } - - @Bean(name = {"filterAuthorChain", "subredditPostRepeaterChain"}) - public SubredditPostRepeaterChain filterAuthorChain() { - return new FilterAuthorChain(repeatNestedPost()); - } - - @Bean - public SubredditPostRepeaterChain nsfwCheckChain() { - return new NsfwCheckChain(repeatText()); - } -} \ No newline at end of file diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java new file mode 100644 index 0000000..c4e00ca --- /dev/null +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -0,0 +1,97 @@ +package com.github.yvasyliev.config; + +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.model.entity.BlockedAuthor; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.entity.State; +import com.github.yvasyliev.model.entity.UserCommand; +import org.hibernate.SessionFactory; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.service.ServiceRegistry; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.telegram.telegrambots.meta.TelegramBotsApi; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; + +import java.net.http.HttpClient; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; + +@Configuration +@ComponentScan("com.github.yvasyliev.service") +public class RedTelBotConfiguration extends TelegramNotifierConfig { + @Autowired + private JsonDeserializer postJsonDeserializer; + + @Bean + public TelegramBotsApi telegramBotsApi() throws TelegramApiException { + return new TelegramBotsApi(DefaultBotSession.class); + } + + @Bean + public ObjectMapper objectMapper() { + var mapper = new ObjectMapper(); + mapper.registerModule(module()); + return mapper; + } + + @Bean + public Module module() { + var module = new SimpleModule(); + module.addDeserializer(Post.class, postJsonDeserializer); + return module; + } + + @Bean + public ScheduledExecutorService scheduledExecutorService() { + return Executors.newSingleThreadScheduledExecutor(); + } + + @Bean + public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { + return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); + } + + @Bean(destroyMethod = "close") + public ServiceRegistry standardServiceRegistry() { + return new StandardServiceRegistryBuilder().build(); + } + + @Bean(destroyMethod = "close") + public SessionFactory sessionFactory() { + var registry = standardServiceRegistry(); + try { + return new MetadataSources(registry) + .addAnnotatedClasses( + BlockedAuthor.class, + Post.class, + State.class, + UserCommand.class + ) + .buildMetadata() + .buildSessionFactory(); + } catch (Exception e) { + StandardServiceRegistryBuilder.destroy(registry); + throw e; + } + } + + @Bean + public RedTelBot redTelBot(@Value("${BOT_TOKEN}") String botToken) { + return new RedTelBot(botToken); + } + + @Bean + public HttpClient httpClient() { + return HttpClient.newHttpClient(); + } +} diff --git a/src/main/java/com/github/yvasyliev/config/TelegramLoggerBotConfig.java b/src/main/java/com/github/yvasyliev/config/TelegramLoggerBotConfig.java deleted file mode 100644 index f78a2d9..0000000 --- a/src/main/java/com/github/yvasyliev/config/TelegramLoggerBotConfig.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.github.yvasyliev.config; - -import com.github.yvasyliev.telegram.TelegramLoggerBot; -import com.github.yvasyliev.telegram.TelegramLoggerBotImpl; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class TelegramLoggerBotConfig { - @Bean - public TelegramLoggerBot telegramLoggerBot(@Value("${BOT_TOKEN}") String botToken) { - return new TelegramLoggerBotImpl(botToken); - } -} diff --git a/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java b/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java new file mode 100644 index 0000000..3a3adba --- /dev/null +++ b/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java @@ -0,0 +1,24 @@ +package com.github.yvasyliev.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +@Configuration +@ComponentScan("com.github.yvasyliev.bots.telegram.notifier") +public class TelegramNotifierConfig { + @Bean + public Executor delayedExecutor() { + return CompletableFuture.delayedExecutor(10, TimeUnit.SECONDS, singleThreadExecutor()); + } + + @Bean + public Executor singleThreadExecutor() { + return Executors.newSingleThreadExecutor(); + } +} diff --git a/src/main/java/com/github/yvasyliev/exceptions/VideoUrlParseException.java b/src/main/java/com/github/yvasyliev/exceptions/VideoUrlParseException.java index 28f34c9..3049298 100644 --- a/src/main/java/com/github/yvasyliev/exceptions/VideoUrlParseException.java +++ b/src/main/java/com/github/yvasyliev/exceptions/VideoUrlParseException.java @@ -1,6 +1,8 @@ package com.github.yvasyliev.exceptions; -public class VideoUrlParseException extends Exception { +import java.io.IOException; + +public class VideoUrlParseException extends IOException { public VideoUrlParseException(String message) { super(message); } diff --git a/src/main/java/com/github/yvasyliev/model/dto/CallbackData.java b/src/main/java/com/github/yvasyliev/model/dto/CallbackData.java new file mode 100644 index 0000000..c1e945e --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/CallbackData.java @@ -0,0 +1,8 @@ +package com.github.yvasyliev.model.dto; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record CallbackData(@JsonProperty("a") String action) { +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/PostApprovedData.java b/src/main/java/com/github/yvasyliev/model/dto/PostApprovedData.java new file mode 100644 index 0000000..bcc54c4 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/PostApprovedData.java @@ -0,0 +1,10 @@ +package com.github.yvasyliev.model.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public record PostApprovedData( + @JsonProperty("a") String action, + @JsonProperty("fci") String fromChatId, + @JsonProperty("mi") int messageId +) { +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/PostType.java b/src/main/java/com/github/yvasyliev/model/dto/PostType.java new file mode 100644 index 0000000..642f183 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/PostType.java @@ -0,0 +1,10 @@ +package com.github.yvasyliev.model.dto; + +public enum PostType { + TEXT, + PHOTO, + PHOTO_GROUP, + GIF, + VIDEO, + POLL +} diff --git a/src/main/java/com/github/yvasyliev/dto/RedditAccessToken.java b/src/main/java/com/github/yvasyliev/model/dto/RedditAccessToken.java similarity index 83% rename from src/main/java/com/github/yvasyliev/dto/RedditAccessToken.java rename to src/main/java/com/github/yvasyliev/model/dto/RedditAccessToken.java index ad0ebff..f6a24dc 100644 --- a/src/main/java/com/github/yvasyliev/dto/RedditAccessToken.java +++ b/src/main/java/com/github/yvasyliev/model/dto/RedditAccessToken.java @@ -1,9 +1,9 @@ -package com.github.yvasyliev.dto; +package com.github.yvasyliev.model.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.github.yvasyliev.deserializers.ExpiresAtDeserializer; +import com.github.yvasyliev.service.deserializers.ExpiresAtDeserializer; import java.time.LocalDateTime; diff --git a/src/main/java/com/github/yvasyliev/model/dto/RedditPostApprovedData.java b/src/main/java/com/github/yvasyliev/model/dto/RedditPostApprovedData.java new file mode 100644 index 0000000..4cce14f --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/RedditPostApprovedData.java @@ -0,0 +1,9 @@ +package com.github.yvasyliev.model.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public record RedditPostApprovedData( + @JsonProperty("a") String action, + @JsonProperty("c") int created +) { +} diff --git a/src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java b/src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java new file mode 100644 index 0000000..1182258 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java @@ -0,0 +1,25 @@ +package com.github.yvasyliev.model.entity; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; + +@Entity +public class BlockedAuthor { + @Id + private String username; + + public BlockedAuthor() { + } + + public BlockedAuthor(String username) { + this.username = username; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/entity/Post.java b/src/main/java/com/github/yvasyliev/model/entity/Post.java new file mode 100644 index 0000000..f9c2fba --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/entity/Post.java @@ -0,0 +1,126 @@ +package com.github.yvasyliev.model.entity; + +import com.github.yvasyliev.model.dto.PostType; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; + +import java.util.List; + +@Entity +public class Post implements Comparable { + private PostType type; + @Id + private Integer created = 0; + private String author; + private String text; + private Boolean hasSpoiler; + private Boolean approved; + private String mediaUrl; + @ElementCollection(fetch = FetchType.EAGER) + private List> photoUrlsPages; + private List options; + private String postUrl; + + public PostType getType() { + return type; + } + + public void setType(PostType type) { + this.type = type; + } + + public Integer getCreated() { + return created; + } + + public void setCreated(Integer created) { + this.created = created; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public Boolean isHasSpoiler() { + return hasSpoiler; + } + + public void setHasSpoiler(Boolean hasSpoiler) { + this.hasSpoiler = hasSpoiler; + } + + public Boolean isApproved() { + return approved; + } + + public void setApproved(Boolean approved) { + this.approved = approved; + } + + public String getMediaUrl() { + return mediaUrl; + } + + public void setMediaUrl(String mediaUrl) { + this.mediaUrl = mediaUrl; + } + + public List> getPhotoUrlsPages() { + return photoUrlsPages; + } + + public void setPhotoUrlsPages(List> photoUrlsPages) { + this.photoUrlsPages = photoUrlsPages; + } + + public List getOptions() { + return options; + } + + public void setOptions(List options) { + this.options = options; + } + + public String getPostUrl() { + return postUrl; + } + + public void setPostUrl(String postUrl) { + this.postUrl = postUrl; + } + + @Override + public int compareTo(Post post) { + return Integer.compare(created, post.getCreated()); + } + + @Override + public String toString() { + return "Post{" + + "type=" + type + + ", created=" + created + + ", author='" + author + '\'' + + ", text='" + text + '\'' + + ", hasSpoiler=" + hasSpoiler + + ", approved=" + approved + + ", mediaUrl='" + mediaUrl + '\'' + + ", photoUrlsPages=" + photoUrlsPages + + ", options=" + options + + ", postUrl='" + postUrl + '\'' + + '}'; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/entity/State.java b/src/main/java/com/github/yvasyliev/model/entity/State.java new file mode 100644 index 0000000..0e1071a --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/entity/State.java @@ -0,0 +1,38 @@ +package com.github.yvasyliev.model.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; + +@Entity +public class State { + @Id + private String name; + + @Column(name = "val", nullable = false) + private String value; + + public State() { + } + + public State(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/entity/UserCommand.java b/src/main/java/com/github/yvasyliev/model/entity/UserCommand.java new file mode 100644 index 0000000..f6dee54 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/entity/UserCommand.java @@ -0,0 +1,38 @@ +package com.github.yvasyliev.model.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; + +@Entity +public class UserCommand { + @Id + private Long userId; + + @Column(nullable = false) + private String command; + + public UserCommand() { + } + + public UserCommand(Long userId, String command) { + this.userId = userId; + this.command = command; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } +} diff --git a/src/main/java/com/github/yvasyliev/properties/AppData.java b/src/main/java/com/github/yvasyliev/properties/AppData.java deleted file mode 100644 index 52abef5..0000000 --- a/src/main/java/com/github/yvasyliev/properties/AppData.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.github.yvasyliev.properties; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.Properties; - -public class AppData extends Properties { - private static final Logger LOGGER = LoggerFactory.getLogger(AppData.class); - - @Value("app_data.properties") - private String appPropertiesPath; - - @Autowired - private Properties properties; - - public void load() throws IOException { - var path = Paths.get(appPropertiesPath); - if (Files.exists(path)) { - try (var inputStream = Files.newInputStream(path)) { - load(inputStream); - } - properties.putAll(this); - LOGGER.info("Properties are read: {} < {}", this, path); - } else { - LOGGER.info("Properties don't exist: {}", path); - } - } - - public void store() throws IOException { - var path = Paths.get(appPropertiesPath); - LOGGER.info("Storing properties: {} > {}", this, path); - try (var outputStream = Files.newOutputStream(path)) { - store(outputStream, null); - } - } -} diff --git a/src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java b/src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java new file mode 100644 index 0000000..b906d7e --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java @@ -0,0 +1,17 @@ +package com.github.yvasyliev.service; + +import java.util.function.BiConsumer; + +@FunctionalInterface +public interface ThrowingBiConsumer extends BiConsumer { + void acceptWithException(T t, U u) throws Exception; + + @Override + default void accept(T t, U u) { + try { + acceptWithException(t, u); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/github/yvasyliev/service/dao/AbstractService.java b/src/main/java/com/github/yvasyliev/service/dao/AbstractService.java new file mode 100644 index 0000000..bbea37e --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/dao/AbstractService.java @@ -0,0 +1,9 @@ +package com.github.yvasyliev.service.dao; + +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public abstract class AbstractService { + @Autowired + protected SessionFactory sessionFactory; +} diff --git a/src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java b/src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java new file mode 100644 index 0000000..0640e6c --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java @@ -0,0 +1,34 @@ +package com.github.yvasyliev.service.dao; + +import com.github.yvasyliev.model.entity.BlockedAuthor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class BlockedAuthorService extends AbstractService { + public BlockedAuthor get(String username) { + return sessionFactory.fromSession(session -> session.find(BlockedAuthor.class, username)); + } + + public BlockedAuthor block(String username) { + return sessionFactory.fromTransaction(session -> session.merge(new BlockedAuthor(username))); + } + + public boolean isBlocked(String username) { + return get(username) != null; + } + + public void unblock(String username) { + sessionFactory.inTransaction(session -> { + var blockedAuthor = session.find(BlockedAuthor.class, username); + if (blockedAuthor != null) { + session.remove(blockedAuthor); + } + }); + } + + public List findAll() { + return sessionFactory.fromSession(session -> session.createQuery("from BlockedAuthor", BlockedAuthor.class).list()); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/dao/PostService.java b/src/main/java/com/github/yvasyliev/service/dao/PostService.java new file mode 100644 index 0000000..28ac7d3 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/dao/PostService.java @@ -0,0 +1,19 @@ +package com.github.yvasyliev.service.dao; + +import com.github.yvasyliev.model.entity.Post; +import org.springframework.stereotype.Service; + +@Service +public class PostService extends AbstractService { + public Post save(Post post) { + return sessionFactory.fromTransaction(session -> session.merge(post)); + } + + public Post get(int created) { + return sessionFactory.fromTransaction(session -> session.get(Post.class, created)); + } + + public void remove(Post post) { + sessionFactory.inTransaction(session -> session.remove(post)); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/dao/StateService.java b/src/main/java/com/github/yvasyliev/service/dao/StateService.java new file mode 100644 index 0000000..f99d90e --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/dao/StateService.java @@ -0,0 +1,20 @@ +package com.github.yvasyliev.service.dao; + +import com.github.yvasyliev.model.entity.State; +import org.springframework.stereotype.Service; + +@Service +public class StateService extends AbstractService { + public int getLastCreated() { + return sessionFactory.fromSession(session -> { + var lastCreated = session.get(State.class, "last_created"); + return lastCreated != null + ? Integer.parseInt(lastCreated.getValue()) + : 0; + }); + } + + public State setLastCreated(int created) { + return sessionFactory.fromTransaction(session -> session.merge(new State("last_created", String.valueOf(created)))); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java b/src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java new file mode 100644 index 0000000..29a068c --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java @@ -0,0 +1,26 @@ +package com.github.yvasyliev.service.dao; + +import com.github.yvasyliev.model.entity.UserCommand; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class UserCommandService extends AbstractService { + public UserCommand setUserCommand(long userId, String command) { + return sessionFactory.fromTransaction(session -> session.merge(new UserCommand(userId, command))); + } + + public void removeUserCommand(long userId) { + sessionFactory.inTransaction(session -> { + var userCommand = session.find(UserCommand.class, userId); + if (userCommand != null) { + session.remove(userCommand); + } + }); + } + + public Optional getUserCommand(long userId) { + return sessionFactory.fromSession(session -> Optional.ofNullable(session.find(UserCommand.class, userId))); + } +} diff --git a/src/main/java/com/github/yvasyliev/deserializers/ExpiresAtDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/ExpiresAtDeserializer.java similarity index 91% rename from src/main/java/com/github/yvasyliev/deserializers/ExpiresAtDeserializer.java rename to src/main/java/com/github/yvasyliev/service/deserializers/ExpiresAtDeserializer.java index 0644b8c..d92cb2e 100644 --- a/src/main/java/com/github/yvasyliev/deserializers/ExpiresAtDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/ExpiresAtDeserializer.java @@ -1,4 +1,4 @@ -package com.github.yvasyliev.deserializers; +package com.github.yvasyliev.service.deserializers; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java new file mode 100644 index 0000000..fecd14b --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -0,0 +1,59 @@ +package com.github.yvasyliev.service.deserializers; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.service.dao.BlockedAuthorService; +import com.github.yvasyliev.service.deserializers.mappers.PostMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.util.List; + +@Service +public class PostDeserializer extends JsonDeserializer { + private static final Logger LOGGER = LoggerFactory.getLogger(PostDeserializer.class); + @Autowired + private List postMappers; + + @Autowired + private BlockedAuthorService blockedAuthorService; + + @Override + public Post deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + var node = jsonParser.getCodec().readTree(jsonParser); + if (node instanceof JsonNode jsonPost) { + var author = jsonPost.get("author").textValue(); + var hasSpoiler = "nsfw".equals(jsonPost.get("thumbnail").textValue()); + var created = jsonPost.get("created").intValue(); + var postUrl = jsonPost.get("url_overridden_by_dest").textValue(); + + jsonPost = extractRootPost(jsonPost); + for (PostMapper postMapper : postMappers) { + var post = postMapper.apply(jsonPost); + if (post != null) { + post.setAuthor(author); + post.setHasSpoiler(hasSpoiler); + post.setCreated(created); + post.setApproved(blockedAuthorService.isBlocked(author)); + post.setPostUrl(postUrl); + return post; + } + } + } + + LOGGER.error("Failed to parse post: {}", node); + return null; + } + + private JsonNode extractRootPost(JsonNode jsonPost) { + return jsonPost.has("crosspost_parent_list") + ? extractRootPost(jsonPost.get("crosspost_parent_list").get(0)) + : jsonPost; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java new file mode 100644 index 0000000..bf0bf3b --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java @@ -0,0 +1,38 @@ +package com.github.yvasyliev.service.deserializers.mappers; + +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.PostType; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(4) +public class GifPostMapper implements PostMapper { + @Override + public Post apply(JsonNode jsonPost) { + if (isGif(jsonPost)) { + var gifUrl = jsonPost + .get("preview") + .get("images") + .get(0) + .get("variants") + .get("mp4") + .get("source") + .get("url") + .textValue(); + var post = new Post(); + post.setType(PostType.GIF); + post.setText(jsonPost.get("title").textValue()); + post.setMediaUrl(gifUrl); + return post; + } + return null; + } + + private boolean isGif(JsonNode data) { + return data.has("url_overridden_by_dest") + && data.get("url_overridden_by_dest").textValue().endsWith(".gif") + && data.get("preview").get("images").get(0).get("variants").has("mp4"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java new file mode 100644 index 0000000..8787f00 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java @@ -0,0 +1,63 @@ +package com.github.yvasyliev.service.deserializers.mappers; + +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.dto.PostType; +import com.github.yvasyliev.model.entity.Post; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.Comparator; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +@Component +@Order(3) +public class PhotoGroupPostMapper implements PostMapper { + @Value("10") + private int pageSize; + + @Override + public Post apply(JsonNode jsonPost) { + if (jsonPost.has("gallery_data")) { + var photoUrlsPages = extractPhotoUrlsPages(jsonPost); + var title = jsonPost.get("title").textValue(); + var post = new Post(); + post.setType(PostType.PHOTO_GROUP); + post.setText(title); + post.setPhotoUrlsPages(photoUrlsPages); + return post; + } + return null; + } + + private List> extractPhotoUrlsPages(JsonNode post) { + var photoUrls = extractPhotoUrls(post); + return IntStream + .range(0, photoUrls.size()) + .boxed() + .collect(Collectors.groupingBy( + i -> i / pageSize, + Collectors.mapping(photoUrls::get, Collectors.toList()) + )) + .values() + .stream() + .toList(); + } + + private List extractPhotoUrls(JsonNode post) { + var items = post.get("gallery_data").get("items").elements(); + return stream(items) + .map(item -> { + var mediaId = item.get("media_id").textValue(); + var metadata = post.get("media_metadata").get(mediaId); + return stream(metadata.get("p").elements()) + .max(Comparator.comparingInt(p -> p.get("x").intValue())); + }) + .filter(Optional::isPresent) + .map(optionalP -> optionalP.get().get("u").textValue()) + .toList(); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java new file mode 100644 index 0000000..06b1d64 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java @@ -0,0 +1,55 @@ +package com.github.yvasyliev.service.deserializers.mappers; + +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.PostType; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.Set; + +@Component +@Order(2) +public class PhotoPostMapper implements PostMapper { + @Value("#{{'.jpg', '.png', '.jpeg'}}") + private Set photoExtensions; + + @Override + public Post apply(JsonNode jsonPost) { + var photoUrl = extractPhotoUrl(jsonPost); + if (photoUrl != null) { + var text = jsonPost.get("title").textValue(); + var post = new Post(); + post.setType(PostType.PHOTO); + post.setText(text); + post.setMediaUrl(photoUrl); + return post; + } + return null; + } + + private String extractPhotoUrl(JsonNode post) { + if (post.has("url_overridden_by_dest")) { + var urlOverriddenByDest = post.get("url_overridden_by_dest").textValue(); + + if (urlOverriddenByDest.endsWith(".jpg1")) { + return urlOverriddenByDest.substring(0, urlOverriddenByDest.length() - 1); + } + + if (photoExtensions.stream().anyMatch(urlOverriddenByDest::endsWith)) { + var photoUrl = post + .get("preview") + .get("images") + .get(0) + .get("source") + .get("url") + .textValue(); + + return photoUrl.contains("auto=webp") ? urlOverriddenByDest : photoUrl; + } + } + + return null; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java new file mode 100644 index 0000000..2f5d3f5 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java @@ -0,0 +1,27 @@ +package com.github.yvasyliev.service.deserializers.mappers; + +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.PostType; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(6) +public class PollPostMapper implements PostMapper { + @Override + public Post apply(JsonNode jsonPost) { + if (jsonPost.has("poll_data")) { + var redditOptions = jsonPost.get("poll_data").get("options").elements(); + var options = stream(redditOptions) + .map(redditOption -> redditOption.get("text").textValue()) + .toList(); + var post = new Post(); + post.setType(PostType.POLL); + post.setText(jsonPost.get("title").textValue()); + post.setOptions(options); + return post; + } + return null; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java new file mode 100644 index 0000000..a51d1e5 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java @@ -0,0 +1,20 @@ +package com.github.yvasyliev.service.deserializers.mappers; + +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.entity.Post; + +import java.io.IOException; +import java.util.Iterator; +import java.util.Spliterator; +import java.util.Spliterators; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +@FunctionalInterface +public interface PostMapper { + Post apply(JsonNode jsonPost) throws IOException; + + default Stream stream(Iterator elements) { + return StreamSupport.stream(Spliterators.spliteratorUnknownSize(elements, Spliterator.ORDERED), false); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java new file mode 100644 index 0000000..ff3cdc3 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java @@ -0,0 +1,56 @@ +package com.github.yvasyliev.service.deserializers.mappers; + +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.PostType; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.Set; + +@Component +@Order(1) +public class TextPostMapper implements PostMapper { + @Value("#{{'.gifv'}}") + private Set videoExtensions; + + @Value("#{{'youtube.com', 'youtu.be'}}") + private Set youtubeDomains; + + @Value(""" + %s + + %s""") + private String postTextTemplate; + + @Override + public Post apply(JsonNode jsonPost) { + if (isTextPost(jsonPost)) { + var text = postTextTemplate.formatted( + jsonPost.get("title").textValue(), + jsonPost.get("url_overridden_by_dest").textValue() + ); + + var post = new Post(); + post.setType(PostType.TEXT); + post.setText(text); + return post; + } + return null; + } + + private boolean isTextPost(JsonNode post) { + if (post.has("post_hint")) { + var postHint = post.get("post_hint").textValue(); + if ("link".equals(postHint)) { + if (post.has("url_overridden_by_dest")) { + var urlOverriddenByDest = post.get("url_overridden_by_dest").textValue(); + return videoExtensions.stream().noneMatch(urlOverriddenByDest::endsWith); + } + return true; + } + } + return post.has("domain") && youtubeDomains.contains(post.get("domain").textValue()); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java new file mode 100644 index 0000000..3e5c655 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java @@ -0,0 +1,54 @@ +package com.github.yvasyliev.service.deserializers.mappers; + +import com.fasterxml.jackson.databind.JsonNode; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.PostType; +import com.github.yvasyliev.service.reddit.RedditVideoDownloader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.io.IOException; + +@Component +@Order(5) +public class VideoPostMapper implements PostMapper { + @Autowired + private RedditVideoDownloader redditVideoDownloader; + + @Override + public Post apply(JsonNode jsonPost) throws IOException { + var videoUrl = extractVideoUrl(jsonPost); + if (videoUrl != null) { + var post = new Post(); + post.setType(PostType.VIDEO); + post.setText(jsonPost.get("title").textValue()); + post.setMediaUrl(videoUrl); + return post; + } + return null; + } + + private String extractVideoUrl(JsonNode data) throws IOException { + if (data.get("is_video").booleanValue()) { + var redditPostUrl = "https://www.reddit.com%s".formatted(data.get("permalink").textValue()); + return redditVideoDownloader.getVideoDownloadUrl(redditPostUrl); + } + + if (data.has("media")) { + var media = data.get("media"); + if (media.has("reddit_video")) { + return media.get("reddit_video").get("fallback_url").textValue(); + } + } + + if (data.has("preview")) { + var preview = data.get("preview"); + if (preview.has("reddit_video_preview")) { + return preview.get("reddit_video_preview").get("fallback_url").textValue(); + } + } + + return null; + } +} diff --git a/src/main/java/com/github/yvasyliev/factories/RedditAccessTokenFactory.java b/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenFactoryBean.java similarity index 70% rename from src/main/java/com/github/yvasyliev/factories/RedditAccessTokenFactory.java rename to src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenFactoryBean.java index c9b5339..e50dd02 100644 --- a/src/main/java/com/github/yvasyliev/factories/RedditAccessTokenFactory.java +++ b/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenFactoryBean.java @@ -1,11 +1,13 @@ -package com.github.yvasyliev.factories; +package com.github.yvasyliev.service.factories; -import com.github.yvasyliev.dto.RedditAccessToken; +import com.github.yvasyliev.model.dto.RedditAccessToken; import com.github.yvasyliev.service.reddit.api.Request; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -public class RedditAccessTokenFactory implements FactoryBean { +@Component +public class RedditAccessTokenFactoryBean implements FactoryBean { @Autowired private Request getRedditAccessToken; @@ -21,7 +23,7 @@ public RedditAccessToken getObject() throws Exception { @Override public Class getObjectType() { - return String.class; + return RedditAccessToken.class; } @Override diff --git a/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java b/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java new file mode 100644 index 0000000..0c41f65 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java @@ -0,0 +1,70 @@ +package com.github.yvasyliev.service.factories; + +import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.net.URI; +import java.net.URLEncoder; +import java.net.http.HttpRequest; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Map; +import java.util.stream.Collectors; + +@Component +public class RedditAccessTokenRequestFactoryBean implements FactoryBean { + @Value("${REDDIT_CLIENT_ID}") + private String redditClientId; + + @Value("${REDDIT_CLIENT_SECRET}") + private String redditClientSecret; + + @Value("${REDDIT_USERNAME}") + private String redditUsername; + + @Value("${REDDIT_PASSWORD}") + private String redditPassword; + + @Autowired + private String userAgent; + + @Override + public HttpRequest getObject() { + var credentials = "%s:%s".formatted(redditClientId, redditClientSecret); + var authorization = "Basic %s".formatted(Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8))); + var payload = Map.of( + "grant_type", "password", + "username", redditUsername, + "password", redditPassword + ); + return HttpRequest.newBuilder(URI.create("https://www.reddit.com/api/v1/access_token")) + .header("Authorization", authorization) + .header("Content-Type", "application/x-www-form-urlencoded") + .header("User-Agent", userAgent) + .POST(HttpRequest.BodyPublishers.ofString(encode(payload))) + .build(); + } + + @Override + public Class getObjectType() { + return HttpRequest.class; + } + + private String encode(Map payload) { + return payload + .entrySet() + .stream() + .map(this::encode) + .collect(Collectors.joining("&")); + } + + private String encode(Map.Entry entry) { + return "%s=%s".formatted(encode(entry.getKey()), encode(entry.getValue())); + } + + private String encode(String s) { + return URLEncoder.encode(s, StandardCharsets.UTF_8); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java index 707675f..4e71fd9 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java @@ -1,48 +1,74 @@ package com.github.yvasyliev.service.reddit; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.service.dao.StateService; import com.github.yvasyliev.service.reddit.api.Request; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; import java.io.IOException; import java.time.Instant; import java.time.temporal.ChronoUnit; -import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.Spliterator; import java.util.Spliterators; -import java.util.stream.Collectors; import java.util.stream.StreamSupport; +@Service public class RedditPostService { + private static final Logger LOGGER = LoggerFactory.getLogger(RedditPostService.class); + @Autowired private Request getSubredditNew; - @Value("${PREVIOUS_REDDIT_POST_CREATED:0}") - private int previousRedditPostCreated; - @Value("30") private int delayMinutes; - public List findNewPosts() throws IOException, InterruptedException { + @Autowired + private StateService stateService; + + @Autowired + private ObjectMapper objectMapper; + + public List findNewPosts() throws IOException, InterruptedException { var subredditPosts = getSubredditNew.execute(); var children = subredditPosts .get("data") .get("children") .elements(); - var newPosts = StreamSupport + var lastCreated = stateService.getLastCreated(); + return StreamSupport .stream(Spliterators.spliteratorUnknownSize(children, Spliterator.ORDERED), false) .map(child -> child.get("data")) .filter(data -> { var created = data.get("created").intValue(); var createdUtc = Instant.ofEpochMilli(created * 1000L); var deadline = Instant.now().minus(delayMinutes, ChronoUnit.MINUTES); - return created > previousRedditPostCreated + return created > lastCreated && createdUtc.isBefore(deadline); }) - .collect(Collectors.toList()); - Collections.reverse(newPosts); - return newPosts; + .map(data -> { + try { + return objectMapper.treeToValue(data, Post.class); + } catch (JsonProcessingException e) { + LOGGER.error( + "Failed to deserialize post. Created: {}, URL: {}", + data.get("created").intValue(), + data.get("url_overridden_by_dest").textValue(), + e + ); + return null; + } + }) + .filter(Objects::nonNull) + .sorted() + .toList(); } } diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java index ad0a97a..dba6c29 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java @@ -2,11 +2,13 @@ import com.github.yvasyliev.exceptions.VideoUrlParseException; import org.jsoup.Jsoup; +import org.springframework.stereotype.Service; import java.io.IOException; +@Service public class RedditVideoDownloader { - public String getVideoDownloadUrl(String redditPostUrl) throws IOException, VideoUrlParseException { + public String getVideoDownloadUrl(String redditPostUrl) throws IOException { var url = "https://rapidsave.com/info?url=%s".formatted(redditPostUrl); var element = Jsoup.connect(url) .get() diff --git a/src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java b/src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java index 137df0d..d7f594a 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java @@ -1,35 +1,19 @@ package com.github.yvasyliev.service.reddit.api; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.dto.RedditAccessToken; +import com.github.yvasyliev.model.dto.RedditAccessToken; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; import java.io.IOException; -import java.net.URI; -import java.net.URLEncoder; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; -import java.nio.charset.StandardCharsets; -import java.util.Base64; -import java.util.Map; -import java.util.stream.Collectors; +@Service public class GetRedditAccessToken implements Request { - @Value("${REDDIT_CLIENT_ID}") - private String redditClientId; - - @Value("${REDDIT_CLIENT_SECRET}") - private String redditClientSecret; - - @Value("${REDDIT_USERNAME}") - private String redditUsername; - - @Value("${REDDIT_PASSWORD}") - private String redditPassword; - - private HttpRequest request; + @Autowired + private HttpRequest redditAccessTokenRequest; @Autowired private HttpClient httpClient; @@ -37,44 +21,9 @@ public class GetRedditAccessToken implements Request { @Autowired private ObjectMapper objectMapper; - @Autowired - private String userAgent; - - public void initializeRequest() { - var credentials = "%s:%s".formatted(redditClientId, redditClientSecret); - var authorization = "Basic %s".formatted(Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8))); - var payload = Map.of( - "grant_type", "password", - "username", redditUsername, - "password", redditPassword - ); - request = HttpRequest.newBuilder(URI.create("https://www.reddit.com/api/v1/access_token")) - .header("Authorization", authorization) - .header("Content-Type", "application/x-www-form-urlencoded") - .header("User-Agent", userAgent) - .POST(HttpRequest.BodyPublishers.ofString(encode(payload))) - .build(); - } - @Override public RedditAccessToken execute() throws IOException, InterruptedException { - var jsonBody = httpClient.send(request, HttpResponse.BodyHandlers.ofString()).body(); + var jsonBody = httpClient.send(redditAccessTokenRequest, HttpResponse.BodyHandlers.ofString()).body(); return objectMapper.readValue(jsonBody, RedditAccessToken.class); } - - private String encode(Map payload) { - return payload - .entrySet() - .stream() - .map(this::encode) - .collect(Collectors.joining("&")); - } - - private String encode(Map.Entry entry) { - return "%s=%s".formatted(encode(entry.getKey()), encode(entry.getValue())); - } - - private String encode(String s) { - return URLEncoder.encode(s, StandardCharsets.UTF_8); - } } diff --git a/src/main/java/com/github/yvasyliev/service/reddit/api/GetSubredditNew.java b/src/main/java/com/github/yvasyliev/service/reddit/api/GetSubredditNew.java index 686b85b..4912715 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/api/GetSubredditNew.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/api/GetSubredditNew.java @@ -2,10 +2,11 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.dto.RedditAccessToken; +import com.github.yvasyliev.model.dto.RedditAccessToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; import java.io.IOException; import java.net.URI; @@ -13,6 +14,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; +@Service public class GetSubredditNew implements Request { @Autowired private ApplicationContext applicationContext; @@ -40,6 +42,734 @@ public JsonNode execute() throws IOException, InterruptedException { .GET() .build(); var jsonBody = httpClient.send(request, HttpResponse.BodyHandlers.ofString()).body(); + jsonBody = JSON; return objectMapper.readTree(jsonBody); } + + private static final String JSON = """ + { + "kind": "Listing", + "data": { + "after": null, + "dist": 1, + "modhash": null, + "geo_filter": "", + "children": [ + { + "kind": "t3", + "data": { + "approved_at_utc": null, + "subreddit": "AnadeArmas", + "selftext": "", + "author_fullname": "t2_dc45hj39d", + "saved": false, + "mod_reason_title": null, + "gilded": 0, + "clicked": false, + "is_gallery": true, + "title": "Ana de Armas' nipples naked", + "link_flair_richtext": [], + "subreddit_name_prefixed": "r/AnadeArmas", + "hidden": false, + "pwls": null, + "link_flair_css_class": null, + "downs": 0, + "thumbnail_height": 105, + "top_awarded_type": null, + "hide_score": false, + "media_metadata": { + "rlf1w8ksu0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=e4e8f63362db1daf754a23470b4a36290e1075d4" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=108&crop=smart&auto=webp&s=0daed3fdb8e23dcfde2344168c9814c3ac40ec9d" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=216&crop=smart&auto=webp&s=43093964c3095afbb6d5a49853f97708f2ab7d43" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=320&crop=smart&auto=webp&s=6d8cbab01beec50ee082a5dd2a662ce1c49a49b4" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=640&crop=smart&auto=webp&s=b54ee17d97d3abf8ffa375749ef980a24bee12b5" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=960&crop=smart&auto=webp&s=d04a7cf41ce7e77b18d1d6517102d487844454a1" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=1080&crop=smart&auto=webp&s=c35da9b6c08aac33dc603b33bae8252817d2afe1" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=1440&format=png&auto=webp&s=19a3b7a7535ce81a170e364e1f33c4bf13143f71" + }, + "id": "rlf1w8ksu0ub1" + }, + "lj94ghusu0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=98b964fd91b282432558ee6fc3e46557f317f5b8" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=108&crop=smart&auto=webp&s=30aad919c222c397ffbb6765fe856b4f35076922" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=216&crop=smart&auto=webp&s=517bf6f7a46fbe958524f4a28414c4e5dac98da0" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=320&crop=smart&auto=webp&s=1663fe649ce81aa2b4052a006f506e05b474767c" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=640&crop=smart&auto=webp&s=f772b9efbbdc8630cfe5890df03fc32a478bf81d" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=960&crop=smart&auto=webp&s=f2525918684e10d83575e63116ff4a29735ce359" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=1080&crop=smart&auto=webp&s=71844377adc4a521a99b5bb2f3830e99563ecfa6" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=1440&format=png&auto=webp&s=284d98c12aec5b2e09bbe98c2e21b1f5b5a0ba2c" + }, + "id": "lj94ghusu0ub1" + }, + "5mue509su0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=392fb4ad3c1d5cbe46780b600e84ccd6228239b0" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=108&crop=smart&auto=webp&s=976e32fbf1830c5f94e770f09ba1eb03196e5c37" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=216&crop=smart&auto=webp&s=f58f046a9815bbb7a976f3ff7e531b66a3b3a5ae" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=320&crop=smart&auto=webp&s=e39ff29393ca8d57aaba44782eb9ef1ceee481f2" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=640&crop=smart&auto=webp&s=dd8d7fcc4e34b35e869a845c4d09dc12bc76632f" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=960&crop=smart&auto=webp&s=21903a3af900ed62a43bc60473ebc25a1a604330" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=1080&crop=smart&auto=webp&s=d5836b2afadae4f0efc479072dd4d184e42cb430" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/5mue509su0ub1.png?width=1440&format=png&auto=webp&s=aae5fe197a57f100338d2268539c0001d9f35a9b" + }, + "id": "5mue509su0ub1" + }, + "rmn0ts2ru0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=0203de21750785d32ff4dc3398ba8a41b1dda56f" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=108&crop=smart&auto=webp&s=bc2ba87a1a4f10c32e82a215fd636de5d8d2d256" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=216&crop=smart&auto=webp&s=88d2e7186aef9401b989f99806daa9032e385cb4" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=320&crop=smart&auto=webp&s=eb12a25fb5cb5b1f58f4554c86b311b826fb031b" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=640&crop=smart&auto=webp&s=7046535b9179512f34e95350012cb8ae914dae75" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=960&crop=smart&auto=webp&s=6389b3e7204c67f20bb66207e99f7eb05e1732c9" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=1080&crop=smart&auto=webp&s=d1f35823e465fd6c525b8f88a2c22ee0b240a0ac" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=1440&format=png&auto=webp&s=9205418acd19fd114800e50fa0f8542d97356a0a" + }, + "id": "rmn0ts2ru0ub1" + }, + "jdgn5clru0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=448f1083b7c3a0d700a1ead4dfef7034dede6c20" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=108&crop=smart&auto=webp&s=eb8e434ba2e9a1cc596d00523e8e7fe832183b3e" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=216&crop=smart&auto=webp&s=8b196659120106bf5d3fb3af3d4f45adb7c249fd" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=320&crop=smart&auto=webp&s=dcf652694086a682e10860eb8b92e69732399906" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=640&crop=smart&auto=webp&s=48850e17c28550ab7a26901b80837e9cf6eee751" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=960&crop=smart&auto=webp&s=50bc2d24fa53ef934ada659ed4adb78415f4a260" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=1080&crop=smart&auto=webp&s=7cf133c4cc6774e9fa1e9dddf17dbcdd03784d76" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=1440&format=png&auto=webp&s=fa19caad13dbec82252d6c880c9ce325f58764be" + }, + "id": "jdgn5clru0ub1" + }, + "m04ou2bou0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=4740604f027fb8a3a779965686ecf0aacad8756c" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=108&crop=smart&auto=webp&s=8128c5291672b06c394a15d81b49e62a1619fa4f" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=216&crop=smart&auto=webp&s=0dd62a75dd2b7f61961f3a73e331bdb8cb16bb18" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=320&crop=smart&auto=webp&s=64cc56043eb69a4d8a4447aeee1e972ff65b33df" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=640&crop=smart&auto=webp&s=75a9fce9053b25e8c09199227339a20e7812bbe8" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=960&crop=smart&auto=webp&s=35871fed06e528217fe1caab5dd9dfd3638876c5" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=1080&crop=smart&auto=webp&s=407909eb0b2651ec17e6f8c244613ec91c0cb805" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=1440&format=png&auto=webp&s=48484adb5dfb4daaab7cffe5b62f7741200fc633" + }, + "id": "m04ou2bou0ub1" + }, + "44kiy7wru0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=82acd8e92a02b90cd46d6cabbd74c66c375e4f68" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=108&crop=smart&auto=webp&s=d4e1fdf18733357cd0183146e2dd67f7ce949279" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=216&crop=smart&auto=webp&s=d6103aeb56d1a0e422c6ea394abbbc6cbff178c4" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=320&crop=smart&auto=webp&s=52d43a5227df576b5e733d043e4c211bc4c954cf" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=640&crop=smart&auto=webp&s=37d9c75de9b6adb36fc647923b90bfee70743c93" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=960&crop=smart&auto=webp&s=a6ccba4b834d7440c55bd4893435239b97a5f2f7" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=1080&crop=smart&auto=webp&s=86b90f61ec3c3fd52894522193ad60448276903c" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=1440&format=png&auto=webp&s=46f1ec2fd87af7ab28c7d81b6d0adf0e0bb54614" + }, + "id": "44kiy7wru0ub1" + }, + "n1v7f14pu0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=fdb5da264933c5c25b92a71c334af6074127d7c2" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=108&crop=smart&auto=webp&s=5661c4f41c554164230ee40980d4d6b614d7390b" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=216&crop=smart&auto=webp&s=6dc88d0b06bc0827bb4b52a6125bdd897f32729e" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=320&crop=smart&auto=webp&s=dbae5a8add82f9ee0c452d29eb9eecd6243ac461" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=640&crop=smart&auto=webp&s=918cc66291dfaa9726e7320c544df73069a60410" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=960&crop=smart&auto=webp&s=61ac7d7d526fef0878ad74d16a34d6fe5e355b95" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=1080&crop=smart&auto=webp&s=28b9d27eba15e002c5e1acb4103bd6ba2276ae8a" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=1440&format=png&auto=webp&s=f0f9cd6f9fef50f284829e63a3cb30903da6e7fb" + }, + "id": "n1v7f14pu0ub1" + }, + "n8uw36sou0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=5977aa08b899b5b2a0982d0c1157f2eb657b3928" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=108&crop=smart&auto=webp&s=3c8948389d738d154ec126a5d4817acf46d64e93" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=216&crop=smart&auto=webp&s=6af812166344d0d192a8db13a06b40b9a0994994" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=320&crop=smart&auto=webp&s=4c468690cb779ca2ed910ab86ddac5517cf53efc" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=640&crop=smart&auto=webp&s=38c7a3b75978e53285c55b3f3360cffb17cf8364" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=960&crop=smart&auto=webp&s=b9f5d89391267b6bd13689d68a1db7d666841661" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=1080&crop=smart&auto=webp&s=dfc8b56055853a6e650d65380301f08545c3c169" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=1440&format=png&auto=webp&s=f21d8a145cb835de24cd32ca5c54935348b37e06" + }, + "id": "n8uw36sou0ub1" + }, + "bcssq7dru0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=aca3e9b5c191caff919a3a3db85d74d7c73df74b" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=108&crop=smart&auto=webp&s=01d7292526d1c60e8c7cd69a938fd47fe7d5d315" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=216&crop=smart&auto=webp&s=befa5578b81dacb5699f7996b1ab1c8bde2ab9ca" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=320&crop=smart&auto=webp&s=1d9c06d6f3d93f68e10e97e721b6819a7ba8cc82" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=640&crop=smart&auto=webp&s=8129da3b70afdfe7a606c0b2b66bb7c4c809bc13" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=960&crop=smart&auto=webp&s=b567d6968c06ffacecf5e284a824fbc53758f1a7" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=1080&crop=smart&auto=webp&s=addd261828aa63c726d14372b05f5754d92dc619" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=1440&format=png&auto=webp&s=8a1e28af308d63da008cae880962975f4d431e57" + }, + "id": "bcssq7dru0ub1" + }, + "sztu094tu0ub1": { + "status": "valid", + "e": "Image", + "m": "image/png", + "o": [ + { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=7dbaf31087052132201b97c304cbd4c009dd7a09" + } + ], + "p": [ + { + "y": 81, + "x": 108, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=108&crop=smart&auto=webp&s=734620872dc28024e6012ac4bf97995f7e508f67" + }, + { + "y": 162, + "x": 216, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=216&crop=smart&auto=webp&s=b8c0b25188bf186c0da25e2b4afc9245276c85e8" + }, + { + "y": 240, + "x": 320, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=320&crop=smart&auto=webp&s=6ffb7cd3bc9f2c60f2cf96d1c5a284e9ebe788e4" + }, + { + "y": 480, + "x": 640, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=640&crop=smart&auto=webp&s=96a52e59880a7a97b1f497bb6be14976b9cc0548" + }, + { + "y": 720, + "x": 960, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=960&crop=smart&auto=webp&s=d5da6a28722c1c976c101bd31adcac34a8306457" + }, + { + "y": 810, + "x": 1080, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=1080&crop=smart&auto=webp&s=0bc9563b0ee092277ce109f3156d98d38c8d6c85" + } + ], + "s": { + "y": 1080, + "x": 1440, + "u": "https://preview.redd.it/sztu094tu0ub1.png?width=1440&format=png&auto=webp&s=2ee23d79d6fdcc92979fd2d20071c430446c82c3" + }, + "id": "sztu094tu0ub1" + } + }, + "name": "t3_1776p0t", + "quarantine": false, + "link_flair_text_color": "dark", + "upvote_ratio": 0.99, + "author_flair_background_color": null, + "ups": 1222, + "domain": "reddit.com", + "media_embed": {}, + "thumbnail_width": 140, + "author_flair_template_id": null, + "is_original_content": false, + "user_reports": [], + "secure_media": null, + "is_reddit_media_domain": false, + "is_meta": false, + "category": null, + "secure_media_embed": {}, + "gallery_data": { + "items": [ + { + "media_id": "m04ou2bou0ub1", + "id": 342084335 + }, + { + "media_id": "n1v7f14pu0ub1", + "id": 342084336 + }, + { + "media_id": "n8uw36sou0ub1", + "id": 342084337 + }, + { + "media_id": "rmn0ts2ru0ub1", + "id": 342084338 + }, + { + "media_id": "bcssq7dru0ub1", + "id": 342084339 + }, + { + "media_id": "jdgn5clru0ub1", + "id": 342084340 + }, + { + "media_id": "44kiy7wru0ub1", + "id": 342084341 + }, + { + "media_id": "5mue509su0ub1", + "id": 342084342 + }, + { + "media_id": "rlf1w8ksu0ub1", + "id": 342084343 + }, + { + "media_id": "lj94ghusu0ub1", + "id": 342084344 + }, + { + "media_id": "sztu094tu0ub1", + "id": 342084345 + } + ] + }, + "link_flair_text": null, + "can_mod_post": false, + "score": 1222, + "approved_by": null, + "is_created_from_ads_ui": false, + "author_premium": false, + "thumbnail": "nsfw", + "edited": false, + "author_flair_css_class": null, + "author_flair_richtext": [], + "gildings": {}, + "content_categories": null, + "is_self": false, + "subreddit_type": "public", + "created": 1697225506.0, + "link_flair_type": "text", + "wls": null, + "removed_by_category": null, + "banned_by": null, + "author_flair_type": "text", + "total_awards_received": 0, + "allow_live_comments": false, + "selftext_html": null, + "likes": null, + "suggested_sort": null, + "banned_at_utc": null, + "url_overridden_by_dest": "https://www.reddit.com/gallery/1776p0t", + "view_count": null, + "archived": false, + "no_follow": false, + "is_crosspostable": true, + "pinned": false, + "over_18": true, + "all_awardings": [], + "awarders": [], + "media_only": false, + "can_gild": false, + "spoiler": false, + "locked": false, + "author_flair_text": null, + "treatment_tags": [], + "visited": false, + "removed_by": null, + "mod_note": null, + "distinguished": null, + "subreddit_id": "t5_3a5ba", + "author_is_blocked": false, + "mod_reason_by": null, + "num_reports": null, + "removal_reason": null, + "link_flair_background_color": "", + "id": "1776p0t", + "is_robot_indexable": true, + "report_reasons": null, + "author": "World_Explorer949", + "discussion_type": null, + "num_comments": 12, + "send_replies": true, + "whitelist_status": null, + "contest_mode": false, + "mod_reports": [], + "author_patreon_flair": false, + "author_flair_text_color": null, + "permalink": "/r/AnadeArmas/comments/1776p0t/ana_de_armas_nipples_naked/", + "parent_whitelist_status": null, + "stickied": false, + "url": "https://www.reddit.com/gallery/1776p0t", + "subreddit_subscribers": 199496, + "created_utc": 1697225506.0, + "num_crossposts": 1, + "media": null, + "is_video": false + } + } + ], + "before": null + } + }"""; } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java new file mode 100644 index 0000000..8002316 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java @@ -0,0 +1,39 @@ +package com.github.yvasyliev.service.telegram.callbacks; + +import com.github.yvasyliev.model.dto.PostApprovedData; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ForwardMessage; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; +import org.telegram.telegrambots.meta.api.objects.CallbackQuery; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/approvepost") +public class ApprovePost extends Callback { + @Override + public void acceptWithException(CallbackQuery callbackQuery) throws TelegramApiException, URISyntaxException, IOException { + var postApprovedData = objectMapper.readValue(callbackQuery.getData(), PostApprovedData.class); + redTelBot.execute(new ForwardMessage( + redTelBot.getChannelId(), + postApprovedData.fromChatId(), + postApprovedData.messageId() + )); + redTelBot.execute(new EditMessageReplyMarkup( + callbackQuery.getMessage().getChatId().toString(), + callbackQuery.getMessage().getMessageId(), + callbackQuery.getInlineMessageId(), + null + )); + var editMessageText = EditMessageText.builder() + .chatId(callbackQuery.getMessage().getChatId()) + .messageId(callbackQuery.getMessage().getMessageId()) + .text(format("responses/approvepost.md", callbackQuery.getMessage().getText())) + .parseMode(ParseMode.MARKDOWNV2) + .build(); + redTelBot.execute(editMessageText); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java new file mode 100644 index 0000000..6c58caf --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java @@ -0,0 +1,37 @@ +package com.github.yvasyliev.service.telegram.callbacks; + +import com.github.yvasyliev.model.dto.RedditPostApprovedData; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; +import org.telegram.telegrambots.meta.api.objects.CallbackQuery; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/approveredditpost") +public class ApproveRedditPost extends Callback { + @Override + public void acceptWithException(CallbackQuery callbackQuery) throws IOException, TelegramApiException, URISyntaxException { + var message = callbackQuery.getMessage(); + var chatId = message.getChatId(); + var messageId = message.getMessageId(); + var redditPostApprovedData = objectMapper.readValue(callbackQuery.getData(), RedditPostApprovedData.class); + redTelBot.publishPostCandidate(redditPostApprovedData.created()); + redTelBot.execute(new EditMessageReplyMarkup( + chatId.toString(), + messageId, + callbackQuery.getInlineMessageId(), + null + )); + var editMessageText = EditMessageText.builder() + .chatId(chatId) + .messageId(messageId) + .text(format("responses/approvepost.md", message.getText())) + .parseMode(ParseMode.MARKDOWNV2) + .build(); + redTelBot.execute(editMessageText); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java new file mode 100644 index 0000000..a44af13 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java @@ -0,0 +1,26 @@ +package com.github.yvasyliev.service.telegram.callbacks; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.service.telegram.readers.BotResponseReader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.function.ThrowingConsumer; +import org.telegram.telegrambots.meta.api.objects.CallbackQuery; + +import java.io.IOException; +import java.net.URISyntaxException; + +public abstract class Callback implements ThrowingConsumer { + @Autowired + protected RedTelBot redTelBot; + + @Autowired + protected BotResponseReader responseReader; + + @Autowired + protected ObjectMapper objectMapper; + + protected String format(String response, Object... args) throws URISyntaxException, IOException { + return responseReader.applyWithException(response).formatted(args); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java new file mode 100644 index 0000000..0ec7e6c --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -0,0 +1,27 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.service.dao.BlockedAuthorService; +import com.github.yvasyliev.service.telegram.factory.UsernameParser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; + +@Service("/addblockedauthor") +public class AddBlockedAuthor extends Command { + @Autowired + protected BlockedAuthorService blockedAuthorService; + @Autowired + private UsernameParser usernameParser; + + @Override + public void acceptWithException(Message message) throws Exception { + var optionalUsername = usernameParser.apply(message); + if (optionalUsername.isPresent()) { + var username = optionalUsername.get(); + blockedAuthorService.block(username); + reply(message, "responses/addblockedauthor.md", username, username); + } else { + reply(message, "responses/usernamenotrecognized.md"); + } + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java new file mode 100644 index 0000000..354695a --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java @@ -0,0 +1,22 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.service.dao.UserCommandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/blockauthor") +public class BlockAuthor extends Command { + @Autowired + private UserCommandService userCommandService; + + @Override + public void acceptWithException(Message message) throws URISyntaxException, IOException, TelegramApiException { + userCommandService.setUserCommand(message.getFrom().getId(), "/addblockedauthor"); + reply(message, "responses/blockauthor.md"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java new file mode 100644 index 0000000..55e2fb5 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java @@ -0,0 +1,22 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.service.dao.UserCommandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/cancel") +public class Cancel extends Command { + @Autowired + private UserCommandService userCommandService; + + @Override + public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + userCommandService.removeUserCommand(message.getFrom().getId()); + reply(message, "responses/cancel.md"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java new file mode 100644 index 0000000..9c6b0c0 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java @@ -0,0 +1,31 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.service.telegram.readers.BotResponseReader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.function.ThrowingConsumer; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +public abstract class Command implements ThrowingConsumer { + @Autowired + protected RedTelBot redTelBot; + + @Autowired + protected BotResponseReader responseReader; + + protected Message reply(Message to, String template, Object... args) throws URISyntaxException, IOException, TelegramApiException { + var sendMessage = SendMessage.builder() + .chatId(to.getChatId()) + .text(responseReader.applyWithException(template).formatted(args)) + .disableWebPagePreview(true) + .parseMode(ParseMode.MARKDOWNV2) + .build(); + return redTelBot.execute(sendMessage); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Done.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Done.java new file mode 100644 index 0000000..819924d --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Done.java @@ -0,0 +1,16 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/done") +public class Done extends Cancel { + @Override + protected Message reply(Message to, String template, Object... args) throws URISyntaxException, IOException, TelegramApiException { + return super.reply(to, "responses/done.md"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java new file mode 100644 index 0000000..f640f7a --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java @@ -0,0 +1,24 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.service.dao.BlockedAuthorService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; + +import java.util.stream.Collectors; + +@Service("/getblocked") +public class GetBlocked extends Command { + @Autowired + protected BlockedAuthorService blockedAuthorService; + + @Override + public void acceptWithException(Message message) throws Exception { + var blockedAuthors = blockedAuthorService + .findAll() + .stream() + .map(blockedAuthor -> "👤 " + blockedAuthor.getUsername()) + .collect(Collectors.joining("\n")); + reply(message, "responses/getblocked.md", blockedAuthors); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java new file mode 100644 index 0000000..f2a1387 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java @@ -0,0 +1,21 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/pausepublishing") +public class PausePublishing extends Command { + @Override + public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + redTelBot.pausePublishing(); + redTelBot.execute(new SendMessage( + message.getChatId().toString(), + responseReader.applyWithException("responses/pausepublishing.md") + )); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java new file mode 100644 index 0000000..232ffc2 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java @@ -0,0 +1,60 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.dto.PostApprovedData; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ForwardMessage; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.List; + +@Service("/postsuggested") +public class PostSuggested extends Command { + @Autowired + private ObjectMapper objectMapper; + + @Override + public void acceptWithException(Message message) throws TelegramApiException, IOException, URISyntaxException { + var sourceChatId = message.getChatId().toString(); + var sourceMessageId = message.getMessageId(); + + redTelBot.execute(new ForwardMessage( + redTelBot.getAdminId(), + sourceChatId, + sourceMessageId + )); + + var approveButton = InlineKeyboardButton.builder() + .text("✅ Approve") + .callbackData(objectMapper.writeValueAsString(new PostApprovedData( + "/approvepost", + sourceChatId, + sourceMessageId + ))) + .build(); + + var denyButton = InlineKeyboardButton.builder() + .text("🚫 Deny") + .callbackData("{}") + .build(); + + var sendMessage = SendMessage.builder() + .chatId(redTelBot.getAdminId()) + .text("👆 Shall I publish the post above?") + .replyMarkup(new InlineKeyboardMarkup(List.of(List.of( + approveButton, + denyButton + )))) + .build(); + redTelBot.execute(sendMessage); + + reply(message, "responses/postsuggested.md"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java new file mode 100644 index 0000000..bbf0685 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -0,0 +1,28 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.service.dao.BlockedAuthorService; +import com.github.yvasyliev.service.telegram.factory.UsernameParser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; + +@Service("/removeblockedauthor") +public class RemoveBlockedAuthor extends Command { + @Autowired + protected BlockedAuthorService blockedAuthorService; + + @Autowired + private UsernameParser usernameParser; + + @Override + public void acceptWithException(Message message) throws Exception { + var optionalUsername = usernameParser.apply(message); + if (optionalUsername.isPresent()) { + var username = optionalUsername.get(); + blockedAuthorService.unblock(username); + reply(message, "responses/removeblockedauthor.md", username); + } else { + reply(message, "responses/usernamenotrecognized.md"); + } + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java new file mode 100644 index 0000000..f57508c --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java @@ -0,0 +1,21 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/resumepublishing") +public class ResumePublishing extends Command { + @Override + public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + redTelBot.resumePublishing(); + redTelBot.execute(new SendMessage( + message.getChatId().toString(), + responseReader.applyWithException("responses/resumepublishing.md") + )); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java new file mode 100644 index 0000000..ed6e3aa --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java @@ -0,0 +1,20 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/start") +public class Start extends Command { + @Override + public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + redTelBot.execute(new SendMessage( + message.getChatId().toString(), + responseReader.applyWithException("responses/start.md") + )); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java new file mode 100644 index 0000000..a1e01d8 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -0,0 +1,22 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/stop") +public class Stop extends Command { + @Override + public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + redTelBot.stopPublishing(); + redTelBot.stopPolling(); + redTelBot.execute(new SendMessage( + message.getChatId().toString(), + responseReader.applyWithException("responses/stop.md") + )); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java new file mode 100644 index 0000000..0cbfd36 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java @@ -0,0 +1,22 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.service.dao.UserCommandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/suggestpost") +public class SuggestPost extends Command { + @Autowired + private UserCommandService userCommandService; + + @Override + public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + userCommandService.setUserCommand(message.getFrom().getId(), "/postsuggested"); + reply(message, "responses/suggestpost.md"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java new file mode 100644 index 0000000..d3e12d1 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java @@ -0,0 +1,22 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.github.yvasyliev.service.dao.UserCommandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/unblockauthor") +public class UnblockAuthor extends Command { + @Autowired + private UserCommandService userCommandService; + + @Override + public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + userCommandService.setUserCommand(message.getFrom().getId(), "/removeblockedauthor"); + reply(message, "responses/unblockauthor.md"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java new file mode 100644 index 0000000..98610a7 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java @@ -0,0 +1,38 @@ +package com.github.yvasyliev.service.telegram.factory; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; + +import java.util.Optional; +import java.util.function.Function; +import java.util.regex.Pattern; + +@Service +public class UsernameParser implements Function> { + @Override + public Optional apply(Message message) { + if (!message.hasText()) { + return Optional.empty(); + } + + var username = message.getText().trim(); + + var matcher = Pattern + .compile("https://www\\.reddit\\.com/user/(\\w+)") + .matcher(username); + if (matcher.find()) { + username = matcher.group(1); + } + + matcher = Pattern + .compile("u/(\\w+)") + .matcher(username); + if (matcher.matches()) { + username = matcher.group(1); + } + + return username.matches("\\w+") + ? Optional.of(username) + : Optional.empty(); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java new file mode 100644 index 0000000..b313048 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java @@ -0,0 +1,21 @@ +package com.github.yvasyliev.service.telegram.readers; + +import org.springframework.stereotype.Service; +import org.springframework.util.function.ThrowingFunction; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Objects; + +@Service +public class BotResponseReader implements ThrowingFunction { + @Override + public String applyWithException(String file) throws URISyntaxException, IOException { + return String.join( + "\n", + Files.readAllLines(Paths.get(Objects.requireNonNull(BotResponseReader.class.getClassLoader().getResource(file)).toURI())) + ).replace(".", "\\."); + } +} diff --git a/src/main/java/com/github/yvasyliev/telegram/AbstractTelegramBot.java b/src/main/java/com/github/yvasyliev/telegram/AbstractTelegramBot.java deleted file mode 100644 index 78712bd..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/AbstractTelegramBot.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.github.yvasyliev.telegram; - -import org.springframework.beans.factory.annotation.Value; -import org.telegram.telegrambots.bots.TelegramLongPollingBot; -import org.telegram.telegrambots.meta.api.objects.Update; - -public abstract class AbstractTelegramBot extends TelegramLongPollingBot { - @Value("${BOT_USERNAME}") - private String botUsername; - - public AbstractTelegramBot(String botToken) { - super(botToken); - } - - @Override - public void onUpdateReceived(Update update) { - } - - @Override - public String getBotUsername() { - return botUsername; - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBot.java b/src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBot.java deleted file mode 100644 index 8b87ed3..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBot.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.yvasyliev.telegram; - -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -@FunctionalInterface -public interface TelegramLoggerBot { - void log(String text) throws TelegramApiException; -} diff --git a/src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBotImpl.java b/src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBotImpl.java deleted file mode 100644 index 1eb4376..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/TelegramLoggerBotImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.github.yvasyliev.telegram; - -import org.springframework.beans.factory.annotation.Value; -import org.telegram.telegrambots.meta.api.methods.ParseMode; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -public class TelegramLoggerBotImpl extends AbstractTelegramBot implements TelegramLoggerBot { - @Value("${DEVELOPER_ID}") - private String developerId; - - @Value(""" - ``` - %s - ```""") - private String logTemplate; - - public TelegramLoggerBotImpl(String botToken) { - super(botToken); - } - - @Override - public void log(String text) throws TelegramApiException { - SendMessage sendMessage = SendMessage.builder() - .chatId(developerId) - .text(logTemplate.formatted(text)) - .parseMode(ParseMode.MARKDOWN) - .build(); - execute(sendMessage); - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBot.java b/src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBot.java deleted file mode 100644 index 81e8781..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBot.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.github.yvasyliev.telegram; - -import com.fasterxml.jackson.databind.JsonNode; - -import java.util.List; - -@FunctionalInterface -public interface TelegramRepeaterBot { - void repeatSubredditPosts(List dataList); -} diff --git a/src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBotImpl.java b/src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBotImpl.java deleted file mode 100644 index 11d2695..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/TelegramRepeaterBotImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.github.yvasyliev.telegram; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.chain.SubredditPostRepeaterChain; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; - -import java.util.List; - -public class TelegramRepeaterBotImpl extends AbstractTelegramBot implements TelegramRepeaterBot { - @Autowired - @Qualifier("subredditPostRepeaterChain") - private SubredditPostRepeaterChain subredditPostRepeaterChain; - - @Autowired - private TelegramSenderBot telegramSenderBot; - - public TelegramRepeaterBotImpl(String botToken) { - super(botToken); - } - - @Override - public void repeatSubredditPosts(List dataStream) { - dataStream.forEach(data -> subredditPostRepeaterChain.repeatRedditPost(data, telegramSenderBot, false)); - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/TelegramSenderBot.java b/src/main/java/com/github/yvasyliev/telegram/TelegramSenderBot.java deleted file mode 100644 index 5992de5..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/TelegramSenderBot.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.yvasyliev.telegram; - -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.io.InputStream; -import java.util.Collection; -import java.util.List; - -public interface TelegramSenderBot { - void sendText(String text, boolean needModerate) throws TelegramApiException; - - void sendPhoto(String photoUrl, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException; - - void sendPhoto(InputStream photo, String filename, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException; - - void sendMultiplePhotos(List photoUrls, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException; - - void sendGif(InputStream gif, String filename, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException; - - void sendVideo(InputStream video, String filename, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException; - - void sendDocument(InputStream document, String filename, String text, boolean needModerate) throws TelegramApiException; - - void sendPoll(String question, Collection options, boolean needModerate) throws TelegramApiException; -} diff --git a/src/main/java/com/github/yvasyliev/telegram/TelegramSenderBotImpl.java b/src/main/java/com/github/yvasyliev/telegram/TelegramSenderBotImpl.java deleted file mode 100644 index 1af4bb3..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/TelegramSenderBotImpl.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.github.yvasyliev.telegram; - -import org.springframework.beans.factory.annotation.Value; -import org.telegram.telegrambots.meta.api.methods.polls.SendPoll; -import org.telegram.telegrambots.meta.api.methods.send.SendAnimation; -import org.telegram.telegrambots.meta.api.methods.send.SendDocument; -import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; -import org.telegram.telegrambots.meta.api.methods.send.SendVideo; -import org.telegram.telegrambots.meta.api.objects.InputFile; -import org.telegram.telegrambots.meta.api.objects.media.InputMedia; -import org.telegram.telegrambots.meta.api.objects.media.InputMediaPhoto; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.io.InputStream; -import java.util.Collection; -import java.util.List; - -public class TelegramSenderBotImpl extends AbstractTelegramBot implements TelegramSenderBot { - @Value("${CHANNEL_ID}") - private String channelId; - - @Value("${DEVELOPER_ID}") - private String developerId; - - public TelegramSenderBotImpl(String botToken) { - super(botToken); - } - - @Override - public void sendText(String text, boolean needModerate) throws TelegramApiException { - var sendMessage = new SendMessage(needModerate ? developerId : channelId, text); - execute(sendMessage); - } - - @Override - public void sendPhoto(String photoUrl, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException { - var sendPhoto = SendPhoto.builder() - .chatId(needModerate ? developerId : channelId) - .photo(new InputFile(photoUrl)) - .caption(text) - .hasSpoiler(hasSpoiler) - .build(); - - execute(sendPhoto); - } - - @Override - public void sendPhoto(InputStream photo, String filename, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException { - var sendPhoto = SendPhoto.builder() - .chatId(needModerate ? developerId : channelId) - .photo(new InputFile(photo, filename)) - .caption(text) - .hasSpoiler(hasSpoiler) - .build(); - - execute(sendPhoto); - } - - @Override - public void sendMultiplePhotos(List photoUrls, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException { - var inputMediaPhotos = photoUrls - .stream() - .map(photoUrl -> (InputMedia) InputMediaPhoto - .builder() - .media(photoUrl) - .hasSpoiler(hasSpoiler) - .build() - ) - .toList(); - - inputMediaPhotos.get(0).setCaption(text); - - var sendMediaGroup = SendMediaGroup.builder() - .chatId(needModerate ? developerId : channelId) - .medias(inputMediaPhotos) - .build(); - - execute(sendMediaGroup); - } - - @Override - public void sendGif(InputStream gif, String filename, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException { - var sendAnimation = SendAnimation.builder() - .chatId(needModerate ? developerId : channelId) - .animation(new InputFile(gif, filename)) - .caption(text) - .hasSpoiler(hasSpoiler) - .build(); - - execute(sendAnimation); - } - - @Override - public void sendVideo(InputStream video, String filename, String text, boolean hasSpoiler, boolean needModerate) throws TelegramApiException { - var sendVideo = SendVideo.builder() - .chatId(needModerate ? developerId : channelId) - .video(new InputFile(video, filename)) - .caption(text) - .hasSpoiler(hasSpoiler) - .supportsStreaming(true) - .build(); - - execute(sendVideo); - } - - @Override - public void sendDocument(InputStream document, String filename, String text, boolean needModerate) throws TelegramApiException { - var sendDocument = SendDocument.builder() - .chatId(needModerate ? developerId : channelId) - .document(new InputFile(document, filename)) - .caption(text) - .build(); - - execute(sendDocument); - } - - @Override - public void sendPoll(String question, Collection options, boolean needModerate) throws TelegramApiException { - var sendPoll = SendPoll.builder() - .chatId(needModerate ? developerId : channelId) - .question(question) - .options(options) - .build(); - - execute(sendPoll); - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/FilterAuthorChain.java b/src/main/java/com/github/yvasyliev/telegram/chain/FilterAuthorChain.java deleted file mode 100644 index 77da5c4..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/FilterAuthorChain.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; - -import java.util.Properties; -import java.util.Set; - -public class FilterAuthorChain extends SubredditPostRepeaterChain { - @Value("#{'${SKIP_AUTHORS}'.split(',')}") - private Set restrictedAuthors; - - @Autowired - @Qualifier("appData") - public Properties appData; - - public FilterAuthorChain(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - super.repeatRedditPost(data, telegramSenderBot, restrictedAuthors.contains(data.get("author").textValue())); - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/NOPRepeaterChain.java b/src/main/java/com/github/yvasyliev/telegram/chain/NOPRepeaterChain.java deleted file mode 100644 index 8d191b3..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/NOPRepeaterChain.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; - -import java.util.Set; - -public class NOPRepeaterChain extends SubredditPostRepeaterChain { - private static final Logger LOGGER = LoggerFactory.getLogger(NOPRepeaterChain.class); - - @Value("#{{'vimeo.com', 'gfycat.com'}}") - private Set ignoredDomains; - - @Value(""" - Post was not repeated. - Created: {} - URL: {}""") - private String postNotHandledMessageTemplate; - - public NOPRepeaterChain() { - super(null); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - if (!ignoredDomains.contains(data.get("domain").textValue())) { - LOGGER.error( - postNotHandledMessageTemplate, - data.get("created").intValue(), - data.get("url").textValue() - ); - } - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/NsfwCheckChain.java b/src/main/java/com/github/yvasyliev/telegram/chain/NsfwCheckChain.java deleted file mode 100644 index 71dde1f..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/NsfwCheckChain.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; - -public class NsfwCheckChain extends SubredditPostRepeaterChain { - public NsfwCheckChain(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - super.repeatRedditPost(data, telegramSenderBot, hasSpoiler(data)); - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatGif.java b/src/main/java/com/github/yvasyliev/telegram/chain/RepeatGif.java deleted file mode 100644 index 3ba1f9e..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatGif.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.io.IOException; -import java.net.URL; -import java.util.Properties; - -public class RepeatGif extends SubredditPostRepeaterChain { - private static final Logger LOGGER = LoggerFactory.getLogger(RepeatGif.class); - - @Autowired - @Qualifier("appData") - public Properties appData; - - public RepeatGif(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - if (isGif(data)) { - var gifUrl = data - .get("preview") - .get("images") - .get(0) - .get("variants") - .get("mp4") - .get("source") - .get("url") - .textValue(); - - var fileName = gifUrl.substring(gifUrl.lastIndexOf('/') + 1); - if (fileName.contains("?")) { - fileName = fileName.substring(0, fileName.indexOf("?")); - } - - try (var inputStream = new URL(gifUrl).openStream()) { - telegramSenderBot.sendGif( - inputStream, - fileName, - data.get("title").textValue(), - hasSpoiler(data), - needModerate - ); - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - } catch (IOException | TelegramApiException e) { - LOGGER.error( - "Failed to send gif. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url_overridden_by_dest").textValue(), - e - ); - } - } else { - super.repeatRedditPost(data, telegramSenderBot, needModerate); - } - } - - private boolean isGif(JsonNode data) { - return data.has("url_overridden_by_dest") - && data.get("url_overridden_by_dest").textValue().endsWith(".gif") - && data.get("preview").get("images").get(0).get("variants").has("mp4"); - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatMultiplePhotos.java b/src/main/java/com/github/yvasyliev/telegram/chain/RepeatMultiplePhotos.java deleted file mode 100644 index e5492d8..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatMultiplePhotos.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.util.Comparator; -import java.util.List; -import java.util.Optional; -import java.util.Properties; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -public class RepeatMultiplePhotos extends SubredditPostRepeaterChain { - private static final Logger LOGGER = LoggerFactory.getLogger(RepeatMultiplePhotos.class); - - @Value("10") - private int pageSize; - - @Autowired - @Qualifier("appData") - public Properties appData; - - public RepeatMultiplePhotos(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - if (data.has("gallery_data")) { - var hasSpoiler = hasSpoiler(data); - var photoUrlsPages = extractPhotoUrlsPages(data); - try { - for (var i = 0; i < photoUrlsPages.size(); i++) { - var photoUrls = photoUrlsPages.get(i); - var text = buildText(data.get("title").textValue(), i + 1, photoUrlsPages.size()); - - if (photoUrls.size() == 1) { - telegramSenderBot.sendPhoto(photoUrls.get(0), text, hasSpoiler, needModerate); - } else { - telegramSenderBot.sendMultiplePhotos(photoUrls, text, hasSpoiler, needModerate); - sleep(5); - } - } - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - } catch (TelegramApiException e) { - LOGGER.error( - "Failed to send multiple Photos. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url_overridden_by_dest").textValue(), - e - ); - } - } else { - super.repeatRedditPost(data, telegramSenderBot, needModerate); - } - } - - private List> extractPhotoUrlsPages(JsonNode data) { - var photoUrls = extractPhotoUrls(data); - return IntStream - .range(0, photoUrls.size()) - .boxed() - .collect(Collectors.groupingBy( - i -> i / pageSize, - Collectors.mapping(photoUrls::get, Collectors.toList()) - )) - .values() - .stream() - .toList(); - } - - private List extractPhotoUrls(JsonNode data) { - var items = data.get("gallery_data").get("items").elements(); - return stream(items) - .map(item -> { - var mediaId = item.get("media_id").textValue(); - var metadata = data.get("media_metadata").get(mediaId); - return stream(metadata.get("p").elements()) - .max(Comparator.comparingInt(p -> p.get("x").intValue())); - }) - .filter(Optional::isPresent) - .map(optionalP -> optionalP.get().get("u").textValue()) - .toList(); - } - - private String buildText(String originalText, int pageNumber, int totalPages) { - var text = originalText; - - if (totalPages > 1) { - text = "%d/%d".formatted(pageNumber, totalPages); - if (originalText != null && !originalText.isEmpty()) { - text = "%s %s".formatted(originalText, text); - } - } - - return text; - } - - private void sleep(long seconds) { - try { - TimeUnit.SECONDS.sleep(seconds); - } catch (InterruptedException e) { - LOGGER.error("Failed to sleep by {} seconds.", seconds, e); - } - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatNestedPost.java b/src/main/java/com/github/yvasyliev/telegram/chain/RepeatNestedPost.java deleted file mode 100644 index aa1f082..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatNestedPost.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.ApplicationContext; - -import java.util.Properties; - -public class RepeatNestedPost extends SubredditPostRepeaterChain { - @Autowired - private ApplicationContext applicationContext; - - @Autowired - @Qualifier("appData") - public Properties appData; - - public RepeatNestedPost(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - if (data.has("crosspost_parent_list")) { - var created = appData.getProperty("PREVIOUS_REDDIT_POST_CREATED", "0"); - var subredditPostRepeaterChain = applicationContext.getBean("subredditPostRepeaterChain", SubredditPostRepeaterChain.class); - subredditPostRepeaterChain.repeatRedditPost( - data.get("crosspost_parent_list").get(0), - telegramSenderBot, - needModerate - ); - if (!created.equals(appData.getProperty("PREVIOUS_REDDIT_POST_CREATED"))) { - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - } - } else { - super.repeatRedditPost(data, telegramSenderBot, needModerate); - } - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatPhoto.java b/src/main/java/com/github/yvasyliev/telegram/chain/RepeatPhoto.java deleted file mode 100644 index 01a8e1c..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatPhoto.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; -import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Properties; -import java.util.Set; - -public class RepeatPhoto extends SubredditPostRepeaterChain { - private static final Logger LOGGER = LoggerFactory.getLogger(RepeatPhoto.class); - @Value("#{{'.jpg', '.png', '.jpeg'}}") - private Set photoExtensions; - - @Autowired - @Qualifier("appData") - public Properties appData; - - public RepeatPhoto(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - // TODO: 9/28/2023 refactor it. - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - var photoUrl = extractPhotoUrl(data); - if (photoUrl != null) { - var text = data.get("title").textValue(); - var hasSpoiler = hasSpoiler(data); - - try { - try { - telegramSenderBot.sendPhoto(photoUrl, text, hasSpoiler, needModerate); - } catch (TelegramApiRequestException e) { - var apiResponse = e.getApiResponse(); - - if ("Bad Request: wrong file identifier/HTTP URL specified".equals(apiResponse)) { - try { - sendPhotoInputStream( - photoUrl, - (inputStream, filename) -> telegramSenderBot.sendPhoto(inputStream, filename, text, hasSpoiler, needModerate) - ); - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - return; - } catch (TelegramApiRequestException ex) { - apiResponse = ex.getApiResponse(); - } - } - - if ("Bad Request: PHOTO_INVALID_DIMENSIONS".equals(apiResponse)) { - sendPhotoInputStream( - photoUrl, - (inputStream, filename) -> telegramSenderBot.sendDocument(inputStream, filename, text, needModerate) - ); - } else { - throw e; - } - } - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - } catch (IOException | TelegramApiException e) { - LOGGER.error( - "Failed to send photo. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url_overridden_by_dest").textValue(), - e - ); - } - } else { - super.repeatRedditPost(data, telegramSenderBot, needModerate); - } - } - - private String extractPhotoUrl(JsonNode data) { - if (data.has("url_overridden_by_dest")) { - var urlOverriddenByDest = data.get("url_overridden_by_dest").textValue(); - - if (urlOverriddenByDest.endsWith(".jpg1")) { - return urlOverriddenByDest.substring(0, urlOverriddenByDest.length() - 1); - } - - if (photoExtensions.stream().anyMatch(urlOverriddenByDest::endsWith)) { - var photoUrl = data - .get("preview") - .get("images") - .get(0) - .get("source") - .get("url") - .textValue(); - - return photoUrl.contains("auto=webp") ? urlOverriddenByDest : photoUrl; - } - } - - return null; - } - - private void sendPhotoInputStream(String photoUrl, SenderFunction senderFunction) throws IOException, TelegramApiException { - try (var inputStream = new URL(photoUrl).openStream()) { - var filename = photoUrl.substring(photoUrl.lastIndexOf('/') + 1); - senderFunction.send(inputStream, filename); - } - } - - @FunctionalInterface - private interface SenderFunction { - void send(InputStream inputStream, String filename) throws TelegramApiException; - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatPoll.java b/src/main/java/com/github/yvasyliev/telegram/chain/RepeatPoll.java deleted file mode 100644 index f15876f..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatPoll.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.util.Properties; - -public class RepeatPoll extends SubredditPostRepeaterChain { - private static final Logger LOGGER = LoggerFactory.getLogger(RepeatMultiplePhotos.class); - - @Autowired - @Qualifier("appData") - public Properties appData; - - public RepeatPoll(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - if (data.has("poll_data")) { - var redditOptions = data.get("poll_data").get("options").elements(); - var options = stream(redditOptions) - .map(redditOption -> redditOption.get("text").textValue()) - .toList(); - - try { - telegramSenderBot.sendPoll(data.get("title").textValue(), options, needModerate); - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - } catch (TelegramApiException e) { - LOGGER.error( - "Failed to send multiple Photos. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url_overridden_by_dest").textValue(), - e - ); - } - } else { - super.repeatRedditPost(data, telegramSenderBot, needModerate); - } - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatText.java b/src/main/java/com/github/yvasyliev/telegram/chain/RepeatText.java deleted file mode 100644 index 03d540d..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatText.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.util.Properties; -import java.util.Set; - -public class RepeatText extends SubredditPostRepeaterChain { - private static final Logger LOGGER = LoggerFactory.getLogger(RepeatText.class); - - @Value("#{{'youtube.com', 'youtu.be'}}") - private Set youtubeDomains; - - @Value("#{{'.gifv'}}") - private Set videoExtensions; - - @Autowired - @Qualifier("appData") - public Properties appData; - - public RepeatText(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - if (isTextPost(data)) { - try { - var text = """ - %s - %s""" - .formatted( - data.get("title").textValue(), - data.get("url_overridden_by_dest").textValue() - ); - telegramSenderBot.sendText(text, needModerate); - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - } catch (TelegramApiException e) { - LOGGER.error( - "Failed to send text. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url_overridden_by_dest").textValue(), - e - ); - } - } else { - super.repeatRedditPost(data, telegramSenderBot, needModerate); - } - } - - private boolean isTextPost(JsonNode data) { - if (data.has("post_hint")) { - var postHint = data.get("post_hint").textValue(); - if ("link".equals(postHint)) { - if (data.has("url_overridden_by_dest")) { - var urlOverriddenByDest = data.get("url_overridden_by_dest").textValue(); - return videoExtensions.stream().noneMatch(urlOverriddenByDest::endsWith); - } - return true; - } - } - return data.has("domain") && youtubeDomains.contains(data.get("domain").textValue()); - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatVideo.java b/src/main/java/com/github/yvasyliev/telegram/chain/RepeatVideo.java deleted file mode 100644 index d2ff526..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/RepeatVideo.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.exceptions.VideoUrlParseException; -import com.github.yvasyliev.service.reddit.RedditVideoDownloader; -import com.github.yvasyliev.telegram.TelegramSenderBot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.io.IOException; -import java.net.URL; -import java.util.Properties; - -public class RepeatVideo extends SubredditPostRepeaterChain { - private static final Logger LOGGER = LoggerFactory.getLogger(RepeatVideo.class); - - @Autowired - private RedditVideoDownloader redditVideoDownloader; - - @Autowired - @Qualifier("appData") - public Properties appData; - - public RepeatVideo(SubredditPostRepeaterChain nextChain) { - super(nextChain); - } - - @Override - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - try { - var videoUrl = extractVideoUrl(data); - if (videoUrl != null) { - var filename = videoUrl.substring(videoUrl.lastIndexOf('/') + 1); - try (var inputStream = new URL(videoUrl).openStream()) { - telegramSenderBot.sendVideo( - inputStream, - filename, - data.get("title").textValue(), - hasSpoiler(data), - needModerate - ); - } - appData.setProperty("PREVIOUS_REDDIT_POST_CREATED", String.valueOf(data.get("created").intValue())); - } else { - super.repeatRedditPost(data, telegramSenderBot, needModerate); - } - } catch (IOException | VideoUrlParseException | TelegramApiException e) { - LOGGER.error( - "Failed to send video. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url_overridden_by_dest").textValue(), - e - ); - } - } - - private String extractVideoUrl(JsonNode data) throws IOException, VideoUrlParseException { - if (data.get("is_video").booleanValue()) { - var redditPostUrl = "https://www.reddit.com%s".formatted(data.get("permalink").textValue()); - return redditVideoDownloader.getVideoDownloadUrl(redditPostUrl); - } - - if (data.has("media")) { - var media = data.get("media"); - if (media.has("reddit_video")) { - return media.get("reddit_video").get("fallback_url").textValue(); - } - } - - if (data.has("preview")) { - var preview = data.get("preview"); - if (preview.has("reddit_video_preview")) { - return preview.get("reddit_video_preview").get("fallback_url").textValue(); - } - } - - return null; - } -} diff --git a/src/main/java/com/github/yvasyliev/telegram/chain/SubredditPostRepeaterChain.java b/src/main/java/com/github/yvasyliev/telegram/chain/SubredditPostRepeaterChain.java deleted file mode 100644 index ba83794..0000000 --- a/src/main/java/com/github/yvasyliev/telegram/chain/SubredditPostRepeaterChain.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.yvasyliev.telegram.chain; - -import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.telegram.TelegramSenderBot; - -import java.util.Iterator; -import java.util.Spliterator; -import java.util.Spliterators; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; - -public abstract class SubredditPostRepeaterChain { - private final SubredditPostRepeaterChain nextChain; - - public SubredditPostRepeaterChain(SubredditPostRepeaterChain nextChain) { - this.nextChain = nextChain; - } - - public void repeatRedditPost(JsonNode data, TelegramSenderBot telegramSenderBot, boolean needModerate) { - nextChain.repeatRedditPost(data, telegramSenderBot, needModerate); - } - - protected boolean hasSpoiler(JsonNode data) { - return "nsfw".equals(data.get("thumbnail").textValue()); - } - - protected Stream stream(Iterator elements) { - return StreamSupport.stream(Spliterators.spliteratorUnknownSize(elements, Spliterator.ORDERED), false); - } -} diff --git a/src/main/resources/hibernate.properties b/src/main/resources/hibernate.properties new file mode 100644 index 0000000..1dbb085 --- /dev/null +++ b/src/main/resources/hibernate.properties @@ -0,0 +1,12 @@ +# Database connection settings +hibernate.connection.url=jdbc:h2:mem:demo +hibernate.connection.username=sa +hibernate.connection.password= + +# Echo all executed SQL to console +#hibernate.show_sql=true +hibernate.format_sql=true +hibernate.highlight_sql=true + +# Automatically export the schema +hibernate.hbm2ddl.auto=create-drop \ No newline at end of file diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 2a57aba..98f469a 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -31,5 +31,9 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/responses/addblockedauthor.md b/src/main/resources/responses/addblockedauthor.md new file mode 100644 index 0000000..697bfc5 --- /dev/null +++ b/src/main/resources/responses/addblockedauthor.md @@ -0,0 +1,5 @@ +✅ Author [%s](https://www.reddit.com/user/%s) has been blocked. + +Send me another username if you want to block another author. + +Send /done if that was the last author. \ No newline at end of file diff --git a/src/main/resources/responses/approvepost.md b/src/main/resources/responses/approvepost.md new file mode 100644 index 0000000..8d14f78 --- /dev/null +++ b/src/main/resources/responses/approvepost.md @@ -0,0 +1,3 @@ +~%s~ + +✅ Approved \ No newline at end of file diff --git a/src/main/resources/responses/blockauthor.md b/src/main/resources/responses/blockauthor.md new file mode 100644 index 0000000..fb48d4e --- /dev/null +++ b/src/main/resources/responses/blockauthor.md @@ -0,0 +1 @@ +👮‍♂️ Send me Reddit username or profile link to block: \ No newline at end of file diff --git a/src/main/resources/responses/cancel.md b/src/main/resources/responses/cancel.md new file mode 100644 index 0000000..64cf758 --- /dev/null +++ b/src/main/resources/responses/cancel.md @@ -0,0 +1 @@ +🙌 The command was cancelled. \ No newline at end of file diff --git a/src/main/resources/responses/done.md b/src/main/resources/responses/done.md new file mode 100644 index 0000000..15d89ab --- /dev/null +++ b/src/main/resources/responses/done.md @@ -0,0 +1 @@ +👍 OK. \ No newline at end of file diff --git a/src/main/resources/responses/getblocked.md b/src/main/resources/responses/getblocked.md new file mode 100644 index 0000000..9f7500b --- /dev/null +++ b/src/main/resources/responses/getblocked.md @@ -0,0 +1,3 @@ +🗑️ Blocked authors: + +%s \ No newline at end of file diff --git a/src/main/resources/responses/pausepublishing.md b/src/main/resources/responses/pausepublishing.md new file mode 100644 index 0000000..dd2c4cd --- /dev/null +++ b/src/main/resources/responses/pausepublishing.md @@ -0,0 +1 @@ +😐 Ok, I will pause post publishing. \ No newline at end of file diff --git a/src/main/resources/responses/postsuggested.md b/src/main/resources/responses/postsuggested.md new file mode 100644 index 0000000..32547c4 --- /dev/null +++ b/src/main/resources/responses/postsuggested.md @@ -0,0 +1,2 @@ +✍️ Your post has been sent to moderation. +Once it's approved, you'll see it in the channel. 😎 \ No newline at end of file diff --git a/src/main/resources/responses/removeblockedauthor.md b/src/main/resources/responses/removeblockedauthor.md new file mode 100644 index 0000000..a277671 --- /dev/null +++ b/src/main/resources/responses/removeblockedauthor.md @@ -0,0 +1,5 @@ +✅ Author [%s](https://www.reddit.com/user/%s) has been unblocked. + +Send me another username if you want to unblock another author. + +Send /done if that was the last author. \ No newline at end of file diff --git a/src/main/resources/responses/resumepublishing.md b/src/main/resources/responses/resumepublishing.md new file mode 100644 index 0000000..f2be81d --- /dev/null +++ b/src/main/resources/responses/resumepublishing.md @@ -0,0 +1 @@ +🫡 Sure, I'll resume post publishing. \ No newline at end of file diff --git a/src/main/resources/responses/start.md b/src/main/resources/responses/start.md new file mode 100644 index 0000000..c7a5e80 --- /dev/null +++ b/src/main/resources/responses/start.md @@ -0,0 +1,5 @@ +👋 Greetings! + +🤓 I can duplicate Subreddit posts to Telegram channel. + +Send /help to see available commands. \ No newline at end of file diff --git a/src/main/resources/responses/stop.md b/src/main/resources/responses/stop.md new file mode 100644 index 0000000..8a0ab22 --- /dev/null +++ b/src/main/resources/responses/stop.md @@ -0,0 +1 @@ +😔 Stopping bot... \ No newline at end of file diff --git a/src/main/resources/responses/suggestpost.md b/src/main/resources/responses/suggestpost.md new file mode 100644 index 0000000..aa1b8a3 --- /dev/null +++ b/src/main/resources/responses/suggestpost.md @@ -0,0 +1 @@ +📝 Ok, send me the post you want to publish: \ No newline at end of file diff --git a/src/main/resources/responses/unblockauthor.md b/src/main/resources/responses/unblockauthor.md new file mode 100644 index 0000000..e3be848 --- /dev/null +++ b/src/main/resources/responses/unblockauthor.md @@ -0,0 +1 @@ +👮‍♂️ Send me Reddit username or profile link to unblock: \ No newline at end of file diff --git a/src/main/resources/responses/usernamenotrecognized.md b/src/main/resources/responses/usernamenotrecognized.md new file mode 100644 index 0000000..3edb0a3 --- /dev/null +++ b/src/main/resources/responses/usernamenotrecognized.md @@ -0,0 +1 @@ +🤷‍♂️ Username was not recognized. Try again: \ No newline at end of file From e4160b6a401be372428f6a9af1ecae2ac400aa2e Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 10:18:55 +0300 Subject: [PATCH 02/93] removed hibernate dependency --- pom.xml | 10 --- .../yvasyliev/bots/telegram/RedTelBot.java | 23 ++++--- .../bots/telegram/TelegramPublisher.java | 14 ++--- .../config/RedTelBotConfiguration.java | 39 +++--------- .../yvasyliev/model/{entity => dto}/Post.java | 11 +--- .../yvasyliev/model/entity/BlockedAuthor.java | 25 -------- .../github/yvasyliev/model/entity/State.java | 38 ------------ .../yvasyliev/model/entity/UserCommand.java | 38 ------------ .../service/dao/AbstractService.java | 9 --- .../service/dao/BlockedAuthorService.java | 34 ----------- .../yvasyliev/service/dao/PostService.java | 19 ------ .../yvasyliev/service/dao/StateService.java | 20 ------ .../service/dao/UserCommandService.java | 26 -------- .../deserializers/PostDeserializer.java | 10 +-- .../deserializers/mappers/GifPostMapper.java | 2 +- .../mappers/PhotoGroupPostMapper.java | 2 +- .../mappers/PhotoPostMapper.java | 2 +- .../deserializers/mappers/PollPostMapper.java | 2 +- .../deserializers/mappers/PostMapper.java | 2 +- .../deserializers/mappers/TextPostMapper.java | 2 +- .../mappers/VideoPostMapper.java | 2 +- .../service/factories/StateFactoryBean.java | 32 ++++++++++ .../github/yvasyliev/service/json/State.java | 61 +++++++++++++++++++ .../service/reddit/RedditPostService.java | 8 +-- .../telegram/commands/AddBlockedAuthor.java | 15 +++-- .../telegram/commands/BlockAuthor.java | 7 +-- .../service/telegram/commands/Cancel.java | 7 +-- .../service/telegram/commands/GetBlocked.java | 10 +-- .../commands/RemoveBlockedAuthor.java | 9 +-- .../telegram/commands/SuggestPost.java | 7 +-- .../telegram/commands/UnblockAuthor.java | 7 +-- src/main/resources/hibernate.properties | 12 ---- 32 files changed, 162 insertions(+), 343 deletions(-) rename src/main/java/com/github/yvasyliev/model/{entity => dto}/Post.java (89%) delete mode 100644 src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java delete mode 100644 src/main/java/com/github/yvasyliev/model/entity/State.java delete mode 100644 src/main/java/com/github/yvasyliev/model/entity/UserCommand.java delete mode 100644 src/main/java/com/github/yvasyliev/service/dao/AbstractService.java delete mode 100644 src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java delete mode 100644 src/main/java/com/github/yvasyliev/service/dao/PostService.java delete mode 100644 src/main/java/com/github/yvasyliev/service/dao/StateService.java delete mode 100644 src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java create mode 100644 src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java create mode 100644 src/main/java/com/github/yvasyliev/service/json/State.java delete mode 100644 src/main/resources/hibernate.properties diff --git a/pom.xml b/pom.xml index f460836..152ec30 100644 --- a/pom.xml +++ b/pom.xml @@ -115,15 +115,5 @@ log4j-core 2.20.0 - - com.h2database - h2 - 2.2.224 - - - org.hibernate.orm - hibernate-core - 6.3.1.Final - diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index bbbd544..def8efc 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -3,8 +3,6 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.CallbackData; -import com.github.yvasyliev.model.entity.UserCommand; -import com.github.yvasyliev.service.dao.UserCommandService; import com.github.yvasyliev.service.telegram.callbacks.Callback; import com.github.yvasyliev.service.telegram.commands.Command; import org.slf4j.Logger; @@ -19,7 +17,9 @@ import org.telegram.telegrambots.meta.generics.BotSession; import java.util.List; +import java.util.Map; import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; public class RedTelBot extends TelegramPublisher { private static final Logger LOGGER = LoggerFactory.getLogger(RedTelBot.class); @@ -27,14 +27,13 @@ public class RedTelBot extends TelegramPublisher { @Autowired private ApplicationContext context; - @Autowired - private UserCommandService userCommandService; - @Autowired private ObjectMapper objectMapper; private BotSession botSession; + private final Map userCommands = new ConcurrentHashMap<>(); + public RedTelBot(@Value("${BOT_TOKEN}") String botToken) { super(botToken); } @@ -102,17 +101,23 @@ private Optional getCommand(Message message) { if (message.hasText()) { var text = message.getText().trim(); if (looksLikeCommand(text)) { - userCommandService.removeUserCommand(userId); + removeUserCommand(userId); return Optional.of(text); } } - return userCommandService - .getUserCommand(userId) - .map(UserCommand::getCommand); + return Optional.ofNullable(userCommands.get(userId)); } private boolean looksLikeCommand(String text) { return text.matches("/\\w+"); } + + public String addUserCommand(long userId, String command) { + return userCommands.put(userId, command); + } + + public String removeUserCommand(long userId) { + return userCommands.remove(userId); + } } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java index 1eafdf6..62b2d73 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java @@ -3,9 +3,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.RedditPostApprovedData; -import com.github.yvasyliev.model.entity.Post; -import com.github.yvasyliev.service.dao.PostService; -import com.github.yvasyliev.service.dao.StateService; +import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.service.json.State; import com.github.yvasyliev.service.reddit.RedditPostService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,13 +47,10 @@ public abstract class TelegramPublisher extends AbstractRedTelBot { @Autowired private RedditPostService redditPostService; - @Autowired - private PostService postService; - private final AtomicBoolean publishing = new AtomicBoolean(true); @Autowired - private StateService stateService; + private State state; @Autowired private ObjectMapper objectMapper; @@ -113,12 +109,14 @@ public void publishPost(Post post) { askApprove(chatId, post); postCandidates.put(post.getCreated(), post); } + state.setLastCreated(post.getCreated()); } catch (TelegramApiException e) { LOGGER.error("Failed to send post: {}", post, e); } catch (JsonProcessingException e) { LOGGER.error("Failed to serialize post: {}", post, e); + } catch (IOException e) { + LOGGER.error("Failed to save last_created: {}", post.getCreated(), e); } - stateService.setLastCreated(post.getCreated()); // try { // TimeUnit.SECONDS.sleep(10); // } catch (InterruptedException e) { diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java index c4e00ca..72f4ea2 100644 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -5,14 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.github.yvasyliev.bots.telegram.RedTelBot; -import com.github.yvasyliev.model.entity.BlockedAuthor; -import com.github.yvasyliev.model.entity.Post; -import com.github.yvasyliev.model.entity.State; -import com.github.yvasyliev.model.entity.UserCommand; -import org.hibernate.SessionFactory; -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.service.ServiceRegistry; +import com.github.yvasyliev.model.dto.Post; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -22,6 +15,7 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; +import java.io.File; import java.net.http.HttpClient; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -61,30 +55,6 @@ public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); } - @Bean(destroyMethod = "close") - public ServiceRegistry standardServiceRegistry() { - return new StandardServiceRegistryBuilder().build(); - } - - @Bean(destroyMethod = "close") - public SessionFactory sessionFactory() { - var registry = standardServiceRegistry(); - try { - return new MetadataSources(registry) - .addAnnotatedClasses( - BlockedAuthor.class, - Post.class, - State.class, - UserCommand.class - ) - .buildMetadata() - .buildSessionFactory(); - } catch (Exception e) { - StandardServiceRegistryBuilder.destroy(registry); - throw e; - } - } - @Bean public RedTelBot redTelBot(@Value("${BOT_TOKEN}") String botToken) { return new RedTelBot(botToken); @@ -94,4 +64,9 @@ public RedTelBot redTelBot(@Value("${BOT_TOKEN}") String botToken) { public HttpClient httpClient() { return HttpClient.newHttpClient(); } + + @Bean + public File stateSrc() { + return new File("state.json"); + } } diff --git a/src/main/java/com/github/yvasyliev/model/entity/Post.java b/src/main/java/com/github/yvasyliev/model/dto/Post.java similarity index 89% rename from src/main/java/com/github/yvasyliev/model/entity/Post.java rename to src/main/java/com/github/yvasyliev/model/dto/Post.java index f9c2fba..96e21f1 100644 --- a/src/main/java/com/github/yvasyliev/model/entity/Post.java +++ b/src/main/java/com/github/yvasyliev/model/dto/Post.java @@ -1,24 +1,15 @@ -package com.github.yvasyliev.model.entity; - -import com.github.yvasyliev.model.dto.PostType; -import jakarta.persistence.ElementCollection; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.Id; +package com.github.yvasyliev.model.dto; import java.util.List; -@Entity public class Post implements Comparable { private PostType type; - @Id private Integer created = 0; private String author; private String text; private Boolean hasSpoiler; private Boolean approved; private String mediaUrl; - @ElementCollection(fetch = FetchType.EAGER) private List> photoUrlsPages; private List options; private String postUrl; diff --git a/src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java b/src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java deleted file mode 100644 index 1182258..0000000 --- a/src/main/java/com/github/yvasyliev/model/entity/BlockedAuthor.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.yvasyliev.model.entity; - -import jakarta.persistence.Entity; -import jakarta.persistence.Id; - -@Entity -public class BlockedAuthor { - @Id - private String username; - - public BlockedAuthor() { - } - - public BlockedAuthor(String username) { - this.username = username; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } -} diff --git a/src/main/java/com/github/yvasyliev/model/entity/State.java b/src/main/java/com/github/yvasyliev/model/entity/State.java deleted file mode 100644 index 0e1071a..0000000 --- a/src/main/java/com/github/yvasyliev/model/entity/State.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.github.yvasyliev.model.entity; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; - -@Entity -public class State { - @Id - private String name; - - @Column(name = "val", nullable = false) - private String value; - - public State() { - } - - public State(String name, String value) { - this.name = name; - this.value = value; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } -} diff --git a/src/main/java/com/github/yvasyliev/model/entity/UserCommand.java b/src/main/java/com/github/yvasyliev/model/entity/UserCommand.java deleted file mode 100644 index f6dee54..0000000 --- a/src/main/java/com/github/yvasyliev/model/entity/UserCommand.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.github.yvasyliev.model.entity; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; - -@Entity -public class UserCommand { - @Id - private Long userId; - - @Column(nullable = false) - private String command; - - public UserCommand() { - } - - public UserCommand(Long userId, String command) { - this.userId = userId; - this.command = command; - } - - public Long getUserId() { - return userId; - } - - public void setUserId(Long userId) { - this.userId = userId; - } - - public String getCommand() { - return command; - } - - public void setCommand(String command) { - this.command = command; - } -} diff --git a/src/main/java/com/github/yvasyliev/service/dao/AbstractService.java b/src/main/java/com/github/yvasyliev/service/dao/AbstractService.java deleted file mode 100644 index bbea37e..0000000 --- a/src/main/java/com/github/yvasyliev/service/dao/AbstractService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.github.yvasyliev.service.dao; - -import org.hibernate.SessionFactory; -import org.springframework.beans.factory.annotation.Autowired; - -public abstract class AbstractService { - @Autowired - protected SessionFactory sessionFactory; -} diff --git a/src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java b/src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java deleted file mode 100644 index 0640e6c..0000000 --- a/src/main/java/com/github/yvasyliev/service/dao/BlockedAuthorService.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.github.yvasyliev.service.dao; - -import com.github.yvasyliev.model.entity.BlockedAuthor; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class BlockedAuthorService extends AbstractService { - public BlockedAuthor get(String username) { - return sessionFactory.fromSession(session -> session.find(BlockedAuthor.class, username)); - } - - public BlockedAuthor block(String username) { - return sessionFactory.fromTransaction(session -> session.merge(new BlockedAuthor(username))); - } - - public boolean isBlocked(String username) { - return get(username) != null; - } - - public void unblock(String username) { - sessionFactory.inTransaction(session -> { - var blockedAuthor = session.find(BlockedAuthor.class, username); - if (blockedAuthor != null) { - session.remove(blockedAuthor); - } - }); - } - - public List findAll() { - return sessionFactory.fromSession(session -> session.createQuery("from BlockedAuthor", BlockedAuthor.class).list()); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/dao/PostService.java b/src/main/java/com/github/yvasyliev/service/dao/PostService.java deleted file mode 100644 index 28ac7d3..0000000 --- a/src/main/java/com/github/yvasyliev/service/dao/PostService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.yvasyliev.service.dao; - -import com.github.yvasyliev.model.entity.Post; -import org.springframework.stereotype.Service; - -@Service -public class PostService extends AbstractService { - public Post save(Post post) { - return sessionFactory.fromTransaction(session -> session.merge(post)); - } - - public Post get(int created) { - return sessionFactory.fromTransaction(session -> session.get(Post.class, created)); - } - - public void remove(Post post) { - sessionFactory.inTransaction(session -> session.remove(post)); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/dao/StateService.java b/src/main/java/com/github/yvasyliev/service/dao/StateService.java deleted file mode 100644 index f99d90e..0000000 --- a/src/main/java/com/github/yvasyliev/service/dao/StateService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.github.yvasyliev.service.dao; - -import com.github.yvasyliev.model.entity.State; -import org.springframework.stereotype.Service; - -@Service -public class StateService extends AbstractService { - public int getLastCreated() { - return sessionFactory.fromSession(session -> { - var lastCreated = session.get(State.class, "last_created"); - return lastCreated != null - ? Integer.parseInt(lastCreated.getValue()) - : 0; - }); - } - - public State setLastCreated(int created) { - return sessionFactory.fromTransaction(session -> session.merge(new State("last_created", String.valueOf(created)))); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java b/src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java deleted file mode 100644 index 29a068c..0000000 --- a/src/main/java/com/github/yvasyliev/service/dao/UserCommandService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.github.yvasyliev.service.dao; - -import com.github.yvasyliev.model.entity.UserCommand; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -@Service -public class UserCommandService extends AbstractService { - public UserCommand setUserCommand(long userId, String command) { - return sessionFactory.fromTransaction(session -> session.merge(new UserCommand(userId, command))); - } - - public void removeUserCommand(long userId) { - sessionFactory.inTransaction(session -> { - var userCommand = session.find(UserCommand.class, userId); - if (userCommand != null) { - session.remove(userCommand); - } - }); - } - - public Optional getUserCommand(long userId) { - return sessionFactory.fromSession(session -> Optional.ofNullable(session.find(UserCommand.class, userId))); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index fecd14b..6e582b2 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -4,12 +4,13 @@ import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.entity.Post; -import com.github.yvasyliev.service.dao.BlockedAuthorService; +import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.service.deserializers.mappers.PostMapper; +import com.github.yvasyliev.service.json.State; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import java.io.IOException; @@ -22,7 +23,7 @@ public class PostDeserializer extends JsonDeserializer { private List postMappers; @Autowired - private BlockedAuthorService blockedAuthorService; + private ApplicationContext context; @Override public Post deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { @@ -32,6 +33,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var hasSpoiler = "nsfw".equals(jsonPost.get("thumbnail").textValue()); var created = jsonPost.get("created").intValue(); var postUrl = jsonPost.get("url_overridden_by_dest").textValue(); + var state = context.getBean("state", State.class); jsonPost = extractRootPost(jsonPost); for (PostMapper postMapper : postMappers) { @@ -40,7 +42,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ post.setAuthor(author); post.setHasSpoiler(hasSpoiler); post.setCreated(created); - post.setApproved(blockedAuthorService.isBlocked(author)); + post.setApproved(state.getBlockedAuthors().contains(author)); post.setPostUrl(postUrl); return post; } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java index bf0bf3b..e5a16a5 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.PostType; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java index 8787f00..60f09f8 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.PostType; -import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.Post; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java index 06b1d64..39e8229 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.PostType; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java index 2f5d3f5..1bb5b4c 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.PostType; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java index a51d1e5..40597e0 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.Post; import java.io.IOException; import java.util.Iterator; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java index ff3cdc3..6dc845a 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.PostType; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java index 3e5c655..311b1ea 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.entity.Post; +import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.PostType; import com.github.yvasyliev.service.reddit.RedditVideoDownloader; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java b/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java new file mode 100644 index 0000000..256c790 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java @@ -0,0 +1,32 @@ +package com.github.yvasyliev.service.factories; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.service.json.State; +import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.IOException; +import java.util.TreeSet; + +@Component +public class StateFactoryBean implements FactoryBean { + @Autowired + private File stateSrc; + + @Autowired + private ObjectMapper objectMapper; + + @Override + public State getObject() throws IOException { + return stateSrc.exists() + ? objectMapper.readValue(stateSrc, State.class) + : new State(0, new TreeSet<>()); + } + + @Override + public Class getObjectType() { + return State.class; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/json/State.java b/src/main/java/com/github/yvasyliev/service/json/State.java new file mode 100644 index 0000000..7a01fe4 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/json/State.java @@ -0,0 +1,61 @@ +package com.github.yvasyliev.service.json; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.IOException; +import java.util.SortedSet; + +@Service +@JsonIgnoreProperties(value = {"objectMapper", "stateSrc"}, ignoreUnknown = true) +public class State { + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private File stateSrc; + + private int lastCreated; + + private SortedSet blockedAuthors; + + public State(int lastCreated, SortedSet blockedAuthors) { + this.lastCreated = lastCreated; + this.blockedAuthors = blockedAuthors; + } + + public int getLastCreated() { + return lastCreated; + } + + public void setLastCreated(int lastCreated) throws IOException { + this.lastCreated = lastCreated; + save(); + } + + public SortedSet getBlockedAuthors() { + return blockedAuthors; + } + + public void setBlockedAuthors(SortedSet blockedAuthors) throws IOException { + this.blockedAuthors = blockedAuthors; + save(); + } + + public void addBlockedAuthor(String author) throws IOException { + this.blockedAuthors.add(author); + save(); + } + + public void removeBlockedAuthor(String author) throws IOException { + this.blockedAuthors.remove(author); + save(); + } + + private void save() throws IOException { + objectMapper.writeValue(stateSrc, this); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java index 4e71fd9..cc9db8b 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java @@ -3,8 +3,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.model.entity.Post; -import com.github.yvasyliev.service.dao.StateService; +import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.service.json.State; import com.github.yvasyliev.service.reddit.api.Request; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,7 +32,7 @@ public class RedditPostService { private int delayMinutes; @Autowired - private StateService stateService; + private State state; @Autowired private ObjectMapper objectMapper; @@ -43,7 +43,7 @@ public List findNewPosts() throws IOException, InterruptedException { .get("data") .get("children") .elements(); - var lastCreated = stateService.getLastCreated(); + var lastCreated = state.getLastCreated(); return StreamSupport .stream(Spliterators.spliteratorUnknownSize(children, Spliterator.ORDERED), false) .map(child -> child.get("data")) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java index 0ec7e6c..19b7aeb 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -1,24 +1,29 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.dao.BlockedAuthorService; +import com.github.yvasyliev.service.json.State; import com.github.yvasyliev.service.telegram.factory.UsernameParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; @Service("/addblockedauthor") public class AddBlockedAuthor extends Command { - @Autowired - protected BlockedAuthorService blockedAuthorService; @Autowired private UsernameParser usernameParser; + @Autowired + private State state; + @Override - public void acceptWithException(Message message) throws Exception { + public void acceptWithException(Message message) throws IOException, TelegramApiException, URISyntaxException { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); - blockedAuthorService.block(username); + state.addBlockedAuthor(username); reply(message, "responses/addblockedauthor.md", username, username); } else { reply(message, "responses/usernamenotrecognized.md"); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java index 354695a..ce54f0f 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java @@ -1,7 +1,5 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.dao.UserCommandService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -11,12 +9,9 @@ @Service("/blockauthor") public class BlockAuthor extends Command { - @Autowired - private UserCommandService userCommandService; - @Override public void acceptWithException(Message message) throws URISyntaxException, IOException, TelegramApiException { - userCommandService.setUserCommand(message.getFrom().getId(), "/addblockedauthor"); + redTelBot.addUserCommand(message.getFrom().getId(), "/addblockedauthor"); reply(message, "responses/blockauthor.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java index 55e2fb5..490d8b7 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java @@ -1,7 +1,5 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.dao.UserCommandService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -11,12 +9,9 @@ @Service("/cancel") public class Cancel extends Command { - @Autowired - private UserCommandService userCommandService; - @Override public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - userCommandService.removeUserCommand(message.getFrom().getId()); + redTelBot.removeUserCommand(message.getFrom().getId()); reply(message, "responses/cancel.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java index f640f7a..018d86b 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.dao.BlockedAuthorService; +import com.github.yvasyliev.service.json.State; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -10,14 +10,14 @@ @Service("/getblocked") public class GetBlocked extends Command { @Autowired - protected BlockedAuthorService blockedAuthorService; + private State state; @Override public void acceptWithException(Message message) throws Exception { - var blockedAuthors = blockedAuthorService - .findAll() + var blockedAuthors = state + .getBlockedAuthors() .stream() - .map(blockedAuthor -> "👤 " + blockedAuthor.getUsername()) + .map(blockedAuthor -> "👤 " + blockedAuthor) .collect(Collectors.joining("\n")); reply(message, "responses/getblocked.md", blockedAuthors); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java index bbf0685..deb9ecc 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.dao.BlockedAuthorService; +import com.github.yvasyliev.service.json.State; import com.github.yvasyliev.service.telegram.factory.UsernameParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -8,18 +8,19 @@ @Service("/removeblockedauthor") public class RemoveBlockedAuthor extends Command { - @Autowired - protected BlockedAuthorService blockedAuthorService; @Autowired private UsernameParser usernameParser; + @Autowired + private State state; + @Override public void acceptWithException(Message message) throws Exception { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); - blockedAuthorService.unblock(username); + state.removeBlockedAuthor(username); reply(message, "responses/removeblockedauthor.md", username); } else { reply(message, "responses/usernamenotrecognized.md"); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java index 0cbfd36..32a6c7d 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java @@ -1,7 +1,5 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.dao.UserCommandService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -11,12 +9,9 @@ @Service("/suggestpost") public class SuggestPost extends Command { - @Autowired - private UserCommandService userCommandService; - @Override public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - userCommandService.setUserCommand(message.getFrom().getId(), "/postsuggested"); + redTelBot.addUserCommand(message.getFrom().getId(), "/postsuggested"); reply(message, "responses/suggestpost.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java index d3e12d1..6d1b08d 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java @@ -1,7 +1,5 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.dao.UserCommandService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -11,12 +9,9 @@ @Service("/unblockauthor") public class UnblockAuthor extends Command { - @Autowired - private UserCommandService userCommandService; - @Override public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - userCommandService.setUserCommand(message.getFrom().getId(), "/removeblockedauthor"); + redTelBot.addUserCommand(message.getFrom().getId(), "/removeblockedauthor"); reply(message, "responses/unblockauthor.md"); } } diff --git a/src/main/resources/hibernate.properties b/src/main/resources/hibernate.properties deleted file mode 100644 index 1dbb085..0000000 --- a/src/main/resources/hibernate.properties +++ /dev/null @@ -1,12 +0,0 @@ -# Database connection settings -hibernate.connection.url=jdbc:h2:mem:demo -hibernate.connection.username=sa -hibernate.connection.password= - -# Echo all executed SQL to console -#hibernate.show_sql=true -hibernate.format_sql=true -hibernate.highlight_sql=true - -# Automatically export the schema -hibernate.hbm2ddl.auto=create-drop \ No newline at end of file From 48555ae5eb11fb515fd4fdf849be088f37665246 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 10:23:58 +0300 Subject: [PATCH 03/93] throw JsonMappingException in PostDeserializer#deserialize --- .../yvasyliev/service/deserializers/PostDeserializer.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index 6e582b2..97c3f6b 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -3,12 +3,11 @@ import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.service.deserializers.mappers.PostMapper; import com.github.yvasyliev.service.json.State; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; @@ -18,7 +17,6 @@ @Service public class PostDeserializer extends JsonDeserializer { - private static final Logger LOGGER = LoggerFactory.getLogger(PostDeserializer.class); @Autowired private List postMappers; @@ -49,8 +47,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ } } - LOGGER.error("Failed to parse post: {}", node); - return null; + throw new JsonMappingException(jsonParser, "Failed to parse post: " + node); } private JsonNode extractRootPost(JsonNode jsonPost) { From 17a357860b60bfd012e450323d937edcd12e2e12 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 10:51:59 +0300 Subject: [PATCH 04/93] services implement interfaces --- .../bots/telegram/TelegramPublisher.java | 2 +- .../deserializers/PostDeserializer.java | 30 ++++++++++------ .../deserializers/mappers/GifPostMapper.java | 8 +++-- .../mappers/PhotoGroupPostMapper.java | 6 ++-- .../mappers/PhotoPostMapper.java | 7 ++-- .../deserializers/mappers/PollPostMapper.java | 8 +++-- .../deserializers/mappers/PostMapper.java | 7 ++-- .../deserializers/mappers/TextPostMapper.java | 7 ++-- .../mappers/VideoPostMapper.java | 16 ++++----- .../RedditAccessTokenFactoryBean.java | 33 ----------------- .../reddit/RedditAccessTokenSupplier.java | 35 +++++++++++++++++++ .../service/reddit/RedditPostService.java | 9 +++-- .../service/reddit/RedditVideoDownloader.java | 6 ++-- ...dditNew.java => SubredditNewSupplier.java} | 17 +++++---- .../reddit/api/GetRedditAccessToken.java | 29 --------------- .../yvasyliev/service/reddit/api/Request.java | 8 ----- 16 files changed, 103 insertions(+), 125 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenFactoryBean.java create mode 100644 src/main/java/com/github/yvasyliev/service/reddit/RedditAccessTokenSupplier.java rename src/main/java/com/github/yvasyliev/service/reddit/{api/GetSubredditNew.java => SubredditNewSupplier.java} (99%) delete mode 100644 src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java delete mode 100644 src/main/java/com/github/yvasyliev/service/reddit/api/Request.java diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java index 62b2d73..12ed18f 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java @@ -81,7 +81,7 @@ public void startPublishingPosts() { try { var newPosts = redditPostService.findNewPosts(); publishPosts(newPosts); - } catch (IOException | InterruptedException e) { + } catch (Exception e) { LOGGER.error("Failed to find new posts.", e); } } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index 97c3f6b..d1d212e 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -6,19 +6,21 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.service.deserializers.mappers.PostMapper; import com.github.yvasyliev.service.json.State; +import org.hibernate.MappingException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; +import org.springframework.util.function.ThrowingFunction; import java.io.IOException; import java.util.List; +import java.util.Optional; @Service public class PostDeserializer extends JsonDeserializer { @Autowired - private List postMappers; + private List>> postMappers; @Autowired private ApplicationContext context; @@ -34,15 +36,21 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var state = context.getBean("state", State.class); jsonPost = extractRootPost(jsonPost); - for (PostMapper postMapper : postMappers) { - var post = postMapper.apply(jsonPost); - if (post != null) { - post.setAuthor(author); - post.setHasSpoiler(hasSpoiler); - post.setCreated(created); - post.setApproved(state.getBlockedAuthors().contains(author)); - post.setPostUrl(postUrl); - return post; + for (var postMapper : postMappers) { + try { + var optionalPost = postMapper.applyWithException(jsonPost).map(post -> { + post.setAuthor(author); + post.setHasSpoiler(hasSpoiler); + post.setCreated(created); + post.setApproved(state.getBlockedAuthors().contains(author)); + post.setPostUrl(postUrl); + return post; + }); + if (optionalPost.isPresent()) { + return optionalPost.get(); + } + } catch (Exception e) { + throw new MappingException(e); } } } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java index e5a16a5..614fb11 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java @@ -6,11 +6,13 @@ import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.util.Optional; + @Component @Order(4) public class GifPostMapper implements PostMapper { @Override - public Post apply(JsonNode jsonPost) { + public Optional applyWithException(JsonNode jsonPost) { if (isGif(jsonPost)) { var gifUrl = jsonPost .get("preview") @@ -25,9 +27,9 @@ public Post apply(JsonNode jsonPost) { post.setType(PostType.GIF); post.setText(jsonPost.get("title").textValue()); post.setMediaUrl(gifUrl); - return post; + return Optional.of(post); } - return null; + return Optional.empty(); } private boolean isGif(JsonNode data) { diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java index 60f09f8..d01117f 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java @@ -20,7 +20,7 @@ public class PhotoGroupPostMapper implements PostMapper { private int pageSize; @Override - public Post apply(JsonNode jsonPost) { + public Optional applyWithException(JsonNode jsonPost) { if (jsonPost.has("gallery_data")) { var photoUrlsPages = extractPhotoUrlsPages(jsonPost); var title = jsonPost.get("title").textValue(); @@ -28,9 +28,9 @@ public Post apply(JsonNode jsonPost) { post.setType(PostType.PHOTO_GROUP); post.setText(title); post.setPhotoUrlsPages(photoUrlsPages); - return post; + return Optional.of(post); } - return null; + return Optional.empty(); } private List> extractPhotoUrlsPages(JsonNode post) { diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java index 39e8229..203c396 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java @@ -7,6 +7,7 @@ import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.util.Optional; import java.util.Set; @Component @@ -16,7 +17,7 @@ public class PhotoPostMapper implements PostMapper { private Set photoExtensions; @Override - public Post apply(JsonNode jsonPost) { + public Optional applyWithException(JsonNode jsonPost) { var photoUrl = extractPhotoUrl(jsonPost); if (photoUrl != null) { var text = jsonPost.get("title").textValue(); @@ -24,9 +25,9 @@ public Post apply(JsonNode jsonPost) { post.setType(PostType.PHOTO); post.setText(text); post.setMediaUrl(photoUrl); - return post; + return Optional.of(post); } - return null; + return Optional.empty(); } private String extractPhotoUrl(JsonNode post) { diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java index 1bb5b4c..9a27b82 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java @@ -6,11 +6,13 @@ import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.util.Optional; + @Component @Order(6) public class PollPostMapper implements PostMapper { @Override - public Post apply(JsonNode jsonPost) { + public Optional applyWithException(JsonNode jsonPost) { if (jsonPost.has("poll_data")) { var redditOptions = jsonPost.get("poll_data").get("options").elements(); var options = stream(redditOptions) @@ -20,8 +22,8 @@ public Post apply(JsonNode jsonPost) { post.setType(PostType.POLL); post.setText(jsonPost.get("title").textValue()); post.setOptions(options); - return post; + return Optional.of(post); } - return null; + return Optional.empty(); } } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java index 40597e0..077251a 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java @@ -2,18 +2,17 @@ import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.Post; +import org.springframework.util.function.ThrowingFunction; -import java.io.IOException; import java.util.Iterator; +import java.util.Optional; import java.util.Spliterator; import java.util.Spliterators; import java.util.stream.Stream; import java.util.stream.StreamSupport; @FunctionalInterface -public interface PostMapper { - Post apply(JsonNode jsonPost) throws IOException; - +public interface PostMapper extends ThrowingFunction> { default Stream stream(Iterator elements) { return StreamSupport.stream(Spliterators.spliteratorUnknownSize(elements, Spliterator.ORDERED), false); } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java index 6dc845a..7a6fc8f 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java @@ -7,6 +7,7 @@ import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.util.Optional; import java.util.Set; @Component @@ -25,7 +26,7 @@ public class TextPostMapper implements PostMapper { private String postTextTemplate; @Override - public Post apply(JsonNode jsonPost) { + public Optional applyWithException(JsonNode jsonPost) { if (isTextPost(jsonPost)) { var text = postTextTemplate.formatted( jsonPost.get("title").textValue(), @@ -35,9 +36,9 @@ public Post apply(JsonNode jsonPost) { var post = new Post(); post.setType(PostType.TEXT); post.setText(text); - return post; + return Optional.of(post); } - return null; + return Optional.empty(); } private boolean isTextPost(JsonNode post) { diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java index 311b1ea..2897844 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java @@ -3,36 +3,36 @@ import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.PostType; -import com.github.yvasyliev.service.reddit.RedditVideoDownloader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import org.springframework.util.function.ThrowingFunction; -import java.io.IOException; +import java.util.Optional; @Component @Order(5) public class VideoPostMapper implements PostMapper { @Autowired - private RedditVideoDownloader redditVideoDownloader; + private ThrowingFunction redditVideoDownloadUrlProvider; @Override - public Post apply(JsonNode jsonPost) throws IOException { + public Optional applyWithException(JsonNode jsonPost) throws Exception { var videoUrl = extractVideoUrl(jsonPost); if (videoUrl != null) { var post = new Post(); post.setType(PostType.VIDEO); post.setText(jsonPost.get("title").textValue()); post.setMediaUrl(videoUrl); - return post; + return Optional.of(post); } - return null; + return Optional.empty(); } - private String extractVideoUrl(JsonNode data) throws IOException { + private String extractVideoUrl(JsonNode data) throws Exception { if (data.get("is_video").booleanValue()) { var redditPostUrl = "https://www.reddit.com%s".formatted(data.get("permalink").textValue()); - return redditVideoDownloader.getVideoDownloadUrl(redditPostUrl); + return redditVideoDownloadUrlProvider.applyWithException(redditPostUrl); } if (data.has("media")) { diff --git a/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenFactoryBean.java b/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenFactoryBean.java deleted file mode 100644 index e50dd02..0000000 --- a/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenFactoryBean.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.github.yvasyliev.service.factories; - -import com.github.yvasyliev.model.dto.RedditAccessToken; -import com.github.yvasyliev.service.reddit.api.Request; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class RedditAccessTokenFactoryBean implements FactoryBean { - @Autowired - private Request getRedditAccessToken; - - private RedditAccessToken redditAccessToken; - - @Override - public RedditAccessToken getObject() throws Exception { - if (redditAccessToken == null || redditAccessToken.isExpired()) { - redditAccessToken = getRedditAccessToken.execute(); - } - return redditAccessToken; - } - - @Override - public Class getObjectType() { - return RedditAccessToken.class; - } - - @Override - public boolean isSingleton() { - return false; - } -} diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditAccessTokenSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditAccessTokenSupplier.java new file mode 100644 index 0000000..10a2c73 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditAccessTokenSupplier.java @@ -0,0 +1,35 @@ +package com.github.yvasyliev.service.reddit; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.dto.RedditAccessToken; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.function.ThrowingSupplier; + +import java.io.IOException; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +@Service +public class RedditAccessTokenSupplier implements ThrowingSupplier { + @Autowired + private HttpRequest redditAccessTokenRequest; + + @Autowired + private HttpClient httpClient; + + @Autowired + private ObjectMapper objectMapper; + + private RedditAccessToken redditAccessToken; + + @Override + public RedditAccessToken getWithException() throws IOException, InterruptedException { + if (redditAccessToken == null || redditAccessToken.isExpired()) { + var jsonBody = httpClient.send(redditAccessTokenRequest, HttpResponse.BodyHandlers.ofString()).body(); + redditAccessToken = objectMapper.readValue(jsonBody, RedditAccessToken.class); + } + return redditAccessToken; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java index cc9db8b..45c942f 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java @@ -5,14 +5,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.service.json.State; -import com.github.yvasyliev.service.reddit.api.Request; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.util.function.ThrowingSupplier; -import java.io.IOException; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.List; @@ -26,7 +25,7 @@ public class RedditPostService { private static final Logger LOGGER = LoggerFactory.getLogger(RedditPostService.class); @Autowired - private Request getSubredditNew; + private ThrowingSupplier subredditNewSupplier; @Value("30") private int delayMinutes; @@ -37,8 +36,8 @@ public class RedditPostService { @Autowired private ObjectMapper objectMapper; - public List findNewPosts() throws IOException, InterruptedException { - var subredditPosts = getSubredditNew.execute(); + public List findNewPosts() throws Exception { + var subredditPosts = subredditNewSupplier.getWithException(); var children = subredditPosts .get("data") .get("children") diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java index dba6c29..de77c2d 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java @@ -3,12 +3,14 @@ import com.github.yvasyliev.exceptions.VideoUrlParseException; import org.jsoup.Jsoup; import org.springframework.stereotype.Service; +import org.springframework.util.function.ThrowingFunction; import java.io.IOException; @Service -public class RedditVideoDownloader { - public String getVideoDownloadUrl(String redditPostUrl) throws IOException { +public class RedditVideoDownloader implements ThrowingFunction { + @Override + public String applyWithException(String redditPostUrl) throws IOException { var url = "https://rapidsave.com/info?url=%s".formatted(redditPostUrl); var element = Jsoup.connect(url) .get() diff --git a/src/main/java/com/github/yvasyliev/service/reddit/api/GetSubredditNew.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java similarity index 99% rename from src/main/java/com/github/yvasyliev/service/reddit/api/GetSubredditNew.java rename to src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java index 4912715..f21c72a 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/api/GetSubredditNew.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java @@ -1,24 +1,20 @@ -package com.github.yvasyliev.service.reddit.api; +package com.github.yvasyliev.service.reddit; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.RedditAccessToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; +import org.springframework.util.function.ThrowingSupplier; -import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; @Service -public class GetSubredditNew implements Request { - @Autowired - private ApplicationContext applicationContext; - +public class SubredditNewSupplier implements ThrowingSupplier { @Value("${SUBREDDIT}") private String subreddit; @@ -31,9 +27,12 @@ public class GetSubredditNew implements Request { @Autowired private ObjectMapper objectMapper; + @Autowired + private ThrowingSupplier redditAccessTokenSupplier; + @Override - public JsonNode execute() throws IOException, InterruptedException { - var redditAccessToken = applicationContext.getBean(RedditAccessToken.class); + public JsonNode getWithException() throws Exception { + var redditAccessToken = redditAccessTokenSupplier.getWithException(); var authorization = "Bearer %s".formatted(redditAccessToken.token()); var api = "https://oauth.reddit.com/r/%s/new?raw_json=1".formatted(subreddit); var request = HttpRequest.newBuilder(URI.create(api)) diff --git a/src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java b/src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java deleted file mode 100644 index d7f594a..0000000 --- a/src/main/java/com/github/yvasyliev/service/reddit/api/GetRedditAccessToken.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.yvasyliev.service.reddit.api; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.model.dto.RedditAccessToken; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.IOException; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; - -@Service -public class GetRedditAccessToken implements Request { - @Autowired - private HttpRequest redditAccessTokenRequest; - - @Autowired - private HttpClient httpClient; - - @Autowired - private ObjectMapper objectMapper; - - @Override - public RedditAccessToken execute() throws IOException, InterruptedException { - var jsonBody = httpClient.send(redditAccessTokenRequest, HttpResponse.BodyHandlers.ofString()).body(); - return objectMapper.readValue(jsonBody, RedditAccessToken.class); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/reddit/api/Request.java b/src/main/java/com/github/yvasyliev/service/reddit/api/Request.java deleted file mode 100644 index 8d84fed..0000000 --- a/src/main/java/com/github/yvasyliev/service/reddit/api/Request.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.github.yvasyliev.service.reddit.api; - -import java.io.IOException; - -@FunctionalInterface -public interface Request { - T execute() throws IOException, InterruptedException; -} From b1dc82a1917101864318c58ca674f21f0f410092 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 11:33:34 +0300 Subject: [PATCH 05/93] RedTelBot#onUpdateReceived decomposition --- .../yvasyliev/bots/telegram/RedTelBot.java | 64 +++++++++++-------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index def8efc..47bcdeb 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.telegram.telegrambots.meta.TelegramBotsApi; +import org.telegram.telegrambots.meta.api.objects.CallbackQuery; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -65,33 +66,44 @@ public void onUpdatesReceived(List updates) { public void onUpdateReceived(Update update) { LOGGER.debug("Update received: {}", update); if (update.hasMessage()) { - var message = update.getMessage(); - if (message.isUserMessage()) { - getCommand(message).ifPresent(command -> { - if (context.containsBean(command)) { - try { - context.getBean(command, Command.class).acceptWithException(message); - } catch (Exception e) { - LOGGER.error("Failed to perform command {}", command, e); - } - } else { - LOGGER.info("Unknown command: {}", command); - } - } - ); - } + onMessageReceived(update.getMessage()); } else if (update.hasCallbackQuery()) { - var callbackQuery = update.getCallbackQuery(); - var message = callbackQuery.getMessage(); - if (message.isUserMessage() && getAdminId().equals(callbackQuery.getFrom().getId().toString())) { - try { - var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); - context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); - } catch (JsonProcessingException e) { - LOGGER.error("Failed to parse callback data {}", callbackQuery.getData(), e); - } catch (Exception e) { - LOGGER.error("Failed to handle callback", e); - } + onCallbackQueryReceived(update.getCallbackQuery()); + } + } + + public void onMessageReceived(Message message) { + if (message.isUserMessage()) { + onUserMessageReceived(message); + } + } + + public void onUserMessageReceived(Message message) { + getCommand(message).ifPresent(command -> onCommandReceived(command, message)); + } + + public void onCommandReceived(String command, Message message) { + if (context.containsBean(command)) { + try { + context.getBean(command, Command.class).acceptWithException(message); + } catch (Exception e) { + LOGGER.error("Failed to perform command {}", command, e); + } + } else { + LOGGER.info("Unknown command: {}", command); + } + } + + public void onCallbackQueryReceived(CallbackQuery callbackQuery) { + var message = callbackQuery.getMessage(); + if (message.isUserMessage() && getAdminId().equals(callbackQuery.getFrom().getId().toString())) { + try { + var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); + context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); + } catch (JsonProcessingException e) { + LOGGER.error("Failed to parse callback data {}", callbackQuery.getData(), e); + } catch (Exception e) { + LOGGER.error("Failed to handle callback", e); } } } From 2ec318ad4771bba5c903d1c5146e5895b6b9c3bb Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 12:24:39 +0300 Subject: [PATCH 06/93] RedTelBotConfiguration#synchronizedFixedSizeMap --- .../yvasyliev/bots/telegram/RedTelBot.java | 4 +-- .../bots/telegram/TelegramPublisher.java | 9 +++--- .../config/RedTelBotConfiguration.java | 28 +++++++++++++++++++ .../mappers/VideoPostMapper.java | 2 ++ .../service/factories/StateFactoryBean.java | 3 +- .../github/yvasyliev/service/json/State.java | 12 ++++---- 6 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index 47bcdeb..eafece4 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -20,7 +20,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; public class RedTelBot extends TelegramPublisher { private static final Logger LOGGER = LoggerFactory.getLogger(RedTelBot.class); @@ -33,7 +32,8 @@ public class RedTelBot extends TelegramPublisher { private BotSession botSession; - private final Map userCommands = new ConcurrentHashMap<>(); + @Autowired + private Map userCommands; public RedTelBot(@Value("${BOT_TOKEN}") String botToken) { super(botToken); diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java index 12ed18f..1e9aa13 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java @@ -2,8 +2,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.model.dto.RedditPostApprovedData; import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.RedditPostApprovedData; import com.github.yvasyliev.service.json.State; import com.github.yvasyliev.service.reddit.RedditPostService; import org.slf4j.Logger; @@ -33,7 +33,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -55,9 +54,11 @@ public abstract class TelegramPublisher extends AbstractRedTelBot { @Autowired private ObjectMapper objectMapper; - private final Map postCandidates = new ConcurrentHashMap<>(); + @Autowired + private Map postCandidates; - private final Map extraPhotos = new ConcurrentHashMap<>(); + @Autowired + private Map extraPhotos; public TelegramPublisher(String botToken) { super(botToken); diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java index 72f4ea2..46fb308 100644 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -8,15 +8,20 @@ import com.github.yvasyliev.model.dto.Post; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; import java.io.File; import java.net.http.HttpClient; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -69,4 +74,27 @@ public HttpClient httpClient() { public File stateSrc() { return new File("state.json"); } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map synchronizedFixedSizeMap(@Value("16") int maxSize) { + return Collections.synchronizedMap(new LinkedHashMap<>(maxSize) { + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() >= maxSize; + } + }); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map intPostMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map longStringMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java index 2897844..da2fa2c 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java @@ -4,6 +4,7 @@ import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.PostType; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.util.function.ThrowingFunction; @@ -14,6 +15,7 @@ @Order(5) public class VideoPostMapper implements PostMapper { @Autowired + @Qualifier("redditVideoDownloader") private ThrowingFunction redditVideoDownloadUrlProvider; @Override diff --git a/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java b/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java index 256c790..f9cd316 100644 --- a/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java +++ b/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java @@ -8,7 +8,6 @@ import java.io.File; import java.io.IOException; -import java.util.TreeSet; @Component public class StateFactoryBean implements FactoryBean { @@ -22,7 +21,7 @@ public class StateFactoryBean implements FactoryBean { public State getObject() throws IOException { return stateSrc.exists() ? objectMapper.readValue(stateSrc, State.class) - : new State(0, new TreeSet<>()); + : new State(); } @Override diff --git a/src/main/java/com/github/yvasyliev/service/json/State.java b/src/main/java/com/github/yvasyliev/service/json/State.java index 7a01fe4..0f84000 100644 --- a/src/main/java/com/github/yvasyliev/service/json/State.java +++ b/src/main/java/com/github/yvasyliev/service/json/State.java @@ -8,6 +8,7 @@ import java.io.File; import java.io.IOException; import java.util.SortedSet; +import java.util.TreeSet; @Service @JsonIgnoreProperties(value = {"objectMapper", "stateSrc"}, ignoreUnknown = true) @@ -20,12 +21,7 @@ public class State { private int lastCreated; - private SortedSet blockedAuthors; - - public State(int lastCreated, SortedSet blockedAuthors) { - this.lastCreated = lastCreated; - this.blockedAuthors = blockedAuthors; - } + private SortedSet blockedAuthors = new TreeSet<>(); public int getLastCreated() { return lastCreated; @@ -56,6 +52,8 @@ public void removeBlockedAuthor(String author) throws IOException { } private void save() throws IOException { - objectMapper.writeValue(stateSrc, this); + if (objectMapper != null) { + objectMapper.writeValue(stateSrc, this); + } } } From f6948a096562808493b7be2b3f4948e139e5a47e Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 12:25:34 +0300 Subject: [PATCH 07/93] removed ThrowingBiConsumer.java --- .../yvasyliev/service/ThrowingBiConsumer.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java diff --git a/src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java b/src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java deleted file mode 100644 index b906d7e..0000000 --- a/src/main/java/com/github/yvasyliev/service/ThrowingBiConsumer.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.github.yvasyliev.service; - -import java.util.function.BiConsumer; - -@FunctionalInterface -public interface ThrowingBiConsumer extends BiConsumer { - void acceptWithException(T t, U u) throws Exception; - - @Override - default void accept(T t, U u) { - try { - acceptWithException(t, u); - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} From 26f24c80a1bf7fcb97068ef9f5cadd5bcbf6d445 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 12:58:54 +0300 Subject: [PATCH 08/93] created StateManager --- .../bots/telegram/TelegramPublisher.java | 6 +- .../com/github/yvasyliev/model/dto/State.java | 34 +++++++++++ .../deserializers/PostDeserializer.java | 6 +- .../service/factories/StateFactoryBean.java | 14 ++--- .../github/yvasyliev/service/json/State.java | 59 ------------------- .../service/reddit/RedditPostService.java | 6 +- .../yvasyliev/service/state/StateIO.java | 28 +++++++++ .../yvasyliev/service/state/StateManager.java | 44 ++++++++++++++ .../telegram/commands/AddBlockedAuthor.java | 6 +- .../service/telegram/commands/GetBlocked.java | 6 +- .../commands/RemoveBlockedAuthor.java | 6 +- 11 files changed, 128 insertions(+), 87 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/model/dto/State.java delete mode 100644 src/main/java/com/github/yvasyliev/service/json/State.java create mode 100644 src/main/java/com/github/yvasyliev/service/state/StateIO.java create mode 100644 src/main/java/com/github/yvasyliev/service/state/StateManager.java diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java index 1e9aa13..6e715a0 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.RedditPostApprovedData; -import com.github.yvasyliev.service.json.State; +import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.reddit.RedditPostService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +49,7 @@ public abstract class TelegramPublisher extends AbstractRedTelBot { private final AtomicBoolean publishing = new AtomicBoolean(true); @Autowired - private State state; + private StateManager stateManager; @Autowired private ObjectMapper objectMapper; @@ -110,7 +110,7 @@ public void publishPost(Post post) { askApprove(chatId, post); postCandidates.put(post.getCreated(), post); } - state.setLastCreated(post.getCreated()); + stateManager.setLastCreated(post.getCreated()); } catch (TelegramApiException e) { LOGGER.error("Failed to send post: {}", post, e); } catch (JsonProcessingException e) { diff --git a/src/main/java/com/github/yvasyliev/model/dto/State.java b/src/main/java/com/github/yvasyliev/model/dto/State.java new file mode 100644 index 0000000..7fa4761 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/State.java @@ -0,0 +1,34 @@ +package com.github.yvasyliev.model.dto; + +import java.util.SortedSet; +import java.util.TreeSet; + +public class State { + private int lastCreated; + private SortedSet blockedAuthors; + + public State() { + this(0, new TreeSet<>()); + } + + public State(int lastCreated, SortedSet blockedAuthors) { + this.lastCreated = lastCreated; + this.blockedAuthors = blockedAuthors; + } + + public int getLastCreated() { + return lastCreated; + } + + public void setLastCreated(int lastCreated) { + this.lastCreated = lastCreated; + } + + public SortedSet getBlockedAuthors() { + return blockedAuthors; + } + + public void setBlockedAuthors(SortedSet blockedAuthors) { + this.blockedAuthors = blockedAuthors; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index d1d212e..7802e3c 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.service.json.State; +import com.github.yvasyliev.service.state.StateManager; import org.hibernate.MappingException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -33,7 +33,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var hasSpoiler = "nsfw".equals(jsonPost.get("thumbnail").textValue()); var created = jsonPost.get("created").intValue(); var postUrl = jsonPost.get("url_overridden_by_dest").textValue(); - var state = context.getBean("state", State.class); + var blockedAuthors = context.getBean(StateManager.class).getBlockedAuthors(); jsonPost = extractRootPost(jsonPost); for (var postMapper : postMappers) { @@ -42,7 +42,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ post.setAuthor(author); post.setHasSpoiler(hasSpoiler); post.setCreated(created); - post.setApproved(state.getBlockedAuthors().contains(author)); + post.setApproved(blockedAuthors.contains(author)); post.setPostUrl(postUrl); return post; }); diff --git a/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java b/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java index f9cd316..817feab 100644 --- a/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java +++ b/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java @@ -1,27 +1,21 @@ package com.github.yvasyliev.service.factories; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.service.json.State; +import com.github.yvasyliev.model.dto.State; +import com.github.yvasyliev.service.state.StateIO; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.io.File; import java.io.IOException; @Component public class StateFactoryBean implements FactoryBean { @Autowired - private File stateSrc; - - @Autowired - private ObjectMapper objectMapper; + private StateIO stateIO; @Override public State getObject() throws IOException { - return stateSrc.exists() - ? objectMapper.readValue(stateSrc, State.class) - : new State(); + return stateIO.read(); } @Override diff --git a/src/main/java/com/github/yvasyliev/service/json/State.java b/src/main/java/com/github/yvasyliev/service/json/State.java deleted file mode 100644 index 0f84000..0000000 --- a/src/main/java/com/github/yvasyliev/service/json/State.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.github.yvasyliev.service.json; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.File; -import java.io.IOException; -import java.util.SortedSet; -import java.util.TreeSet; - -@Service -@JsonIgnoreProperties(value = {"objectMapper", "stateSrc"}, ignoreUnknown = true) -public class State { - @Autowired - private ObjectMapper objectMapper; - - @Autowired - private File stateSrc; - - private int lastCreated; - - private SortedSet blockedAuthors = new TreeSet<>(); - - public int getLastCreated() { - return lastCreated; - } - - public void setLastCreated(int lastCreated) throws IOException { - this.lastCreated = lastCreated; - save(); - } - - public SortedSet getBlockedAuthors() { - return blockedAuthors; - } - - public void setBlockedAuthors(SortedSet blockedAuthors) throws IOException { - this.blockedAuthors = blockedAuthors; - save(); - } - - public void addBlockedAuthor(String author) throws IOException { - this.blockedAuthors.add(author); - save(); - } - - public void removeBlockedAuthor(String author) throws IOException { - this.blockedAuthors.remove(author); - save(); - } - - private void save() throws IOException { - if (objectMapper != null) { - objectMapper.writeValue(stateSrc, this); - } - } -} diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java index 45c942f..fef4fc3 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.service.json.State; +import com.github.yvasyliev.service.state.StateManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +31,7 @@ public class RedditPostService { private int delayMinutes; @Autowired - private State state; + private StateManager stateManager; @Autowired private ObjectMapper objectMapper; @@ -42,7 +42,7 @@ public List findNewPosts() throws Exception { .get("data") .get("children") .elements(); - var lastCreated = state.getLastCreated(); + var lastCreated = stateManager.getLastCreated(); return StreamSupport .stream(Spliterators.spliteratorUnknownSize(children, Spliterator.ORDERED), false) .map(child -> child.get("data")) diff --git a/src/main/java/com/github/yvasyliev/service/state/StateIO.java b/src/main/java/com/github/yvasyliev/service/state/StateIO.java new file mode 100644 index 0000000..bab23a8 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/state/StateIO.java @@ -0,0 +1,28 @@ +package com.github.yvasyliev.service.state; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.dto.State; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.IOException; + +@Service +public class StateIO { + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private File stateSrc; + + public State read() throws IOException { + return stateSrc.exists() + ? objectMapper.readValue(stateSrc, State.class) + : new State(); + } + + public void write(State state) throws IOException { + objectMapper.writeValue(stateSrc, state); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/state/StateManager.java b/src/main/java/com/github/yvasyliev/service/state/StateManager.java new file mode 100644 index 0000000..4c401b3 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/state/StateManager.java @@ -0,0 +1,44 @@ +package com.github.yvasyliev.service.state; + +import com.github.yvasyliev.model.dto.State; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.util.Set; + +@Service +public class StateManager { + @Autowired + private State state; + + @Autowired + private StateIO stateIO; + + public int getLastCreated() { + return state.getLastCreated(); + } + + public Set getBlockedAuthors() { + return Set.copyOf(state.getBlockedAuthors()); + } + + public void setLastCreated(int lastCreated) throws IOException { + state.setLastCreated(lastCreated); + save(); + } + + public void addBlockedAuthor(String username) throws IOException { + state.getBlockedAuthors().add(username); + save(); + } + + public void removeBlockedAuthor(String username) throws IOException { + state.getBlockedAuthors().remove(username); + save(); + } + + public void save() throws IOException { + stateIO.write(state); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java index 19b7aeb..b5627ab 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.json.State; +import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.factory.UsernameParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,14 +16,14 @@ public class AddBlockedAuthor extends Command { private UsernameParser usernameParser; @Autowired - private State state; + private StateManager stateManager; @Override public void acceptWithException(Message message) throws IOException, TelegramApiException, URISyntaxException { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); - state.addBlockedAuthor(username); + stateManager.addBlockedAuthor(username); reply(message, "responses/addblockedauthor.md", username, username); } else { reply(message, "responses/usernamenotrecognized.md"); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java index 018d86b..a55b78a 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.json.State; +import com.github.yvasyliev.service.state.StateManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -10,11 +10,11 @@ @Service("/getblocked") public class GetBlocked extends Command { @Autowired - private State state; + private StateManager stateManager; @Override public void acceptWithException(Message message) throws Exception { - var blockedAuthors = state + var blockedAuthors = stateManager .getBlockedAuthors() .stream() .map(blockedAuthor -> "👤 " + blockedAuthor) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java index deb9ecc..8159ee8 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.json.State; +import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.factory.UsernameParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -13,14 +13,14 @@ public class RemoveBlockedAuthor extends Command { private UsernameParser usernameParser; @Autowired - private State state; + private StateManager stateManager; @Override public void acceptWithException(Message message) throws Exception { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); - state.removeBlockedAuthor(username); + stateManager.removeBlockedAuthor(username); reply(message, "responses/removeblockedauthor.md", username); } else { reply(message, "responses/usernamenotrecognized.md"); From df51d4c04e371de7afed2f418d930272aa62bb2f Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 13:17:10 +0300 Subject: [PATCH 09/93] created RejectRedditPost command --- .../bots/telegram/TelegramPublisher.java | 30 ++++++++++------- ...dData.java => RedditPostDecisionData.java} | 2 +- .../telegram/callbacks/ApproveRedditPost.java | 6 ++-- .../telegram/callbacks/RejectRedditPost.java | 33 +++++++++++++++++++ src/main/resources/responses/rejectpost.md | 3 ++ 5 files changed, 59 insertions(+), 15 deletions(-) rename src/main/java/com/github/yvasyliev/model/dto/{RedditPostApprovedData.java => RedditPostDecisionData.java} (82%) create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java create mode 100644 src/main/resources/responses/rejectpost.md diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java index 6e715a0..e73ff71 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.model.dto.RedditPostApprovedData; +import com.github.yvasyliev.model.dto.RedditPostDecisionData; import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.reddit.RedditPostService; import org.slf4j.Logger; @@ -97,6 +97,7 @@ public void publishPosts(List posts) { public void publishPost(Post post) { var chatId = getChatId(post.isApproved()); + var created = post.getCreated(); try { var sentMessage = switch (post.getType()) { case TEXT -> execute(new SendMessage(chatId, post.getText())); @@ -107,16 +108,16 @@ public void publishPost(Post post) { case POLL -> sendPoll(chatId, post); }; if (sentMessage != null && !post.isApproved()) { - askApprove(chatId, post); - postCandidates.put(post.getCreated(), post); + askApprove(chatId, created); + postCandidates.put(created, post); } - stateManager.setLastCreated(post.getCreated()); + stateManager.setLastCreated(created); } catch (TelegramApiException e) { LOGGER.error("Failed to send post: {}", post, e); } catch (JsonProcessingException e) { LOGGER.error("Failed to serialize post: {}", post, e); } catch (IOException e) { - LOGGER.error("Failed to save last_created: {}", post.getCreated(), e); + LOGGER.error("Failed to save last_created: {}", created, e); } // try { // TimeUnit.SECONDS.sleep(10); @@ -328,18 +329,21 @@ private Message sendVideo(String chatId, Post post) throws TelegramApiException }, post); } - private Message askApprove(String chatId, Post post) throws TelegramApiException, JsonProcessingException { + private Message askApprove(String chatId, int created) throws TelegramApiException, JsonProcessingException { var approveButton = InlineKeyboardButton.builder() .text("✅ Approve") - .callbackData(objectMapper.writeValueAsString(new RedditPostApprovedData( + .callbackData(objectMapper.writeValueAsString(new RedditPostDecisionData( "/approveredditpost", - post.getCreated() + created ))) .build(); var denyButton = InlineKeyboardButton.builder() - .text("🚫 Deny") - .callbackData("{}") + .text("🚫 Reject") + .callbackData(objectMapper.writeValueAsString(new RedditPostDecisionData( + "/rejectredditpost", + created + ))) .build(); var sendMessage = SendMessage.builder() @@ -354,8 +358,12 @@ private Message askApprove(String chatId, Post post) throws TelegramApiException } public void publishPostCandidate(int created) { - var post = postCandidates.remove(created); + var post = rejectPostCandidate(created); post.setApproved(true); publishPost(post); } + + public Post rejectPostCandidate(int created) { + return postCandidates.remove(created); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/RedditPostApprovedData.java b/src/main/java/com/github/yvasyliev/model/dto/RedditPostDecisionData.java similarity index 82% rename from src/main/java/com/github/yvasyliev/model/dto/RedditPostApprovedData.java rename to src/main/java/com/github/yvasyliev/model/dto/RedditPostDecisionData.java index 4cce14f..735c88d 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/RedditPostApprovedData.java +++ b/src/main/java/com/github/yvasyliev/model/dto/RedditPostDecisionData.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; -public record RedditPostApprovedData( +public record RedditPostDecisionData( @JsonProperty("a") String action, @JsonProperty("c") int created ) { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java index 6c58caf..f50c453 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.callbacks; -import com.github.yvasyliev.model.dto.RedditPostApprovedData; +import com.github.yvasyliev.model.dto.RedditPostDecisionData; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; @@ -18,8 +18,8 @@ public void acceptWithException(CallbackQuery callbackQuery) throws IOException, var message = callbackQuery.getMessage(); var chatId = message.getChatId(); var messageId = message.getMessageId(); - var redditPostApprovedData = objectMapper.readValue(callbackQuery.getData(), RedditPostApprovedData.class); - redTelBot.publishPostCandidate(redditPostApprovedData.created()); + var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); + redTelBot.publishPostCandidate(data.created()); redTelBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java new file mode 100644 index 0000000..ca0f763 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java @@ -0,0 +1,33 @@ +package com.github.yvasyliev.service.telegram.callbacks; + +import com.github.yvasyliev.model.dto.RedditPostDecisionData; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; +import org.telegram.telegrambots.meta.api.objects.CallbackQuery; + +@Service("/rejectredditpost") +public class RejectRedditPost extends Callback { + @Override + public void acceptWithException(CallbackQuery callbackQuery) throws Exception { + var message = callbackQuery.getMessage(); + var chatId = message.getChatId(); + var messageId = message.getMessageId(); + var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); + redTelBot.rejectPostCandidate(data.created()); + redTelBot.execute(new EditMessageReplyMarkup( + chatId.toString(), + messageId, + callbackQuery.getInlineMessageId(), + null + )); + var editMessageText = EditMessageText.builder() + .chatId(chatId) + .messageId(messageId) + .text(format("responses/rejectpost.md", message.getText())) + .parseMode(ParseMode.MARKDOWNV2) + .build(); + redTelBot.execute(editMessageText); + } +} diff --git a/src/main/resources/responses/rejectpost.md b/src/main/resources/responses/rejectpost.md new file mode 100644 index 0000000..dd391ce --- /dev/null +++ b/src/main/resources/responses/rejectpost.md @@ -0,0 +1,3 @@ +~%s~ + +🚫 Rejected \ No newline at end of file From e16297bf959b0e80fd5d3d30ec9df7846f2d3de4 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 15:24:17 +0300 Subject: [PATCH 10/93] created RejectPost command --- .../yvasyliev/bots/telegram/RedTelBot.java | 5 +++- .../telegram/callbacks/ApprovePost.java | 13 ++++---- .../telegram/callbacks/RejectPost.java | 30 +++++++++++++++++++ .../telegram/commands/PostSuggested.java | 5 ++-- .../service/telegram/commands/Start.java | 6 +--- .../service/telegram/commands/Stop.java | 6 +--- .../telegram/readers/BotResponseReader.java | 8 +++-- 7 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index eafece4..7c21a95 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -53,7 +53,10 @@ public void onUpdatesReceived(List updates) { .stream() .filter(Update::hasMessage) .map(Update::getMessage) - .filter(Message::getIsAutomaticForward) + .filter(message -> { + var isAutomaticForward = message.getIsAutomaticForward(); + return isAutomaticForward != null && isAutomaticForward; + }) .toList(); if (messages.size() == 10) { var message = messages.get(0); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java index 8002316..0f24094 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java @@ -16,6 +16,9 @@ public class ApprovePost extends Callback { @Override public void acceptWithException(CallbackQuery callbackQuery) throws TelegramApiException, URISyntaxException, IOException { + var message = callbackQuery.getMessage(); + var chatId = message.getChatId(); + var messageId = message.getMessageId(); var postApprovedData = objectMapper.readValue(callbackQuery.getData(), PostApprovedData.class); redTelBot.execute(new ForwardMessage( redTelBot.getChannelId(), @@ -23,15 +26,15 @@ public void acceptWithException(CallbackQuery callbackQuery) throws TelegramApiE postApprovedData.messageId() )); redTelBot.execute(new EditMessageReplyMarkup( - callbackQuery.getMessage().getChatId().toString(), - callbackQuery.getMessage().getMessageId(), + chatId.toString(), + messageId, callbackQuery.getInlineMessageId(), null )); var editMessageText = EditMessageText.builder() - .chatId(callbackQuery.getMessage().getChatId()) - .messageId(callbackQuery.getMessage().getMessageId()) - .text(format("responses/approvepost.md", callbackQuery.getMessage().getText())) + .chatId(chatId) + .messageId(messageId) + .text(format("responses/approvepost.md", message.getText())) .parseMode(ParseMode.MARKDOWNV2) .build(); redTelBot.execute(editMessageText); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java new file mode 100644 index 0000000..ad0747a --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java @@ -0,0 +1,30 @@ +package com.github.yvasyliev.service.telegram.callbacks; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; +import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; +import org.telegram.telegrambots.meta.api.objects.CallbackQuery; + +@Service("/rejectpost") +public class RejectPost extends Callback { + @Override + public void acceptWithException(CallbackQuery callbackQuery) throws Exception { + var message = callbackQuery.getMessage(); + var chatId = message.getChatId(); + var messageId = message.getMessageId(); + redTelBot.execute(new EditMessageReplyMarkup( + chatId.toString(), + messageId, + callbackQuery.getInlineMessageId(), + null + )); + var editMessageText = EditMessageText.builder() + .chatId(chatId) + .messageId(messageId) + .text(format("responses/rejectpost.md", message.getText())) + .parseMode(ParseMode.MARKDOWNV2) + .build(); + redTelBot.execute(editMessageText); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java index 232ffc2..15ee9b6 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.commands; import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.dto.CallbackData; import com.github.yvasyliev.model.dto.PostApprovedData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -41,8 +42,8 @@ public void acceptWithException(Message message) throws TelegramApiException, IO .build(); var denyButton = InlineKeyboardButton.builder() - .text("🚫 Deny") - .callbackData("{}") + .text("🚫 Reject") + .callbackData(objectMapper.writeValueAsString(new CallbackData("/rejectpost"))) .build(); var sendMessage = SendMessage.builder() diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java index ed6e3aa..6810a52 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java @@ -1,7 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; import org.springframework.stereotype.Service; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -12,9 +11,6 @@ public class Start extends Command { @Override public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - redTelBot.execute(new SendMessage( - message.getChatId().toString(), - responseReader.applyWithException("responses/start.md") - )); + reply(message, "responses/start.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java index a1e01d8..1533827 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -1,7 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; import org.springframework.stereotype.Service; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -14,9 +13,6 @@ public class Stop extends Command { public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { redTelBot.stopPublishing(); redTelBot.stopPolling(); - redTelBot.execute(new SendMessage( - message.getChatId().toString(), - responseReader.applyWithException("responses/stop.md") - )); + reply(message, "responses/stop.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java index b313048..9129943 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java @@ -14,8 +14,10 @@ public class BotResponseReader implements ThrowingFunction { @Override public String applyWithException(String file) throws URISyntaxException, IOException { return String.join( - "\n", - Files.readAllLines(Paths.get(Objects.requireNonNull(BotResponseReader.class.getClassLoader().getResource(file)).toURI())) - ).replace(".", "\\."); + "\n", + Files.readAllLines(Paths.get(Objects.requireNonNull(BotResponseReader.class.getClassLoader().getResource(file)).toURI())) + ) + .replace(".", "\\.") + .replace("!", "\\!"); } } From 20d59688a2f6e643d8f58bd3c137a7e4191cf496 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 16:50:32 +0300 Subject: [PATCH 11/93] reply to suggested post --- .../yvasyliev/bots/telegram/RedTelBot.java | 23 ++++++++++++- .../config/RedTelBotConfiguration.java | 7 ++++ ...ovedData.java => ExternalMessageData.java} | 2 +- .../telegram/callbacks/ApprovePost.java | 8 ++--- .../service/telegram/callbacks/Reply.java | 33 +++++++++++++++++++ .../telegram/commands/PostSuggested.java | 16 +++++++-- .../service/telegram/commands/ReplySent.java | 31 +++++++++++++++++ src/main/resources/responses/getblocked.md | 2 +- src/main/resources/responses/reply.md | 1 + .../responses/replysent/empty_reply.md | 2 ++ .../responses/replysent/reply_sent.md | 1 + .../responses/replysent/reply_template.md | 3 ++ 12 files changed, 119 insertions(+), 10 deletions(-) rename src/main/java/com/github/yvasyliev/model/dto/{PostApprovedData.java => ExternalMessageData.java} (86%) create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java create mode 100644 src/main/resources/responses/reply.md create mode 100644 src/main/resources/responses/replysent/empty_reply.md create mode 100644 src/main/resources/responses/replysent/reply_sent.md create mode 100644 src/main/resources/responses/replysent/reply_template.md diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index 7c21a95..e7c4b1f 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.CallbackData; +import com.github.yvasyliev.model.dto.ExternalMessageData; import com.github.yvasyliev.service.telegram.callbacks.Callback; import com.github.yvasyliev.service.telegram.commands.Command; import org.slf4j.Logger; @@ -14,6 +15,7 @@ import org.telegram.telegrambots.meta.api.objects.CallbackQuery; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.Update; +import org.telegram.telegrambots.meta.api.objects.User; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.meta.generics.BotSession; @@ -35,6 +37,9 @@ public class RedTelBot extends TelegramPublisher { @Autowired private Map userCommands; + @Autowired + private Map awaitingReplies; + public RedTelBot(@Value("${BOT_TOKEN}") String botToken) { super(botToken); } @@ -99,7 +104,7 @@ public void onCommandReceived(String command, Message message) { public void onCallbackQueryReceived(CallbackQuery callbackQuery) { var message = callbackQuery.getMessage(); - if (message.isUserMessage() && getAdminId().equals(callbackQuery.getFrom().getId().toString())) { + if (message.isUserMessage() && isFromAdmin(callbackQuery)) { try { var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); @@ -135,4 +140,20 @@ public String addUserCommand(long userId, String command) { public String removeUserCommand(long userId) { return userCommands.remove(userId); } + + public ExternalMessageData addAwaitingReply(Long userId, ExternalMessageData messageData) { + return awaitingReplies.put(userId, messageData); + } + + public ExternalMessageData getAwaitingReply(Long userId) { + return awaitingReplies.remove(userId); + } + + public boolean isFromAdmin(CallbackQuery callbackQuery) { + return isAdmin(callbackQuery.getFrom()); + } + + public boolean isAdmin(User user) { + return user.getId().toString().equals(getAdminId()); + } } diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java index 46fb308..cc70aa3 100644 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.model.dto.ExternalMessageData; import com.github.yvasyliev.model.dto.Post; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -97,4 +98,10 @@ public Map intPostMap(@Value("16") int maxSize) { public Map longStringMap(@Value("16") int maxSize) { return synchronizedFixedSizeMap(maxSize); } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map longExternalMessageDataMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/PostApprovedData.java b/src/main/java/com/github/yvasyliev/model/dto/ExternalMessageData.java similarity index 86% rename from src/main/java/com/github/yvasyliev/model/dto/PostApprovedData.java rename to src/main/java/com/github/yvasyliev/model/dto/ExternalMessageData.java index bcc54c4..ae9eb68 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/PostApprovedData.java +++ b/src/main/java/com/github/yvasyliev/model/dto/ExternalMessageData.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; -public record PostApprovedData( +public record ExternalMessageData( @JsonProperty("a") String action, @JsonProperty("fci") String fromChatId, @JsonProperty("mi") int messageId diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java index 0f24094..0df576e 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.callbacks; -import com.github.yvasyliev.model.dto.PostApprovedData; +import com.github.yvasyliev.model.dto.ExternalMessageData; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ForwardMessage; import org.telegram.telegrambots.meta.api.methods.ParseMode; @@ -19,11 +19,11 @@ public void acceptWithException(CallbackQuery callbackQuery) throws TelegramApiE var message = callbackQuery.getMessage(); var chatId = message.getChatId(); var messageId = message.getMessageId(); - var postApprovedData = objectMapper.readValue(callbackQuery.getData(), PostApprovedData.class); + var messageData = objectMapper.readValue(callbackQuery.getData(), ExternalMessageData.class); redTelBot.execute(new ForwardMessage( redTelBot.getChannelId(), - postApprovedData.fromChatId(), - postApprovedData.messageId() + messageData.fromChatId(), + messageData.messageId() )); redTelBot.execute(new EditMessageReplyMarkup( chatId.toString(), diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java new file mode 100644 index 0000000..b5833d9 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java @@ -0,0 +1,33 @@ +package com.github.yvasyliev.service.telegram.callbacks; + +import com.github.yvasyliev.model.dto.ExternalMessageData; +import com.github.yvasyliev.service.telegram.readers.BotResponseReader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.CallbackQuery; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/reply") +public class Reply extends Callback { + @Autowired + private BotResponseReader responseReader; + + @Override + public void acceptWithException(CallbackQuery callbackQuery) throws IOException, URISyntaxException, TelegramApiException { + var messageData = objectMapper.readValue(callbackQuery.getData(), ExternalMessageData.class); + var userId = callbackQuery.getFrom().getId(); + redTelBot.addUserCommand(userId, "/replysent"); + redTelBot.addAwaitingReply(userId, messageData); + var sendMessage = SendMessage.builder() + .chatId(userId) + .text(responseReader.applyWithException("responses/reply.md")) + .parseMode(ParseMode.MARKDOWNV2) + .build(); + redTelBot.execute(sendMessage); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java index 15ee9b6..5004581 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.CallbackData; -import com.github.yvasyliev.model.dto.PostApprovedData; +import com.github.yvasyliev.model.dto.ExternalMessageData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ForwardMessage; @@ -34,7 +34,7 @@ public void acceptWithException(Message message) throws TelegramApiException, IO var approveButton = InlineKeyboardButton.builder() .text("✅ Approve") - .callbackData(objectMapper.writeValueAsString(new PostApprovedData( + .callbackData(objectMapper.writeValueAsString(new ExternalMessageData( "/approvepost", sourceChatId, sourceMessageId @@ -46,12 +46,22 @@ public void acceptWithException(Message message) throws TelegramApiException, IO .callbackData(objectMapper.writeValueAsString(new CallbackData("/rejectpost"))) .build(); + var replyButton = InlineKeyboardButton.builder() + .text("🔙 Reply") + .callbackData(objectMapper.writeValueAsString(new ExternalMessageData( + "/reply", + sourceChatId, + sourceMessageId + ))) + .build(); + var sendMessage = SendMessage.builder() .chatId(redTelBot.getAdminId()) .text("👆 Shall I publish the post above?") .replyMarkup(new InlineKeyboardMarkup(List.of(List.of( approveButton, - denyButton + denyButton, + replyButton )))) .build(); redTelBot.execute(sendMessage); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java new file mode 100644 index 0000000..39cb203 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java @@ -0,0 +1,31 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; + +@Service("/replysent") +public class ReplySent extends Command { + @Override + public void acceptWithException(Message message) throws URISyntaxException, IOException, TelegramApiException { + if (message.hasText()) { + var chatId = message.getChatId(); + var awaitingReply = redTelBot.getAwaitingReply(chatId); + var replyMessage = SendMessage.builder() + .chatId(awaitingReply.fromChatId()) + .replyToMessageId(awaitingReply.messageId()) + .text(responseReader.applyWithException("responses/replysent/reply_template.md").formatted(message.getText())) + .parseMode(ParseMode.MARKDOWNV2) + .build(); + redTelBot.execute(replyMessage); + reply(message, "responses/replysent/reply_sent.md"); + } else { + reply(message, "responses/replysent/empty_reply.md"); + } + } +} diff --git a/src/main/resources/responses/getblocked.md b/src/main/resources/responses/getblocked.md index 9f7500b..72ce9fd 100644 --- a/src/main/resources/responses/getblocked.md +++ b/src/main/resources/responses/getblocked.md @@ -1,3 +1,3 @@ -🗑️ Blocked authors: +*🗑️ Blocked authors:* %s \ No newline at end of file diff --git a/src/main/resources/responses/reply.md b/src/main/resources/responses/reply.md new file mode 100644 index 0000000..087cd8e --- /dev/null +++ b/src/main/resources/responses/reply.md @@ -0,0 +1 @@ +📝 Ok send me reply: \ No newline at end of file diff --git a/src/main/resources/responses/replysent/empty_reply.md b/src/main/resources/responses/replysent/empty_reply.md new file mode 100644 index 0000000..421c0c9 --- /dev/null +++ b/src/main/resources/responses/replysent/empty_reply.md @@ -0,0 +1,2 @@ +🤔 No text was passed. +Try again: \ No newline at end of file diff --git a/src/main/resources/responses/replysent/reply_sent.md b/src/main/resources/responses/replysent/reply_sent.md new file mode 100644 index 0000000..8430fdc --- /dev/null +++ b/src/main/resources/responses/replysent/reply_sent.md @@ -0,0 +1 @@ +✅ Reply has been sent. \ No newline at end of file diff --git a/src/main/resources/responses/replysent/reply_template.md b/src/main/resources/responses/replysent/reply_template.md new file mode 100644 index 0000000..fd907f3 --- /dev/null +++ b/src/main/resources/responses/replysent/reply_template.md @@ -0,0 +1,3 @@ +*🔙 Reply from admin:* + +%s \ No newline at end of file From aacdc6830700e7d223faac32c398e52ce721cd8b Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 16:58:36 +0300 Subject: [PATCH 12/93] reorganizing resources --- .../yvasyliev/service/telegram/commands/GetBlocked.java | 5 +++-- .../yvasyliev/service/telegram/commands/PostSuggested.java | 4 ++-- src/main/resources/responses/getblocked/blocked_author.md | 1 + .../{getblocked.md => getblocked/blocked_authors.md} | 0 .../{postsuggested.md => postsuggested/post_suggested.md} | 0 src/main/resources/responses/postsuggested/suggest_post.md | 1 + 6 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/responses/getblocked/blocked_author.md rename src/main/resources/responses/{getblocked.md => getblocked/blocked_authors.md} (100%) rename src/main/resources/responses/{postsuggested.md => postsuggested/post_suggested.md} (100%) create mode 100644 src/main/resources/responses/postsuggested/suggest_post.md diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java index a55b78a..5d62876 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java @@ -14,11 +14,12 @@ public class GetBlocked extends Command { @Override public void acceptWithException(Message message) throws Exception { + var blockedAuthorTemplate = responseReader.applyWithException("responses/getblocked/blocked_author.md"); var blockedAuthors = stateManager .getBlockedAuthors() .stream() - .map(blockedAuthor -> "👤 " + blockedAuthor) + .map(blockedAuthorTemplate::formatted) .collect(Collectors.joining("\n")); - reply(message, "responses/getblocked.md", blockedAuthors); + reply(message, "responses/getblocked/blocked_authors.md", blockedAuthors); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java index 5004581..01e4057 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java @@ -57,7 +57,7 @@ public void acceptWithException(Message message) throws TelegramApiException, IO var sendMessage = SendMessage.builder() .chatId(redTelBot.getAdminId()) - .text("👆 Shall I publish the post above?") + .text(responseReader.applyWithException("responses/postsuggested/suggest_post.md")) .replyMarkup(new InlineKeyboardMarkup(List.of(List.of( approveButton, denyButton, @@ -66,6 +66,6 @@ public void acceptWithException(Message message) throws TelegramApiException, IO .build(); redTelBot.execute(sendMessage); - reply(message, "responses/postsuggested.md"); + reply(message, "responses/postsuggested/post_suggested.md"); } } diff --git a/src/main/resources/responses/getblocked/blocked_author.md b/src/main/resources/responses/getblocked/blocked_author.md new file mode 100644 index 0000000..242d736 --- /dev/null +++ b/src/main/resources/responses/getblocked/blocked_author.md @@ -0,0 +1 @@ +👤 %s \ No newline at end of file diff --git a/src/main/resources/responses/getblocked.md b/src/main/resources/responses/getblocked/blocked_authors.md similarity index 100% rename from src/main/resources/responses/getblocked.md rename to src/main/resources/responses/getblocked/blocked_authors.md diff --git a/src/main/resources/responses/postsuggested.md b/src/main/resources/responses/postsuggested/post_suggested.md similarity index 100% rename from src/main/resources/responses/postsuggested.md rename to src/main/resources/responses/postsuggested/post_suggested.md diff --git a/src/main/resources/responses/postsuggested/suggest_post.md b/src/main/resources/responses/postsuggested/suggest_post.md new file mode 100644 index 0000000..5403580 --- /dev/null +++ b/src/main/resources/responses/postsuggested/suggest_post.md @@ -0,0 +1 @@ +👆 Shall I publish the post above? \ No newline at end of file From a0564b21bbf85faf872436fdd6ba5b3a908e50b2 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 17:49:54 +0300 Subject: [PATCH 13/93] /contactadmin --- .../bots/telegram/TelegramPublisher.java | 2 +- .../telegram/commands/ContactAdmin.java | 13 +++++ .../service/telegram/commands/ReplySent.java | 5 +- .../service/telegram/commands/TextAdmin.java | 50 +++++++++++++++++++ src/main/resources/responses/contactadmin.md | 1 + .../responses/textadmin/message_sent.md | 1 + .../responses/textadmin/message_to_admin.md | 1 + 7 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java create mode 100644 src/main/resources/responses/contactadmin.md create mode 100644 src/main/resources/responses/textadmin/message_sent.md create mode 100644 src/main/resources/responses/textadmin/message_to_admin.md diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java index e73ff71..3741063 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java @@ -86,7 +86,7 @@ public void startPublishingPosts() { LOGGER.error("Failed to find new posts.", e); } } - }, 0, 10, TimeUnit.MINUTES); + }, 0, 10, TimeUnit.SECONDS); } public void publishPosts(List posts) { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java new file mode 100644 index 0000000..3d9dac8 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java @@ -0,0 +1,13 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.objects.Message; + +@Service("/contactadmin") +public class ContactAdmin extends Command { + @Override + public void acceptWithException(Message message) throws Exception { + redTelBot.addUserCommand(message.getFrom().getId(), "/textadmin"); + reply(message, "responses/contactadmin.md"); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java index 39cb203..e4b5613 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java @@ -14,8 +14,9 @@ public class ReplySent extends Command { @Override public void acceptWithException(Message message) throws URISyntaxException, IOException, TelegramApiException { if (message.hasText()) { - var chatId = message.getChatId(); - var awaitingReply = redTelBot.getAwaitingReply(chatId); + var userId = message.getFrom().getId(); + redTelBot.removeUserCommand(userId); + var awaitingReply = redTelBot.getAwaitingReply(userId); var replyMessage = SendMessage.builder() .chatId(awaitingReply.fromChatId()) .replyToMessageId(awaitingReply.messageId()) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java new file mode 100644 index 0000000..9343756 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java @@ -0,0 +1,50 @@ +package com.github.yvasyliev.service.telegram.commands; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.model.dto.ExternalMessageData; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ForwardMessage; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.List; + +@Service("/textadmin") +public class TextAdmin extends Command { + @Autowired + private ObjectMapper objectMapper; + + @Override + public void acceptWithException(Message message) throws TelegramApiException, IOException, URISyntaxException { + redTelBot.removeUserCommand(message.getFrom().getId()); + var sourceChatId = message.getChatId(); + var sourceMessageId = message.getMessageId(); + var forwardMessage = ForwardMessage.builder() + .chatId(redTelBot.getAdminId()) + .fromChatId(sourceChatId) + .messageId(sourceMessageId) + .build(); + redTelBot.execute(forwardMessage); + var replyButton = InlineKeyboardButton.builder() + .text("🔙 Reply") + .callbackData(objectMapper.writeValueAsString(new ExternalMessageData( + "/reply", + sourceChatId.toString(), + sourceMessageId + ))) + .build(); + var sendMessage = SendMessage.builder() + .chatId(redTelBot.getAdminId()) + .text(responseReader.applyWithException("responses/textadmin/message_to_admin.md")) + .replyMarkup(new InlineKeyboardMarkup(List.of(List.of(replyButton)))) + .build(); + redTelBot.execute(sendMessage); + reply(message, "responses/textadmin/message_sent.md"); + } +} diff --git a/src/main/resources/responses/contactadmin.md b/src/main/resources/responses/contactadmin.md new file mode 100644 index 0000000..cb11ae9 --- /dev/null +++ b/src/main/resources/responses/contactadmin.md @@ -0,0 +1 @@ +📝 OK, send the message: \ No newline at end of file diff --git a/src/main/resources/responses/textadmin/message_sent.md b/src/main/resources/responses/textadmin/message_sent.md new file mode 100644 index 0000000..c8f5b93 --- /dev/null +++ b/src/main/resources/responses/textadmin/message_sent.md @@ -0,0 +1 @@ +✅ Message has been sent to admin. \ No newline at end of file diff --git a/src/main/resources/responses/textadmin/message_to_admin.md b/src/main/resources/responses/textadmin/message_to_admin.md new file mode 100644 index 0000000..fee3c3b --- /dev/null +++ b/src/main/resources/responses/textadmin/message_to_admin.md @@ -0,0 +1 @@ +👆 Reply to message above \ No newline at end of file From 42e6facbbad4b24d19718bac78408245b9204f71 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 18:08:20 +0300 Subject: [PATCH 14/93] trim stack trace --- .../github/yvasyliev/appenders/TelegramBotAppender.java | 8 +++++++- .../github/yvasyliev/config/TelegramNotifierConfig.java | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java index 61c957f..51f39bc 100644 --- a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java +++ b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java @@ -25,11 +25,13 @@ @Plugin(name = "TelegramBotAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE) public class TelegramBotAppender extends AbstractAppender { private final TelegramNotifier telegramNotifier; + private final int charactersLimit; protected TelegramBotAppender(String name, Filter filter, Layout layout, boolean ignoreExceptions, Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); var applicationContext = new AnnotationConfigApplicationContext(TelegramNotifierConfig.class); this.telegramNotifier = applicationContext.getBean(TelegramNotifier.class); + this.charactersLimit = applicationContext.getBean("charactersLimit", int.class); } @PluginFactory @@ -48,10 +50,14 @@ public void append(LogEvent event) { %s""".formatted(formattedMessage, stackTrace); } + if (formattedMessage.length() > charactersLimit) { + formattedMessage = formattedMessage.substring(0, charactersLimit); + } + try { telegramNotifier.notify(formattedMessage); } catch (TelegramApiException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } } diff --git a/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java b/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java index 3a3adba..719b47a 100644 --- a/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java +++ b/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java @@ -21,4 +21,9 @@ public Executor delayedExecutor() { public Executor singleThreadExecutor() { return Executors.newSingleThreadExecutor(); } + + @Bean + public int charactersLimit() { + return 4096; + } } From 0d4d5f48d7562c06876e8f2282a9dfeb12ded40a Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 21:15:59 +0300 Subject: [PATCH 15/93] TelegramPublisher decomposition --- .../com/github/yvasyliev/Application.java | 9 +- .../bots/telegram/AbstractRedTelBot.java | 54 --- .../yvasyliev/bots/telegram/RedTelBot.java | 65 ++- .../bots/telegram/TelegramPublisher.java | 369 ------------------ .../service/telegram/PostManager.java | 160 ++++++++ .../telegram/callbacks/ApproveRedditPost.java | 7 +- .../telegram/callbacks/RejectRedditPost.java | 7 +- .../telegram/commands/PausePublishing.java | 7 +- .../telegram/commands/ResumePublishing.java | 7 +- .../service/telegram/commands/Stop.java | 7 +- .../telegram/posts/GifPostService.java | 27 ++ .../telegram/posts/PhotoGroupPostService.java | 149 +++++++ .../telegram/posts/PhotoPostService.java | 79 ++++ .../telegram/posts/PollPostService.java | 23 ++ .../service/telegram/posts/PostService.java | 30 ++ .../telegram/posts/TextPostService.java | 18 + .../telegram/posts/VideoPostService.java | 28 ++ src/main/resources/responses/photogroup.md | 3 + 18 files changed, 578 insertions(+), 471 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/PostManager.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java create mode 100644 src/main/resources/responses/photogroup.md diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/Application.java index 65c08d6..7a56875 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/Application.java @@ -2,20 +2,19 @@ import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.config.RedTelBotConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import com.github.yvasyliev.service.telegram.PostManager; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; public class Application { - private static final Logger LOGGER = LoggerFactory.getLogger(Application.class); - public static void main(String[] args) throws TelegramApiException { var context = new AnnotationConfigApplicationContext(RedTelBotConfiguration.class); context.registerShutdownHook(); var redTelBot = context.getBean(RedTelBot.class); redTelBot.startPolling(); - redTelBot.startPublishingPosts(); + + var postManager = context.getBean(PostManager.class); + postManager.schedulePosting(); } } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java index 32cdf58..7627069 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java @@ -1,19 +1,8 @@ package com.github.yvasyliev.bots.telegram; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.telegram.telegrambots.bots.TelegramLongPollingBot; -import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; -import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; -import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.Update; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; - -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executor; public abstract class AbstractRedTelBot extends TelegramLongPollingBot { @Value("${BOT_USERNAME}") @@ -28,9 +17,6 @@ public abstract class AbstractRedTelBot extends TelegramLongPollingBot { @Value("${GROUP_ID}") private String groupId; - @Autowired - private Executor delayedExecutor; - public AbstractRedTelBot(String botToken) { super(botToken); } @@ -55,44 +41,4 @@ public String getChannelId() { public String getGroupId() { return groupId; } - - public Executor getDelayedExecutor() { - return delayedExecutor; - } - - public List executeDelayed(SendMediaGroup sendMediaGroup) throws TelegramApiException { - try { - return CompletableFuture - .supplyAsync(() -> { - try { - return execute(sendMediaGroup); - } catch (TelegramApiException e) { - throw new CompletionException(e); - } - }, - delayedExecutor - ) - .get(); - } catch (InterruptedException | ExecutionException e) { - throw new TelegramApiException(e); - } - } - - public Message executeDelayed(SendPhoto sendPhoto) throws TelegramApiException { - try { - return CompletableFuture - .supplyAsync(() -> { - try { - return execute(sendPhoto); - } catch (TelegramApiException e) { - throw new CompletionException(e); - } - }, - delayedExecutor - ) - .get(); - } catch (InterruptedException | ExecutionException e) { - throw new TelegramApiException(e); - } - } } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index e7c4b1f..e70589f 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.CallbackData; import com.github.yvasyliev.model.dto.ExternalMessageData; +import com.github.yvasyliev.service.telegram.PostManager; import com.github.yvasyliev.service.telegram.callbacks.Callback; import com.github.yvasyliev.service.telegram.commands.Command; import org.slf4j.Logger; @@ -19,11 +20,10 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.meta.generics.BotSession; -import java.util.List; import java.util.Map; import java.util.Optional; -public class RedTelBot extends TelegramPublisher { +public class RedTelBot extends AbstractRedTelBot { private static final Logger LOGGER = LoggerFactory.getLogger(RedTelBot.class); @Autowired @@ -40,6 +40,9 @@ public class RedTelBot extends TelegramPublisher { @Autowired private Map awaitingReplies; + @Autowired + private PostManager postManager; + public RedTelBot(@Value("${BOT_TOKEN}") String botToken) { super(botToken); } @@ -52,24 +55,6 @@ public void stopPolling() { botSession.stop(); } - @Override - public void onUpdatesReceived(List updates) { - var messages = updates - .stream() - .filter(Update::hasMessage) - .map(Update::getMessage) - .filter(message -> { - var isAutomaticForward = message.getIsAutomaticForward(); - return isAutomaticForward != null && isAutomaticForward; - }) - .toList(); - if (messages.size() == 10) { - var message = messages.get(0); - sendExtraPhotos(message.getMessageId(), message.getForwardFromMessageId()); - } - super.onUpdatesReceived(updates); - } - @Override public void onUpdateReceived(Update update) { LOGGER.debug("Update received: {}", update); @@ -81,7 +66,11 @@ public void onUpdateReceived(Update update) { } public void onMessageReceived(Message message) { - if (message.isUserMessage()) { + var isAutomaticForward = message.getIsAutomaticForward(); + var forwardFromMessageId = message.getForwardFromMessageId(); + if (isAutomaticForward != null && isAutomaticForward && forwardFromMessageId != null) { + postManager.sendExtraPhotos(message.getMessageId(), forwardFromMessageId); + } else if (message.isUserMessage()) { onUserMessageReceived(message); } } @@ -116,23 +105,6 @@ public void onCallbackQueryReceived(CallbackQuery callbackQuery) { } } - private Optional getCommand(Message message) { - long userId = message.getFrom().getId(); - if (message.hasText()) { - var text = message.getText().trim(); - if (looksLikeCommand(text)) { - removeUserCommand(userId); - return Optional.of(text); - } - } - - return Optional.ofNullable(userCommands.get(userId)); - } - - private boolean looksLikeCommand(String text) { - return text.matches("/\\w+"); - } - public String addUserCommand(long userId, String command) { return userCommands.put(userId, command); } @@ -156,4 +128,21 @@ public boolean isFromAdmin(CallbackQuery callbackQuery) { public boolean isAdmin(User user) { return user.getId().toString().equals(getAdminId()); } + + private Optional getCommand(Message message) { + long userId = message.getFrom().getId(); + if (message.hasText()) { + var text = message.getText().trim(); + if (looksLikeCommand(text)) { + removeUserCommand(userId); + return Optional.of(text); + } + } + + return Optional.ofNullable(userCommands.get(userId)); + } + + private boolean looksLikeCommand(String text) { + return text.matches("/\\w+"); + } } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java b/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java deleted file mode 100644 index 3741063..0000000 --- a/src/main/java/com/github/yvasyliev/bots/telegram/TelegramPublisher.java +++ /dev/null @@ -1,369 +0,0 @@ -package com.github.yvasyliev.bots.telegram; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.model.dto.RedditPostDecisionData; -import com.github.yvasyliev.service.state.StateManager; -import com.github.yvasyliev.service.reddit.RedditPostService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.function.ThrowingBiFunction; -import org.telegram.telegrambots.meta.api.methods.ParseMode; -import org.telegram.telegrambots.meta.api.methods.polls.SendPoll; -import org.telegram.telegrambots.meta.api.methods.send.SendAnimation; -import org.telegram.telegrambots.meta.api.methods.send.SendDocument; -import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; -import org.telegram.telegrambots.meta.api.methods.send.SendVideo; -import org.telegram.telegrambots.meta.api.objects.InputFile; -import org.telegram.telegrambots.meta.api.objects.Message; -import org.telegram.telegrambots.meta.api.objects.media.InputMedia; -import org.telegram.telegrambots.meta.api.objects.media.InputMediaPhoto; -import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; -import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; -import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Predicate; - -public abstract class TelegramPublisher extends AbstractRedTelBot { - private static final Logger LOGGER = LoggerFactory.getLogger(RedditPostService.class); - @Autowired - private ScheduledExecutorService executorService; - - @Autowired - private RedditPostService redditPostService; - - private final AtomicBoolean publishing = new AtomicBoolean(true); - - @Autowired - private StateManager stateManager; - - @Autowired - private ObjectMapper objectMapper; - - @Autowired - private Map postCandidates; - - @Autowired - private Map extraPhotos; - - public TelegramPublisher(String botToken) { - super(botToken); - } - - public void pausePublishing() { - publishing.set(false); - } - - public void resumePublishing() { - publishing.set(true); - } - - public void stopPublishing() { - executorService.shutdown(); - } - - public void startPublishingPosts() { - executorService.scheduleWithFixedDelay(() -> { - if (publishing.get()) { - try { - var newPosts = redditPostService.findNewPosts(); - publishPosts(newPosts); - } catch (Exception e) { - LOGGER.error("Failed to find new posts.", e); - } - } - }, 0, 10, TimeUnit.SECONDS); - } - - public void publishPosts(List posts) { - posts = new ArrayList<>(posts); -// posts.removeIf(post -> 1696321369 < post.getCreated()); - posts.forEach(this::publishPost); - } - - public void publishPost(Post post) { - var chatId = getChatId(post.isApproved()); - var created = post.getCreated(); - try { - var sentMessage = switch (post.getType()) { - case TEXT -> execute(new SendMessage(chatId, post.getText())); - case PHOTO -> sendPhotoPost(chatId, post); - case PHOTO_GROUP -> sendPhotoGroup(chatId, post); - case GIF -> sendGif(chatId, post); - case VIDEO -> sendVideo(chatId, post); - case POLL -> sendPoll(chatId, post); - }; - if (sentMessage != null && !post.isApproved()) { - askApprove(chatId, created); - postCandidates.put(created, post); - } - stateManager.setLastCreated(created); - } catch (TelegramApiException e) { - LOGGER.error("Failed to send post: {}", post, e); - } catch (JsonProcessingException e) { - LOGGER.error("Failed to serialize post: {}", post, e); - } catch (IOException e) { - LOGGER.error("Failed to save last_created: {}", created, e); - } -// try { -// TimeUnit.SECONDS.sleep(10); -// } catch (InterruptedException e) { -// throw new RuntimeException(e); -// } - } - - private Message sendPoll(String chatId, Post post) throws TelegramApiException { - var sendPoll = SendPoll.builder() - .chatId(chatId) - .question(post.getText()) - .options(post.getOptions()) - .build(); - - return execute(sendPoll); - } - - private String getChatId(boolean approved) { - return approved ? getChannelId() : getAdminId(); - } - - private Message sendPhotoPost(String chatId, Post post) throws TelegramApiException { - try { - var sendPhoto = SendPhoto.builder() - .chatId(chatId) - .photo(new InputFile(post.getMediaUrl())) - .caption(post.getText()) - .hasSpoiler(post.isHasSpoiler()) - .build(); - return execute(sendPhoto); - } catch (TelegramApiRequestException e) { - return retrySendPhoto(chatId, post, e); - } - } - - private Message retrySendPhoto(String chatId, Post post, TelegramApiRequestException requestException) throws TelegramApiException { - try { - return onException( - requestException, - ex -> "Bad Request: wrong file identifier/HTTP URL specified".equals(ex.getApiResponse()), - (inputStream, filename) -> { - var sendPhoto = SendPhoto.builder() - .chatId(chatId) - .photo(new InputFile(inputStream, filename)) - .caption(post.getText()) - .hasSpoiler(post.isHasSpoiler()) - .build(); - return execute(sendPhoto); - }, - post - ); - } catch (TelegramApiRequestException e) { - return onException( - requestException, - ex -> "Bad Request: PHOTO_INVALID_DIMENSIONS".equals(ex.getApiResponse()), - (inputStream, filename) -> { - var sendPhoto = SendDocument.builder() - .chatId(chatId) - .document(new InputFile(inputStream, filename)) - .caption(post.getText()) - .build(); - return execute(sendPhoto); - }, - post - ); - } - } - - private Message onException( - TelegramApiRequestException e, - Predicate exceptionPredicate, - ThrowingBiFunction telegramApiCall, - Post post - ) throws TelegramApiException { - if (exceptionPredicate.negate().test(e)) { - throw e; - } - - return sendWithInputStream(telegramApiCall, post); - } - - private Message sendWithInputStream(ThrowingBiFunction telegramApiCall, Post post) throws TelegramApiException { - var mediaUrl = post.getMediaUrl(); - try (var inputStream = new URL(mediaUrl).openStream()) { - var filename = mediaUrl.substring(mediaUrl.lastIndexOf('/') + 1); - if (filename.contains("?")) { - filename = filename.substring(0, filename.indexOf("?")); - } - return telegramApiCall.applyWithException(inputStream, filename); - } catch (Exception e) { - throw new TelegramApiException(e); - } - } - - private List sendPhotoGroup(String chatId, Post post) throws TelegramApiException { - var pages = post.getPhotoUrlsPages(); - var text = post.getText(); - var hasSpoiler = post.isHasSpoiler(); - - var pagesAmount = pages.size(); - var caption = pagesAmount > 1 - ? """ - %s - - *More in comments 👇👇👇*""".formatted(text) - : text; - - var sendMediaGroup = sendMediaGroup(chatId, pages.get(0), hasSpoiler, null); - sendMediaGroup.getMedias().get(0).setCaption(caption); - - var publishedPost = execute(sendMediaGroup); - var messages = new ArrayList<>(publishedPost); - var messageId = publishedPost.get(0).getMessageId(); - - if (!post.isApproved()) { - for (var i = 1; i < pagesAmount; i++) { - var page = pages.get(i); - messages.addAll(page.size() > 1 - ? executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, messageId)) - : List.of(executeDelayed(sendPhoto(chatId, page.get(0), hasSpoiler, messageId))) - ); - } - } else { - extraPhotos.put(messageId, post); - } - - return messages; - } - - public List sendExtraPhotos(int replyMessageId, int forwardMessageId) { - var post = extraPhotos.remove(forwardMessageId); - - if (post == null) { - return List.of(); - } - - var hasSpoiler = post.isHasSpoiler(); - var pages = post.getPhotoUrlsPages(); - var pagesAmount = pages.size(); - var messages = new ArrayList(); - for (var i = 1; i < pagesAmount; i++) { - var page = pages.get(i); - try { - messages.addAll(page.size() > 1 - ? executeDelayed(sendMediaGroup(getGroupId(), page, hasSpoiler, replyMessageId)) - : List.of(executeDelayed(sendPhoto(getGroupId(), page.get(0), hasSpoiler, replyMessageId))) - ); - } catch (TelegramApiException e) { - LOGGER.error("Failed to send extra photos ({}) of {}", i, post, e); - break; - } - } - return messages; - } - - private SendMediaGroup sendMediaGroup(String chatId, List page, boolean hasSpoiler, Integer replyToMessageId) { - var inputMediaPhotos = page - .stream() - .map(photoUrl -> (InputMedia) InputMediaPhoto - .builder() - .media(photoUrl) - .hasSpoiler(hasSpoiler) - .parseMode(ParseMode.MARKDOWNV2) - .build() - ) - .toList(); - - return SendMediaGroup.builder() - .chatId(chatId) - .medias(inputMediaPhotos) - .replyToMessageId(replyToMessageId) - .build(); - } - - private SendPhoto sendPhoto(String chatId, String photo, boolean hasSpoiler, Integer replyToMessageId) { - return SendPhoto.builder() - .chatId(chatId) - .photo(new InputFile(photo)) - .hasSpoiler(hasSpoiler) - .replyToMessageId(replyToMessageId) - .build(); - } - - private Message sendGif(String chatId, Post post) throws TelegramApiException { - return sendWithInputStream((inputStream, filename) -> { - var sendAnimation = SendAnimation.builder() - .chatId(chatId) - .animation(new InputFile(inputStream, filename)) - .caption(post.getText()) - .hasSpoiler(post.isHasSpoiler()) - .build(); - - return execute(sendAnimation); - }, post); - } - - private Message sendVideo(String chatId, Post post) throws TelegramApiException { - return sendWithInputStream((inputStream, filename) -> { - var sendVideo = SendVideo.builder() - .chatId(chatId) - .video(new InputFile(inputStream, filename)) - .caption(post.getText()) - .hasSpoiler(post.isHasSpoiler()) - .supportsStreaming(true) - .build(); - - return execute(sendVideo); - }, post); - } - - private Message askApprove(String chatId, int created) throws TelegramApiException, JsonProcessingException { - var approveButton = InlineKeyboardButton.builder() - .text("✅ Approve") - .callbackData(objectMapper.writeValueAsString(new RedditPostDecisionData( - "/approveredditpost", - created - ))) - .build(); - - var denyButton = InlineKeyboardButton.builder() - .text("🚫 Reject") - .callbackData(objectMapper.writeValueAsString(new RedditPostDecisionData( - "/rejectredditpost", - created - ))) - .build(); - - var sendMessage = SendMessage.builder() - .chatId(chatId) - .text("👆 Shall I publish the post above?") - .replyMarkup(new InlineKeyboardMarkup(List.of(List.of( - approveButton, - denyButton - )))) - .build(); - return execute(sendMessage); - } - - public void publishPostCandidate(int created) { - var post = rejectPostCandidate(created); - post.setApproved(true); - publishPost(post); - } - - public Post rejectPostCandidate(int created) { - return postCandidates.remove(created); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java new file mode 100644 index 0000000..0317258 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -0,0 +1,160 @@ +package com.github.yvasyliev.service.telegram; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.RedditPostDecisionData; +import com.github.yvasyliev.service.reddit.RedditPostService; +import com.github.yvasyliev.service.state.StateManager; +import com.github.yvasyliev.service.telegram.posts.PhotoGroupPostService; +import com.github.yvasyliev.service.telegram.posts.PostService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; +import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +@Service +public class PostManager { + private static final Logger LOGGER = LoggerFactory.getLogger(PostManager.class); + + @Autowired + private ScheduledExecutorService executorService; + + @Autowired + private RedditPostService redditPostService; + + @Autowired + private RedTelBot redTelBot; + + @Autowired + private ApplicationContext context; + + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private Map postCandidates; + + @Autowired + private StateManager stateManager; + + @Autowired + private PhotoGroupPostService photoGroupPostService; + + private final AtomicBoolean publishing = new AtomicBoolean(true); + + public void schedulePosting() { + executorService.scheduleWithFixedDelay(() -> { + if (publishing.get()) { + try { + var newPosts = redditPostService.findNewPosts(); + publishPosts(newPosts); + } catch (Exception e) { + LOGGER.error("Failed to find new posts.", e); + } + } + }, 0, 1, TimeUnit.MINUTES); + } + + public void publishPosts(List posts) { + posts.forEach(this::publishPost); + } + + public void publishPost(Post post) { + var chatId = post.isApproved() ? redTelBot.getChannelId() : redTelBot.getAdminId(); + var created = post.getCreated(); + var postServiceName = post.getType().name(); + + if (context.containsBean(postServiceName)) { + var postService = (PostService) context.getBean(postServiceName); + try { + var sentMessage = postService.applyWithException(chatId, post); + if (sentMessage.isPresent() && !post.isApproved()) { + askApprove(chatId, created); + postCandidates.put(created, post); + } + } catch (TelegramApiException | JsonProcessingException e) { + LOGGER.error("Failed to ask approve.", e); + } catch (Exception e) { + LOGGER.error("Failed to send post: {}", post, e); + } + try { + stateManager.setLastCreated(created); + } catch (IOException e) { + LOGGER.error("Failed to save last_created: {}", created, e); + } + } + } + + public void pausePublishing() { + publishing.set(false); + } + + public void resumePublishing() { + publishing.set(true); + } + + public void stopPublishing() { + executorService.shutdown(); + } + + public void sendExtraPhotos(int replyToMessageId, int forwardMessageId) { + try { + photoGroupPostService.sendExtraPhotos(replyToMessageId, forwardMessageId); + } catch (TelegramApiException e) { + LOGGER.error("Failed to send extra photos.", e); + } + } + + public void publishPostCandidate(int created) { + var post = rejectPostCandidate(created); + post.setApproved(true); + publishPost(post); + } + + public Post rejectPostCandidate(int created) { + return postCandidates.remove(created); + } + + private Message askApprove(String chatId, int created) throws TelegramApiException, JsonProcessingException { + var approveButton = InlineKeyboardButton.builder() + .text("✅ Approve") + .callbackData(objectMapper.writeValueAsString(new RedditPostDecisionData( + "/approveredditpost", + created + ))) + .build(); + + var denyButton = InlineKeyboardButton.builder() + .text("🚫 Reject") + .callbackData(objectMapper.writeValueAsString(new RedditPostDecisionData( + "/rejectredditpost", + created + ))) + .build(); + + var sendMessage = SendMessage.builder() + .chatId(chatId) + .text("👆 Shall I publish the post above?") + .replyMarkup(new InlineKeyboardMarkup(List.of(List.of( + approveButton, + denyButton + )))) + .build(); + return redTelBot.execute(sendMessage); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java index f50c453..898ceb1 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java @@ -1,6 +1,8 @@ package com.github.yvasyliev.service.telegram.callbacks; import com.github.yvasyliev.model.dto.RedditPostDecisionData; +import com.github.yvasyliev.service.telegram.PostManager; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; @@ -13,13 +15,16 @@ @Service("/approveredditpost") public class ApproveRedditPost extends Callback { + @Autowired + private PostManager postManager; + @Override public void acceptWithException(CallbackQuery callbackQuery) throws IOException, TelegramApiException, URISyntaxException { var message = callbackQuery.getMessage(); var chatId = message.getChatId(); var messageId = message.getMessageId(); var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); - redTelBot.publishPostCandidate(data.created()); + postManager.publishPostCandidate(data.created()); redTelBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java index ca0f763..372b5f2 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java @@ -1,6 +1,8 @@ package com.github.yvasyliev.service.telegram.callbacks; import com.github.yvasyliev.model.dto.RedditPostDecisionData; +import com.github.yvasyliev.service.telegram.PostManager; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; @@ -9,13 +11,16 @@ @Service("/rejectredditpost") public class RejectRedditPost extends Callback { + @Autowired + private PostManager postManager; + @Override public void acceptWithException(CallbackQuery callbackQuery) throws Exception { var message = callbackQuery.getMessage(); var chatId = message.getChatId(); var messageId = message.getMessageId(); var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); - redTelBot.rejectPostCandidate(data.created()); + postManager.rejectPostCandidate(data.created()); redTelBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java index f2a1387..7e9cfda 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java @@ -1,5 +1,7 @@ package com.github.yvasyliev.service.telegram.commands; +import com.github.yvasyliev.service.telegram.PostManager; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; @@ -10,9 +12,12 @@ @Service("/pausepublishing") public class PausePublishing extends Command { + @Autowired + private PostManager postManager; + @Override public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - redTelBot.pausePublishing(); + postManager.pausePublishing(); redTelBot.execute(new SendMessage( message.getChatId().toString(), responseReader.applyWithException("responses/pausepublishing.md") diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java index f57508c..aeaed0e 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java @@ -1,5 +1,7 @@ package com.github.yvasyliev.service.telegram.commands; +import com.github.yvasyliev.service.telegram.PostManager; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; @@ -10,9 +12,12 @@ @Service("/resumepublishing") public class ResumePublishing extends Command { + @Autowired + private PostManager postManager; + @Override public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - redTelBot.resumePublishing(); + postManager.resumePublishing(); redTelBot.execute(new SendMessage( message.getChatId().toString(), responseReader.applyWithException("responses/resumepublishing.md") diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java index 1533827..af66e38 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -1,5 +1,7 @@ package com.github.yvasyliev.service.telegram.commands; +import com.github.yvasyliev.service.telegram.PostManager; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -9,9 +11,12 @@ @Service("/stop") public class Stop extends Command { + @Autowired + private PostManager postManager; + @Override public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - redTelBot.stopPublishing(); + postManager.stopPublishing(); redTelBot.stopPolling(); reply(message, "responses/stop.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java new file mode 100644 index 0000000..867c3c0 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java @@ -0,0 +1,27 @@ +package com.github.yvasyliev.service.telegram.posts; + +import com.github.yvasyliev.model.dto.Post; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendAnimation; +import org.telegram.telegrambots.meta.api.objects.InputFile; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.util.Optional; + +@Service("GIF") +public class GifPostService extends PostService { + @Override + public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + return Optional.ofNullable(sendWithInputStream((inputStream, filename) -> { + var sendAnimation = SendAnimation.builder() + .chatId(chatId) + .animation(new InputFile(inputStream, filename)) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .build(); + + return redTelBot.execute(sendAnimation); + }, post)); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java new file mode 100644 index 0000000..606914d --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -0,0 +1,149 @@ +package com.github.yvasyliev.service.telegram.posts; + +import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.service.telegram.readers.BotResponseReader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.ParseMode; +import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; +import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; +import org.telegram.telegrambots.meta.api.objects.InputFile; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.api.objects.media.InputMedia; +import org.telegram.telegrambots.meta.api.objects.media.InputMediaPhoto; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; + +@Service("PHOTO_GROUP") +public class PhotoGroupPostService extends PostService> { + @Autowired + private BotResponseReader responseReader; + + @Autowired + private Executor delayedExecutor; + + @Autowired + private Map extraPhotos; + + @Override + public Optional> applyWithException(String chatId, Post post) throws TelegramApiException, URISyntaxException, IOException { + var pages = post.getPhotoUrlsPages(); + var text = post.getText(); + var hasSpoiler = post.isHasSpoiler(); + + var pagesAmount = pages.size(); + var caption = pagesAmount > 1 + ? responseReader.applyWithException("responses/photogroup.md").formatted(text) + : text; + + var sendMediaGroup = sendMediaGroup(chatId, pages.get(0), hasSpoiler, null); // TODO: 10/16/2023 replace pages.get(0) + sendMediaGroup.getMedias().get(0).setCaption(caption); + + var publishedPost = redTelBot.execute(sendMediaGroup); + var messages = new ArrayList<>(publishedPost); + var messageId = publishedPost.get(0).getMessageId(); + + if (!post.isApproved()) { + messages.addAll(sendDelayed(chatId, messageId, post)); + } else { + extraPhotos.put(messageId, post); + } + + return Optional.of(messages); + } + + public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) throws TelegramApiException { + var post = extraPhotos.remove(forwardMessageId); + return post != null + ? sendDelayed(redTelBot.getGroupId(), replyToMessageId, post) + : List.of(); + } + + private List sendDelayed(String chatId, int replyToMessageId, Post post) throws TelegramApiException { + var pages = post.getPhotoUrlsPages(); + var hasSpoiler = post.isHasSpoiler(); + var messages = new ArrayList(); + for (var i = 1; i < pages.size(); i++) { + var page = pages.get(i); + messages.addAll(page.size() > 1 + ? executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)) + : List.of(executeDelayed(sendPhoto(chatId, page.get(0), hasSpoiler, replyToMessageId))) + ); + } + return messages; + } + + private SendMediaGroup sendMediaGroup(String chatId, List page, boolean hasSpoiler, Integer replyToMessageId) { + var inputMediaPhotos = page + .stream() + .map(photoUrl -> (InputMedia) InputMediaPhoto + .builder() + .media(photoUrl) + .hasSpoiler(hasSpoiler) + .parseMode(ParseMode.MARKDOWNV2) + .build() + ) + .toList(); + + return SendMediaGroup.builder() + .chatId(chatId) + .medias(inputMediaPhotos) + .replyToMessageId(replyToMessageId) + .build(); + } + + private SendPhoto sendPhoto(String chatId, String photo, boolean hasSpoiler, Integer replyToMessageId) { + return SendPhoto.builder() + .chatId(chatId) + .photo(new InputFile(photo)) + .hasSpoiler(hasSpoiler) + .replyToMessageId(replyToMessageId) + .build(); + } + + private List executeDelayed(SendMediaGroup sendMediaGroup) throws TelegramApiException { + try { + return CompletableFuture + .supplyAsync(() -> { + try { + return redTelBot.execute(sendMediaGroup); + } catch (TelegramApiException e) { + throw new CompletionException(e); + } + }, + delayedExecutor + ) + .get(); + } catch (InterruptedException | ExecutionException e) { + throw new TelegramApiException(e); + } + } + + public Message executeDelayed(SendPhoto sendPhoto) throws TelegramApiException { + try { + return CompletableFuture + .supplyAsync(() -> { + try { + return redTelBot.execute(sendPhoto); + } catch (TelegramApiException e) { + throw new CompletionException(e); + } + }, + delayedExecutor + ) + .get(); + } catch (InterruptedException | ExecutionException e) { + throw new TelegramApiException(e); + } + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java new file mode 100644 index 0000000..9a7e506 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java @@ -0,0 +1,79 @@ +package com.github.yvasyliev.service.telegram.posts; + +import com.github.yvasyliev.model.dto.Post; +import org.springframework.stereotype.Service; +import org.springframework.util.function.ThrowingBiFunction; +import org.telegram.telegrambots.meta.api.methods.send.SendDocument; +import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; +import org.telegram.telegrambots.meta.api.objects.InputFile; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; + +import java.io.InputStream; +import java.util.Optional; +import java.util.function.Predicate; + +@Service("PHOTO") +public class PhotoPostService extends PostService { + @Override + public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + try { + var sendPhoto = SendPhoto.builder() + .chatId(chatId) + .photo(new InputFile(post.getMediaUrl())) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .build(); + return Optional.ofNullable(redTelBot.execute(sendPhoto)); + } catch (TelegramApiRequestException e) { + return Optional.ofNullable(retrySendPhoto(chatId, post, e)); + } + } + + private Message retrySendPhoto(String chatId, Post post, TelegramApiRequestException requestException) throws TelegramApiException { + try { + return onException( + requestException, + ex -> "Bad Request: wrong file identifier/HTTP URL specified".equals(ex.getApiResponse()), + (inputStream, filename) -> { + var sendPhoto = SendPhoto.builder() + .chatId(chatId) + .photo(new InputFile(inputStream, filename)) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .build(); + return redTelBot.execute(sendPhoto); + }, + post + ); + } catch (TelegramApiRequestException e) { + return onException( + requestException, + ex -> "Bad Request: PHOTO_INVALID_DIMENSIONS".equals(ex.getApiResponse()), + (inputStream, filename) -> { + var sendPhoto = SendDocument.builder() + .chatId(chatId) + .document(new InputFile(inputStream, filename)) + .caption(post.getText()) + .build(); + return redTelBot.execute(sendPhoto); + }, + post + ); + } + } + + private Message onException( + TelegramApiRequestException e, + Predicate exceptionPredicate, + ThrowingBiFunction telegramApiCall, + Post post + ) throws TelegramApiException { + if (exceptionPredicate.negate().test(e)) { + throw e; + } + + return sendWithInputStream(telegramApiCall, post); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java new file mode 100644 index 0000000..46e1ff9 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java @@ -0,0 +1,23 @@ +package com.github.yvasyliev.service.telegram.posts; + +import com.github.yvasyliev.model.dto.Post; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.polls.SendPoll; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.util.Optional; + +@Service("POLL") +public class PollPostService extends PostService { + @Override + public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + var sendPoll = SendPoll.builder() + .chatId(chatId) + .question(post.getText()) + .options(post.getOptions()) + .build(); + + return Optional.ofNullable(redTelBot.execute(sendPoll)); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java new file mode 100644 index 0000000..01b42ca --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java @@ -0,0 +1,30 @@ +package com.github.yvasyliev.service.telegram.posts; + +import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.model.dto.Post; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.function.ThrowingBiFunction; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.io.InputStream; +import java.net.URL; +import java.util.Optional; + +public abstract class PostService implements ThrowingBiFunction> { + @Autowired + protected RedTelBot redTelBot; + + protected Message sendWithInputStream(ThrowingBiFunction telegramApiCall, Post post) throws TelegramApiException { + var mediaUrl = post.getMediaUrl(); + try (var inputStream = new URL(mediaUrl).openStream()) { + var filename = mediaUrl.substring(mediaUrl.lastIndexOf('/') + 1); + if (filename.contains("?")) { + filename = filename.substring(0, filename.indexOf("?")); + } + return telegramApiCall.applyWithException(inputStream, filename); + } catch (Exception e) { + throw new TelegramApiException(e); + } + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java new file mode 100644 index 0000000..0c3c9b3 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java @@ -0,0 +1,18 @@ +package com.github.yvasyliev.service.telegram.posts; + + +import com.github.yvasyliev.model.dto.Post; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.util.Optional; + +@Service("TEXT") +public class TextPostService extends PostService { + @Override + public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + return Optional.ofNullable(redTelBot.execute(new SendMessage(chatId, post.getText()))); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java new file mode 100644 index 0000000..dff3c9a --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java @@ -0,0 +1,28 @@ +package com.github.yvasyliev.service.telegram.posts; + +import com.github.yvasyliev.model.dto.Post; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendVideo; +import org.telegram.telegrambots.meta.api.objects.InputFile; +import org.telegram.telegrambots.meta.api.objects.Message; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.util.Optional; + +@Service("VIDEO") +public class VideoPostService extends PostService { + @Override + public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + return Optional.ofNullable(sendWithInputStream((inputStream, filename) -> { + var sendVideo = SendVideo.builder() + .chatId(chatId) + .video(new InputFile(inputStream, filename)) + .caption(post.getText()) + .hasSpoiler(post.isHasSpoiler()) + .supportsStreaming(true) + .build(); + + return redTelBot.execute(sendVideo); + }, post)); + } +} diff --git a/src/main/resources/responses/photogroup.md b/src/main/resources/responses/photogroup.md new file mode 100644 index 0000000..6a0f26c --- /dev/null +++ b/src/main/resources/responses/photogroup.md @@ -0,0 +1,3 @@ +%s + +*More in comments 👇👇👇* \ No newline at end of file From 943ae06fb9466242079518c71b153efd1644daad Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 16 Oct 2023 21:37:17 +0300 Subject: [PATCH 16/93] MarkdownV2.java --- .../telegram/commands/AddBlockedAuthor.java | 2 ++ .../commands/RemoveBlockedAuthor.java | 3 ++- .../service/telegram/commands/ReplySent.java | 3 ++- .../telegram/factory/UsernameParser.java | 6 ++--- .../telegram/readers/BotResponseReader.java | 3 ++- .../github/yvasyliev/utils/MarkdownV2.java | 25 +++++++++++++++++++ 6 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/utils/MarkdownV2.java diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java index b5627ab..f96ab44 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -2,6 +2,7 @@ import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.factory.UsernameParser; +import com.github.yvasyliev.utils.MarkdownV2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -24,6 +25,7 @@ public void acceptWithException(Message message) throws IOException, TelegramApi if (optionalUsername.isPresent()) { var username = optionalUsername.get(); stateManager.addBlockedAuthor(username); + username = MarkdownV2.escaped(username); reply(message, "responses/addblockedauthor.md", username, username); } else { reply(message, "responses/usernamenotrecognized.md"); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java index 8159ee8..2f6747e 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -2,6 +2,7 @@ import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.factory.UsernameParser; +import com.github.yvasyliev.utils.MarkdownV2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -21,7 +22,7 @@ public void acceptWithException(Message message) throws Exception { if (optionalUsername.isPresent()) { var username = optionalUsername.get(); stateManager.removeBlockedAuthor(username); - reply(message, "responses/removeblockedauthor.md", username); + reply(message, "responses/removeblockedauthor.md", MarkdownV2.escaped(username)); } else { reply(message, "responses/usernamenotrecognized.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java index e4b5613..49e91aa 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java @@ -1,5 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; +import com.github.yvasyliev.utils.MarkdownV2; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; @@ -20,7 +21,7 @@ public void acceptWithException(Message message) throws URISyntaxException, IOEx var replyMessage = SendMessage.builder() .chatId(awaitingReply.fromChatId()) .replyToMessageId(awaitingReply.messageId()) - .text(responseReader.applyWithException("responses/replysent/reply_template.md").formatted(message.getText())) + .text(responseReader.applyWithException("responses/replysent/reply_template.md").formatted(MarkdownV2.escaped(message.getText()))) .parseMode(ParseMode.MARKDOWNV2) .build(); redTelBot.execute(replyMessage); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java index 98610a7..f97c85e 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java @@ -18,20 +18,20 @@ public Optional apply(Message message) { var username = message.getText().trim(); var matcher = Pattern - .compile("https://www\\.reddit\\.com/user/(\\w+)") + .compile("https://www\\.reddit\\.com/user/([\\w-]+)") .matcher(username); if (matcher.find()) { username = matcher.group(1); } matcher = Pattern - .compile("u/(\\w+)") + .compile("u/([\\w-]+)") .matcher(username); if (matcher.matches()) { username = matcher.group(1); } - return username.matches("\\w+") + return username.matches("[\\w-]+") ? Optional.of(username) : Optional.empty(); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java index 9129943..a73a5f3 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java @@ -18,6 +18,7 @@ public String applyWithException(String file) throws URISyntaxException, IOExcep Files.readAllLines(Paths.get(Objects.requireNonNull(BotResponseReader.class.getClassLoader().getResource(file)).toURI())) ) .replace(".", "\\.") - .replace("!", "\\!"); + .replace("!", "\\!") + .replace("-", "\\-"); } } diff --git a/src/main/java/com/github/yvasyliev/utils/MarkdownV2.java b/src/main/java/com/github/yvasyliev/utils/MarkdownV2.java new file mode 100644 index 0000000..75d9ead --- /dev/null +++ b/src/main/java/com/github/yvasyliev/utils/MarkdownV2.java @@ -0,0 +1,25 @@ +package com.github.yvasyliev.utils; + +public class MarkdownV2 { + public static String escaped(String text) { + return text + .replace("_", "\\_") + .replace("*", "\\*") + .replace("[", "\\[") + .replace("]", "\\]") + .replace("(", "\\(") + .replace(")", "\\)") + .replace("~", "\\~") + .replace("`", "\\`") + .replace(">", "\\>") + .replace("#", "\\#") + .replace("+", "\\+") + .replace("-", "\\-") + .replace("=", "\\=") + .replace("|", "\\|") + .replace("{", "\\{") + .replace("}", "\\}") + .replace(".", "\\.") + .replace("!", "\\!"); + } +} From ff8f344ea294a8caec1cf751c4c4c333664cfde1 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 19 Oct 2023 23:13:08 +0300 Subject: [PATCH 17/93] Post decomposition --- .../config/RedTelBotConfiguration.java | 11 +- .../com/github/yvasyliev/model/dto/Post.java | 117 ------------------ .../github/yvasyliev/model/dto/PostType.java | 10 -- .../yvasyliev/model/dto/post/GifPost.java | 8 ++ .../yvasyliev/model/dto/post/MediaPost.java | 13 ++ .../model/dto/post/PhotoGroupPost.java | 20 +++ .../yvasyliev/model/dto/post/PhotoPost.java | 8 ++ .../yvasyliev/model/dto/post/PollPost.java | 20 +++ .../github/yvasyliev/model/dto/post/Post.java | 65 ++++++++++ .../model/dto/post/SpoilerablePost.java | 14 +++ .../yvasyliev/model/dto/post/TextPost.java | 8 ++ .../yvasyliev/model/dto/post/VideoPost.java | 8 ++ .../deserializers/PostDeserializer.java | 4 +- .../deserializers/mappers/GifPostMapper.java | 8 +- .../mappers/PhotoGroupPostMapper.java | 8 +- .../mappers/PhotoPostMapper.java | 8 +- .../deserializers/mappers/PollPostMapper.java | 7 +- .../deserializers/mappers/PostMapper.java | 2 +- .../deserializers/mappers/TextPostMapper.java | 9 +- .../mappers/VideoPostMapper.java | 8 +- .../service/reddit/RedditPostService.java | 2 +- .../service/telegram/PostManager.java | 9 +- .../telegram/posts/GifPostService.java | 9 +- .../telegram/posts/PhotoGroupPostService.java | 13 +- .../telegram/posts/PhotoPostService.java | 13 +- .../telegram/posts/PollPostService.java | 9 +- .../service/telegram/posts/PostService.java | 7 +- .../telegram/posts/TextPostService.java | 9 +- .../telegram/posts/VideoPostService.java | 9 +- 29 files changed, 242 insertions(+), 194 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/model/dto/Post.java delete mode 100644 src/main/java/com/github/yvasyliev/model/dto/PostType.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/Post.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java index cc70aa3..7abdf3b 100644 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -6,7 +6,8 @@ import com.fasterxml.jackson.databind.module.SimpleModule; import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.model.dto.ExternalMessageData; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.PhotoGroupPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanDefinition; @@ -89,7 +90,13 @@ protected boolean removeEldestEntry(Map.Entry eldest) { @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map intPostMap(@Value("16") int maxSize) { + public Map integerPostMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map integerPhotoGroupPostMap(@Value("16") int maxSize) { return synchronizedFixedSizeMap(maxSize); } diff --git a/src/main/java/com/github/yvasyliev/model/dto/Post.java b/src/main/java/com/github/yvasyliev/model/dto/Post.java deleted file mode 100644 index 96e21f1..0000000 --- a/src/main/java/com/github/yvasyliev/model/dto/Post.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.github.yvasyliev.model.dto; - -import java.util.List; - -public class Post implements Comparable { - private PostType type; - private Integer created = 0; - private String author; - private String text; - private Boolean hasSpoiler; - private Boolean approved; - private String mediaUrl; - private List> photoUrlsPages; - private List options; - private String postUrl; - - public PostType getType() { - return type; - } - - public void setType(PostType type) { - this.type = type; - } - - public Integer getCreated() { - return created; - } - - public void setCreated(Integer created) { - this.created = created; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public Boolean isHasSpoiler() { - return hasSpoiler; - } - - public void setHasSpoiler(Boolean hasSpoiler) { - this.hasSpoiler = hasSpoiler; - } - - public Boolean isApproved() { - return approved; - } - - public void setApproved(Boolean approved) { - this.approved = approved; - } - - public String getMediaUrl() { - return mediaUrl; - } - - public void setMediaUrl(String mediaUrl) { - this.mediaUrl = mediaUrl; - } - - public List> getPhotoUrlsPages() { - return photoUrlsPages; - } - - public void setPhotoUrlsPages(List> photoUrlsPages) { - this.photoUrlsPages = photoUrlsPages; - } - - public List getOptions() { - return options; - } - - public void setOptions(List options) { - this.options = options; - } - - public String getPostUrl() { - return postUrl; - } - - public void setPostUrl(String postUrl) { - this.postUrl = postUrl; - } - - @Override - public int compareTo(Post post) { - return Integer.compare(created, post.getCreated()); - } - - @Override - public String toString() { - return "Post{" + - "type=" + type + - ", created=" + created + - ", author='" + author + '\'' + - ", text='" + text + '\'' + - ", hasSpoiler=" + hasSpoiler + - ", approved=" + approved + - ", mediaUrl='" + mediaUrl + '\'' + - ", photoUrlsPages=" + photoUrlsPages + - ", options=" + options + - ", postUrl='" + postUrl + '\'' + - '}'; - } -} diff --git a/src/main/java/com/github/yvasyliev/model/dto/PostType.java b/src/main/java/com/github/yvasyliev/model/dto/PostType.java deleted file mode 100644 index 642f183..0000000 --- a/src/main/java/com/github/yvasyliev/model/dto/PostType.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.github.yvasyliev.model.dto; - -public enum PostType { - TEXT, - PHOTO, - PHOTO_GROUP, - GIF, - VIDEO, - POLL -} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java new file mode 100644 index 0000000..cca7d22 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java @@ -0,0 +1,8 @@ +package com.github.yvasyliev.model.dto.post; + +public class GifPost extends MediaPost { + @Override + public String getType() { + return Type.GIF; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java new file mode 100644 index 0000000..211e528 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java @@ -0,0 +1,13 @@ +package com.github.yvasyliev.model.dto.post; + +public abstract class MediaPost extends SpoilerablePost { + private String mediaUrl; + + public String getMediaUrl() { + return mediaUrl; + } + + public void setMediaUrl(String mediaUrl) { + this.mediaUrl = mediaUrl; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java new file mode 100644 index 0000000..1a80672 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java @@ -0,0 +1,20 @@ +package com.github.yvasyliev.model.dto.post; + +import java.util.List; + +public class PhotoGroupPost extends SpoilerablePost { + private List> photoUrlsPages; + + public List> getPhotoUrlsPages() { + return photoUrlsPages; + } + + public void setPhotoUrlsPages(List> photoUrlsPages) { + this.photoUrlsPages = photoUrlsPages; + } + + @Override + public String getType() { + return Type.PHOTO_GROUP; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java new file mode 100644 index 0000000..55ad7aa --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java @@ -0,0 +1,8 @@ +package com.github.yvasyliev.model.dto.post; + +public class PhotoPost extends MediaPost { + @Override + public String getType() { + return Type.PHOTO; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java new file mode 100644 index 0000000..7351575 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java @@ -0,0 +1,20 @@ +package com.github.yvasyliev.model.dto.post; + +import java.util.List; + +public class PollPost extends Post { + private List options; + + public List getOptions() { + return options; + } + + public void setOptions(List options) { + this.options = options; + } + + @Override + public String getType() { + return Type.POLL; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/Post.java b/src/main/java/com/github/yvasyliev/model/dto/post/Post.java new file mode 100644 index 0000000..b0d954b --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/Post.java @@ -0,0 +1,65 @@ +package com.github.yvasyliev.model.dto.post; + +public abstract class Post implements Comparable { + private int created; + private String author; + private boolean approved; + private String postUrl; + private String text; + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public abstract String getType(); + + public int getCreated() { + return created; + } + + public void setCreated(int created) { + this.created = created; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public boolean isApproved() { + return approved; + } + + public void setApproved(boolean approved) { + this.approved = approved; + } + + public String getPostUrl() { + return postUrl; + } + + public void setPostUrl(String postUrl) { + this.postUrl = postUrl; + } + + @Override + public int compareTo(Post post) { + return Integer.compare(created, post.created); + } + + public interface Type { + String GIF = "GIF"; + String PHOTO_GROUP = "PHOTO_GROUP"; + String PHOTO = "PHOTO"; + String POLL = "POLL"; + String TEXT = "TEXT"; + String VIDEO = "VIDEO"; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java b/src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java new file mode 100644 index 0000000..b7edd49 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java @@ -0,0 +1,14 @@ +package com.github.yvasyliev.model.dto.post; + +public abstract class SpoilerablePost extends Post { + + private boolean hasSpoiler; + + public boolean isHasSpoiler() { + return hasSpoiler; + } + + public void setHasSpoiler(boolean hasSpoiler) { + this.hasSpoiler = hasSpoiler; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java new file mode 100644 index 0000000..b02465b --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java @@ -0,0 +1,8 @@ +package com.github.yvasyliev.model.dto.post; + +public class TextPost extends Post { + @Override + public String getType() { + return Type.TEXT; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java new file mode 100644 index 0000000..7cbfea6 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java @@ -0,0 +1,8 @@ +package com.github.yvasyliev.model.dto.post; + +public class VideoPost extends MediaPost { + @Override + public String getType() { + return Type.VIDEO; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index 7802e3c..d4832de 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.state.StateManager; import org.hibernate.MappingException; import org.springframework.beans.factory.annotation.Autowired; @@ -30,7 +30,6 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var node = jsonParser.getCodec().readTree(jsonParser); if (node instanceof JsonNode jsonPost) { var author = jsonPost.get("author").textValue(); - var hasSpoiler = "nsfw".equals(jsonPost.get("thumbnail").textValue()); var created = jsonPost.get("created").intValue(); var postUrl = jsonPost.get("url_overridden_by_dest").textValue(); var blockedAuthors = context.getBean(StateManager.class).getBlockedAuthors(); @@ -40,7 +39,6 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ try { var optionalPost = postMapper.applyWithException(jsonPost).map(post -> { post.setAuthor(author); - post.setHasSpoiler(hasSpoiler); post.setCreated(created); post.setApproved(blockedAuthors.contains(author)); post.setPostUrl(postUrl); diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java index 614fb11..9b94498 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.model.dto.PostType; +import com.github.yvasyliev.model.dto.post.GifPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -23,10 +23,10 @@ public Optional applyWithException(JsonNode jsonPost) { .get("source") .get("url") .textValue(); - var post = new Post(); - post.setType(PostType.GIF); + var post = new GifPost(); post.setText(jsonPost.get("title").textValue()); post.setMediaUrl(gifUrl); + post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); return Optional.of(post); } return Optional.empty(); diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java index d01117f..0891d3b 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.PostType; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.PhotoGroupPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -24,10 +24,10 @@ public Optional applyWithException(JsonNode jsonPost) { if (jsonPost.has("gallery_data")) { var photoUrlsPages = extractPhotoUrlsPages(jsonPost); var title = jsonPost.get("title").textValue(); - var post = new Post(); - post.setType(PostType.PHOTO_GROUP); + var post = new PhotoGroupPost(); post.setText(title); post.setPhotoUrlsPages(photoUrlsPages); + post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); return Optional.of(post); } return Optional.empty(); diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java index 203c396..479aeec 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.model.dto.PostType; +import com.github.yvasyliev.model.dto.post.PhotoPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -21,10 +21,10 @@ public Optional applyWithException(JsonNode jsonPost) { var photoUrl = extractPhotoUrl(jsonPost); if (photoUrl != null) { var text = jsonPost.get("title").textValue(); - var post = new Post(); - post.setType(PostType.PHOTO); + var post = new PhotoPost(); post.setText(text); post.setMediaUrl(photoUrl); + post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); return Optional.of(post); } return Optional.empty(); diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java index 9a27b82..6254f17 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.model.dto.PostType; +import com.github.yvasyliev.model.dto.post.PollPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -18,8 +18,7 @@ public Optional applyWithException(JsonNode jsonPost) { var options = stream(redditOptions) .map(redditOption -> redditOption.get("text").textValue()) .toList(); - var post = new Post(); - post.setType(PostType.POLL); + var post = new PollPost(); post.setText(jsonPost.get("title").textValue()); post.setOptions(options); return Optional.of(post); diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java index 077251a..5eaf427 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PostMapper.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.util.function.ThrowingFunction; import java.util.Iterator; diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java index 7a6fc8f..f954539 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.model.dto.PostType; +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.dto.post.TextPost; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -21,7 +21,7 @@ public class TextPostMapper implements PostMapper { @Value(""" %s - + %s""") private String postTextTemplate; @@ -33,8 +33,7 @@ public Optional applyWithException(JsonNode jsonPost) { jsonPost.get("url_overridden_by_dest").textValue() ); - var post = new Post(); - post.setType(PostType.TEXT); + var post = new TextPost(); post.setText(text); return Optional.of(post); } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java index da2fa2c..b855c06 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.deserializers.mappers; import com.fasterxml.jackson.databind.JsonNode; -import com.github.yvasyliev.model.dto.Post; -import com.github.yvasyliev.model.dto.PostType; +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.dto.post.VideoPost; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.annotation.Order; @@ -22,10 +22,10 @@ public class VideoPostMapper implements PostMapper { public Optional applyWithException(JsonNode jsonPost) throws Exception { var videoUrl = extractVideoUrl(jsonPost); if (videoUrl != null) { - var post = new Post(); - post.setType(PostType.VIDEO); + var post = new VideoPost(); post.setText(jsonPost.get("title").textValue()); post.setMediaUrl(videoUrl); + post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); return Optional.of(post); } return Optional.empty(); diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java index fef4fc3..a0134b2 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.state.StateManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 0317258..1d7f0dd 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -3,8 +3,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.bots.telegram.RedTelBot; -import com.github.yvasyliev.model.dto.Post; import com.github.yvasyliev.model.dto.RedditPostDecisionData; +import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.reddit.RedditPostService; import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.posts.PhotoGroupPostService; @@ -74,13 +74,14 @@ public void publishPosts(List posts) { posts.forEach(this::publishPost); } - public void publishPost(Post post) { + @SuppressWarnings("unchecked") + public void publishPost(T post) { var chatId = post.isApproved() ? redTelBot.getChannelId() : redTelBot.getAdminId(); var created = post.getCreated(); - var postServiceName = post.getType().name(); + var postServiceName = post.getType(); if (context.containsBean(postServiceName)) { - var postService = (PostService) context.getBean(postServiceName); + var postService = (PostService) context.getBean(postServiceName); try { var sentMessage = postService.applyWithException(chatId, post); if (sentMessage.isPresent() && !post.isApproved()) { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java index 867c3c0..977d8df 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.posts; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.GifPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendAnimation; import org.telegram.telegrambots.meta.api.objects.InputFile; @@ -9,10 +10,10 @@ import java.util.Optional; -@Service("GIF") -public class GifPostService extends PostService { +@Service(Post.Type.GIF) +public class GifPostService extends PostService { @Override - public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + public Optional applyWithException(String chatId, GifPost post) throws TelegramApiException { return Optional.ofNullable(sendWithInputStream((inputStream, filename) -> { var sendAnimation = SendAnimation.builder() .chatId(chatId) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 606914d..0d0a821 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.posts; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.PhotoGroupPost; +import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.telegram.readers.BotResponseReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,8 +25,8 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; -@Service("PHOTO_GROUP") -public class PhotoGroupPostService extends PostService> { +@Service(Post.Type.PHOTO_GROUP) +public class PhotoGroupPostService extends PostService> { @Autowired private BotResponseReader responseReader; @@ -33,10 +34,10 @@ public class PhotoGroupPostService extends PostService> { private Executor delayedExecutor; @Autowired - private Map extraPhotos; + private Map extraPhotos; @Override - public Optional> applyWithException(String chatId, Post post) throws TelegramApiException, URISyntaxException, IOException { + public Optional> applyWithException(String chatId, PhotoGroupPost post) throws TelegramApiException, URISyntaxException, IOException { var pages = post.getPhotoUrlsPages(); var text = post.getText(); var hasSpoiler = post.isHasSpoiler(); @@ -69,7 +70,7 @@ public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) : List.of(); } - private List sendDelayed(String chatId, int replyToMessageId, Post post) throws TelegramApiException { + private List sendDelayed(String chatId, int replyToMessageId, PhotoGroupPost post) throws TelegramApiException { var pages = post.getPhotoUrlsPages(); var hasSpoiler = post.isHasSpoiler(); var messages = new ArrayList(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java index 9a7e506..599341c 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.posts; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.PhotoPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.stereotype.Service; import org.springframework.util.function.ThrowingBiFunction; import org.telegram.telegrambots.meta.api.methods.send.SendDocument; @@ -14,10 +15,10 @@ import java.util.Optional; import java.util.function.Predicate; -@Service("PHOTO") -public class PhotoPostService extends PostService { +@Service(Post.Type.PHOTO) +public class PhotoPostService extends PostService { @Override - public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + public Optional applyWithException(String chatId, PhotoPost post) throws TelegramApiException { try { var sendPhoto = SendPhoto.builder() .chatId(chatId) @@ -31,7 +32,7 @@ public Optional applyWithException(String chatId, Post post) throws Tel } } - private Message retrySendPhoto(String chatId, Post post, TelegramApiRequestException requestException) throws TelegramApiException { + private Message retrySendPhoto(String chatId, PhotoPost post, TelegramApiRequestException requestException) throws TelegramApiException { try { return onException( requestException, @@ -68,7 +69,7 @@ private Message onException( TelegramApiRequestException e, Predicate exceptionPredicate, ThrowingBiFunction telegramApiCall, - Post post + PhotoPost post ) throws TelegramApiException { if (exceptionPredicate.negate().test(e)) { throw e; diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java index 46e1ff9..dde7903 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.posts; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.PollPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.polls.SendPoll; import org.telegram.telegrambots.meta.api.objects.Message; @@ -8,10 +9,10 @@ import java.util.Optional; -@Service("POLL") -public class PollPostService extends PostService { +@Service(Post.Type.POLL) +public class PollPostService extends PostService { @Override - public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + public Optional applyWithException(String chatId, PollPost post) throws TelegramApiException { var sendPoll = SendPoll.builder() .chatId(chatId) .question(post.getText()) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java index 01b42ca..f48dd32 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java @@ -1,7 +1,8 @@ package com.github.yvasyliev.service.telegram.posts; import com.github.yvasyliev.bots.telegram.RedTelBot; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.MediaPost; +import com.github.yvasyliev.model.dto.post.Post; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.function.ThrowingBiFunction; import org.telegram.telegrambots.meta.api.objects.Message; @@ -11,11 +12,11 @@ import java.net.URL; import java.util.Optional; -public abstract class PostService implements ThrowingBiFunction> { +public abstract class PostService implements ThrowingBiFunction> { @Autowired protected RedTelBot redTelBot; - protected Message sendWithInputStream(ThrowingBiFunction telegramApiCall, Post post) throws TelegramApiException { + protected Message sendWithInputStream(ThrowingBiFunction telegramApiCall, MediaPost post) throws TelegramApiException { var mediaUrl = post.getMediaUrl(); try (var inputStream = new URL(mediaUrl).openStream()) { var filename = mediaUrl.substring(mediaUrl.lastIndexOf('/') + 1); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java index 0c3c9b3..2414edf 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java @@ -1,7 +1,8 @@ package com.github.yvasyliev.service.telegram.posts; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.dto.post.TextPost; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; @@ -9,10 +10,10 @@ import java.util.Optional; -@Service("TEXT") -public class TextPostService extends PostService { +@Service(Post.Type.TEXT) +public class TextPostService extends PostService { @Override - public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + public Optional applyWithException(String chatId, TextPost post) throws TelegramApiException { return Optional.ofNullable(redTelBot.execute(new SendMessage(chatId, post.getText()))); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java index dff3c9a..9040047 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.posts; -import com.github.yvasyliev.model.dto.Post; +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.dto.post.VideoPost; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendVideo; import org.telegram.telegrambots.meta.api.objects.InputFile; @@ -9,10 +10,10 @@ import java.util.Optional; -@Service("VIDEO") -public class VideoPostService extends PostService { +@Service(Post.Type.VIDEO) +public class VideoPostService extends PostService { @Override - public Optional applyWithException(String chatId, Post post) throws TelegramApiException { + public Optional applyWithException(String chatId, VideoPost post) throws TelegramApiException { return Optional.ofNullable(sendWithInputStream((inputStream, filename) -> { var sendVideo = SendVideo.builder() .chatId(chatId) From e709209bfc86e2e21222c8d546067deb812648e7 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 20 Oct 2023 10:29:20 +0300 Subject: [PATCH 18/93] removed TelegramNotifierConfig.java --- .../appenders/TelegramBotAppender.java | 14 ++------- .../bots/telegram/notifier/AdminNotifier.java | 8 ++++- .../telegram/notifier/TelegramNotifier.java | 5 ++-- .../config/RedTelBotConfiguration.java | 15 +++++++++- .../config/TelegramNotifierConfig.java | 29 ------------------- 5 files changed, 26 insertions(+), 45 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java diff --git a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java index 51f39bc..64331c5 100644 --- a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java +++ b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java @@ -1,7 +1,6 @@ package com.github.yvasyliev.appenders; import com.github.yvasyliev.bots.telegram.notifier.TelegramNotifier; -import com.github.yvasyliev.config.TelegramNotifierConfig; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Core; import org.apache.logging.log4j.core.Filter; @@ -15,7 +14,6 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory; import org.apache.logging.log4j.core.layout.PatternLayout; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import java.io.IOException; import java.io.PrintWriter; @@ -25,13 +23,11 @@ @Plugin(name = "TelegramBotAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE) public class TelegramBotAppender extends AbstractAppender { private final TelegramNotifier telegramNotifier; - private final int charactersLimit; protected TelegramBotAppender(String name, Filter filter, Layout layout, boolean ignoreExceptions, Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); - var applicationContext = new AnnotationConfigApplicationContext(TelegramNotifierConfig.class); + var applicationContext = new AnnotationConfigApplicationContext("com.github.yvasyliev.bots.telegram.notifier"); this.telegramNotifier = applicationContext.getBean(TelegramNotifier.class); - this.charactersLimit = applicationContext.getBean("charactersLimit", int.class); } @PluginFactory @@ -50,13 +46,9 @@ public void append(LogEvent event) { %s""".formatted(formattedMessage, stackTrace); } - if (formattedMessage.length() > charactersLimit) { - formattedMessage = formattedMessage.substring(0, charactersLimit); - } - try { - telegramNotifier.notify(formattedMessage); - } catch (TelegramApiException e) { + telegramNotifier.applyWithException(formattedMessage); + } catch (Exception e) { e.printStackTrace(System.err); } } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java index 8fdd5e6..617827d 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java @@ -16,12 +16,18 @@ public class AdminNotifier extends AbstractRedTelBot implements TelegramNotifier ```""") private String messageTemplate; + @Value("4096") + private int charactersLimit; + public AdminNotifier(@Value("${BOT_TOKEN}") String botToken) { super(botToken); } @Override - public Message notify(String text) throws TelegramApiException { + public Message applyWithException(String text) throws TelegramApiException { + if (text.length() > charactersLimit) { + text = text.substring(0, charactersLimit); + } SendMessage sendMessage = SendMessage.builder() .chatId(getAdminId()) .text(messageTemplate.formatted(text)) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java index 88b09b1..d22b167 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/TelegramNotifier.java @@ -1,9 +1,8 @@ package com.github.yvasyliev.bots.telegram.notifier; +import org.springframework.util.function.ThrowingFunction; import org.telegram.telegrambots.meta.api.objects.Message; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @FunctionalInterface -public interface TelegramNotifier { - Message notify(String text) throws TelegramApiException; +public interface TelegramNotifier extends ThrowingFunction { } diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java index 7abdf3b..e6528b4 100644 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -24,12 +24,15 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; @Configuration @ComponentScan("com.github.yvasyliev.service") -public class RedTelBotConfiguration extends TelegramNotifierConfig { +public class RedTelBotConfiguration { @Autowired private JsonDeserializer postJsonDeserializer; @@ -111,4 +114,14 @@ public Map longStringMap(@Value("16") int maxSize) { public Map longExternalMessageDataMap(@Value("16") int maxSize) { return synchronizedFixedSizeMap(maxSize); } + + @Bean + public Executor delayedExecutor() { + return CompletableFuture.delayedExecutor(10, TimeUnit.SECONDS, singleThreadExecutor()); + } + + @Bean + public Executor singleThreadExecutor() { + return Executors.newSingleThreadExecutor(); + } } diff --git a/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java b/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java deleted file mode 100644 index 719b47a..0000000 --- a/src/main/java/com/github/yvasyliev/config/TelegramNotifierConfig.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.yvasyliev.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -@Configuration -@ComponentScan("com.github.yvasyliev.bots.telegram.notifier") -public class TelegramNotifierConfig { - @Bean - public Executor delayedExecutor() { - return CompletableFuture.delayedExecutor(10, TimeUnit.SECONDS, singleThreadExecutor()); - } - - @Bean - public Executor singleThreadExecutor() { - return Executors.newSingleThreadExecutor(); - } - - @Bean - public int charactersLimit() { - return 4096; - } -} From 4ccbfc81242ed6e4c3eaa63afa02049f60abbb74 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 20 Oct 2023 10:43:26 +0300 Subject: [PATCH 19/93] replaces hardcoded string --- .../com/github/yvasyliev/appenders/TelegramBotAppender.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java index 64331c5..9a6a912 100644 --- a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java +++ b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java @@ -26,7 +26,7 @@ public class TelegramBotAppender extends AbstractAppender { protected TelegramBotAppender(String name, Filter filter, Layout layout, boolean ignoreExceptions, Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); - var applicationContext = new AnnotationConfigApplicationContext("com.github.yvasyliev.bots.telegram.notifier"); + var applicationContext = new AnnotationConfigApplicationContext(TelegramNotifier.class.getPackageName()); this.telegramNotifier = applicationContext.getBean(TelegramNotifier.class); } From 065026cb1ac4b7295e0c1a0c70c5a9b591025003 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 20 Oct 2023 15:33:35 +0300 Subject: [PATCH 20/93] created AdminCommand.java --- .../yvasyliev/bots/telegram/RedTelBot.java | 6 +----- .../telegram/commands/AddBlockedAuthor.java | 4 ++-- .../telegram/commands/AdminCommand.java | 10 ++++++++++ .../telegram/commands/BlockAuthor.java | 4 ++-- .../service/telegram/commands/Cancel.java | 2 +- .../service/telegram/commands/Command.java | 13 +++++++++++++ .../telegram/commands/ContactAdmin.java | 2 +- .../service/telegram/commands/GetBlocked.java | 4 ++-- .../telegram/commands/PausePublishing.java | 4 ++-- .../telegram/commands/PostSuggested.java | 2 +- .../commands/RemoveBlockedAuthor.java | 4 ++-- .../service/telegram/commands/ReplySent.java | 4 ++-- .../telegram/commands/ResumePublishing.java | 4 ++-- .../service/telegram/commands/Start.java | 19 +++++++++++++++++-- .../service/telegram/commands/Stop.java | 4 ++-- .../telegram/commands/SuggestPost.java | 2 +- .../service/telegram/commands/TextAdmin.java | 2 +- .../telegram/commands/UnblockAuthor.java | 4 ++-- src/main/resources/responses/admin/start.md | 17 +++++++++++++++++ src/main/resources/responses/start.md | 10 +++++++--- 20 files changed, 88 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java create mode 100644 src/main/resources/responses/admin/start.md diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index e70589f..4234063 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -93,7 +93,7 @@ public void onCommandReceived(String command, Message message) { public void onCallbackQueryReceived(CallbackQuery callbackQuery) { var message = callbackQuery.getMessage(); - if (message.isUserMessage() && isFromAdmin(callbackQuery)) { + if (message.isUserMessage() && isAdmin(callbackQuery.getFrom())) { try { var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); @@ -121,10 +121,6 @@ public ExternalMessageData getAwaitingReply(Long userId) { return awaitingReplies.remove(userId); } - public boolean isFromAdmin(CallbackQuery callbackQuery) { - return isAdmin(callbackQuery.getFrom()); - } - public boolean isAdmin(User user) { return user.getId().toString().equals(getAdminId()); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java index f96ab44..49a4cb1 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -12,7 +12,7 @@ import java.net.URISyntaxException; @Service("/addblockedauthor") -public class AddBlockedAuthor extends Command { +public class AddBlockedAuthor extends AdminCommand { @Autowired private UsernameParser usernameParser; @@ -20,7 +20,7 @@ public class AddBlockedAuthor extends Command { private StateManager stateManager; @Override - public void acceptWithException(Message message) throws IOException, TelegramApiException, URISyntaxException { + public void execute(Message message) throws IOException, TelegramApiException, URISyntaxException { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java new file mode 100644 index 0000000..98b5cb0 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java @@ -0,0 +1,10 @@ +package com.github.yvasyliev.service.telegram.commands; + +import org.telegram.telegrambots.meta.api.objects.Message; + +public abstract class AdminCommand extends Command { + @Override + protected boolean hasPermission(Message message) { + return redTelBot.isAdmin(message.getFrom()); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java index ce54f0f..f8f2224 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java @@ -8,9 +8,9 @@ import java.net.URISyntaxException; @Service("/blockauthor") -public class BlockAuthor extends Command { +public class BlockAuthor extends AdminCommand { @Override - public void acceptWithException(Message message) throws URISyntaxException, IOException, TelegramApiException { + public void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { redTelBot.addUserCommand(message.getFrom().getId(), "/addblockedauthor"); reply(message, "responses/blockauthor.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java index 490d8b7..04374f8 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java @@ -10,7 +10,7 @@ @Service("/cancel") public class Cancel extends Command { @Override - public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { redTelBot.removeUserCommand(message.getFrom().getId()); reply(message, "responses/cancel.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java index 9c6b0c0..d05bd9d 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java @@ -19,6 +19,19 @@ public abstract class Command implements ThrowingConsumer { @Autowired protected BotResponseReader responseReader; + @Override + public void acceptWithException(Message message) throws Exception { + if (hasPermission(message)) { + execute(message); + } + } + + abstract void execute(Message message) throws Exception; + + protected boolean hasPermission(Message message) { + return true; + } + protected Message reply(Message to, String template, Object... args) throws URISyntaxException, IOException, TelegramApiException { var sendMessage = SendMessage.builder() .chatId(to.getChatId()) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java index 3d9dac8..876df7b 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java @@ -6,7 +6,7 @@ @Service("/contactadmin") public class ContactAdmin extends Command { @Override - public void acceptWithException(Message message) throws Exception { + public void execute(Message message) throws Exception { redTelBot.addUserCommand(message.getFrom().getId(), "/textadmin"); reply(message, "responses/contactadmin.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java index 5d62876..de82129 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java @@ -8,12 +8,12 @@ import java.util.stream.Collectors; @Service("/getblocked") -public class GetBlocked extends Command { +public class GetBlocked extends AdminCommand { @Autowired private StateManager stateManager; @Override - public void acceptWithException(Message message) throws Exception { + public void execute(Message message) throws Exception { var blockedAuthorTemplate = responseReader.applyWithException("responses/getblocked/blocked_author.md"); var blockedAuthors = stateManager .getBlockedAuthors() diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java index 7e9cfda..49b2cac 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java @@ -11,12 +11,12 @@ import java.net.URISyntaxException; @Service("/pausepublishing") -public class PausePublishing extends Command { +public class PausePublishing extends AdminCommand { @Autowired private PostManager postManager; @Override - public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.pausePublishing(); redTelBot.execute(new SendMessage( message.getChatId().toString(), diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java index 01e4057..37c718b 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java @@ -22,7 +22,7 @@ public class PostSuggested extends Command { private ObjectMapper objectMapper; @Override - public void acceptWithException(Message message) throws TelegramApiException, IOException, URISyntaxException { + public void execute(Message message) throws TelegramApiException, IOException, URISyntaxException { var sourceChatId = message.getChatId().toString(); var sourceMessageId = message.getMessageId(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java index 2f6747e..37c91fd 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -8,7 +8,7 @@ import org.telegram.telegrambots.meta.api.objects.Message; @Service("/removeblockedauthor") -public class RemoveBlockedAuthor extends Command { +public class RemoveBlockedAuthor extends AdminCommand { @Autowired private UsernameParser usernameParser; @@ -17,7 +17,7 @@ public class RemoveBlockedAuthor extends Command { private StateManager stateManager; @Override - public void acceptWithException(Message message) throws Exception { + public void execute(Message message) throws Exception { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java index 49e91aa..6549ee3 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java @@ -11,9 +11,9 @@ import java.net.URISyntaxException; @Service("/replysent") -public class ReplySent extends Command { +public class ReplySent extends AdminCommand { @Override - public void acceptWithException(Message message) throws URISyntaxException, IOException, TelegramApiException { + public void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { if (message.hasText()) { var userId = message.getFrom().getId(); redTelBot.removeUserCommand(userId); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java index aeaed0e..42af016 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java @@ -11,12 +11,12 @@ import java.net.URISyntaxException; @Service("/resumepublishing") -public class ResumePublishing extends Command { +public class ResumePublishing extends AdminCommand { @Autowired private PostManager postManager; @Override - public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.resumePublishing(); redTelBot.execute(new SendMessage( message.getChatId().toString(), diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java index 6810a52..8ad09fe 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java @@ -1,5 +1,7 @@ package com.github.yvasyliev.service.telegram.commands; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -8,9 +10,22 @@ import java.net.URISyntaxException; @Service("/start") +@Qualifier("/help") public class Start extends Command { + @Value("telegram.channel.name") + private String telegramChannelName; + @Override - public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { - reply(message, "responses/start.md"); + public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + if (redTelBot.isAdmin(message.getFrom())) { + reply( + message, + "responses/admin/start.md", + telegramChannelName, + redTelBot.getMe().getFirstName() + ); + } else { + reply(message, "responses/start.md", telegramChannelName); + } } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java index af66e38..8432a8f 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -10,12 +10,12 @@ import java.net.URISyntaxException; @Service("/stop") -public class Stop extends Command { +public class Stop extends AdminCommand { @Autowired private PostManager postManager; @Override - public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.stopPublishing(); redTelBot.stopPolling(); reply(message, "responses/stop.md"); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java index 32a6c7d..4ecc25f 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java @@ -10,7 +10,7 @@ @Service("/suggestpost") public class SuggestPost extends Command { @Override - public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { redTelBot.addUserCommand(message.getFrom().getId(), "/postsuggested"); reply(message, "responses/suggestpost.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java index 9343756..10275e0 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java @@ -21,7 +21,7 @@ public class TextAdmin extends Command { private ObjectMapper objectMapper; @Override - public void acceptWithException(Message message) throws TelegramApiException, IOException, URISyntaxException { + public void execute(Message message) throws TelegramApiException, IOException, URISyntaxException { redTelBot.removeUserCommand(message.getFrom().getId()); var sourceChatId = message.getChatId(); var sourceMessageId = message.getMessageId(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java index 6d1b08d..f28f829 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java @@ -8,9 +8,9 @@ import java.net.URISyntaxException; @Service("/unblockauthor") -public class UnblockAuthor extends Command { +public class UnblockAuthor extends AdminCommand { @Override - public void acceptWithException(Message message) throws TelegramApiException, URISyntaxException, IOException { + public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { redTelBot.addUserCommand(message.getFrom().getId(), "/removeblockedauthor"); reply(message, "responses/unblockauthor.md"); } diff --git a/src/main/resources/responses/admin/start.md b/src/main/resources/responses/admin/start.md new file mode 100644 index 0000000..67fe310 --- /dev/null +++ b/src/main/resources/responses/admin/start.md @@ -0,0 +1,17 @@ +👋 Hello, I'm the manager bot of %s channel! + +🤓 I can duplicate Subreddit posts to Telegram channel. + +Use these command to control me: + +/contactadmin - send message to admin +/help - show available commands +/suggestpost - suggest your post to channel + +*Admin commands* +/blockauthor - block Reddit author +/getblocked - show blocked Reddit authors +/pausepublishing - pause fetching posts from subreddit +/resumepublishing - resume fetching posts from subreddit +/stop - stop %s +/unblockauthor - unblock Reddit author \ No newline at end of file diff --git a/src/main/resources/responses/start.md b/src/main/resources/responses/start.md index c7a5e80..35eaaa5 100644 --- a/src/main/resources/responses/start.md +++ b/src/main/resources/responses/start.md @@ -1,5 +1,9 @@ -👋 Greetings! +👋 Hello, I'm the manager bot of %s channel! -🤓 I can duplicate Subreddit posts to Telegram channel. +🤓 You can use me to suggest your posts or contact channel admin. -Send /help to see available commands. \ No newline at end of file +Use these command to control me: + +/contactadmin - send message to admin +/help - show available commands +/suggestpost - suggest your post to channel \ No newline at end of file From 530db732cd58f64c64083abf382277f844309f6b Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 20 Oct 2023 15:38:20 +0300 Subject: [PATCH 21/93] moved MarkdownV2Escaper.java --- .../telegram/MarkdownV2Escaper.java} | 9 ++++++--- .../service/telegram/commands/AddBlockedAuthor.java | 7 +++++-- .../service/telegram/commands/RemoveBlockedAuthor.java | 7 +++++-- .../yvasyliev/service/telegram/commands/ReplySent.java | 8 ++++++-- 4 files changed, 22 insertions(+), 9 deletions(-) rename src/main/java/com/github/yvasyliev/{utils/MarkdownV2.java => service/telegram/MarkdownV2Escaper.java} (77%) diff --git a/src/main/java/com/github/yvasyliev/utils/MarkdownV2.java b/src/main/java/com/github/yvasyliev/service/telegram/MarkdownV2Escaper.java similarity index 77% rename from src/main/java/com/github/yvasyliev/utils/MarkdownV2.java rename to src/main/java/com/github/yvasyliev/service/telegram/MarkdownV2Escaper.java index 75d9ead..b5567ef 100644 --- a/src/main/java/com/github/yvasyliev/utils/MarkdownV2.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/MarkdownV2Escaper.java @@ -1,7 +1,10 @@ -package com.github.yvasyliev.utils; +package com.github.yvasyliev.service.telegram; -public class MarkdownV2 { - public static String escaped(String text) { +import java.util.function.Function; + +public class MarkdownV2Escaper implements Function { + @Override + public String apply(String text) { return text .replace("_", "\\_") .replace("*", "\\*") diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java index 49a4cb1..4baf3d8 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -2,7 +2,7 @@ import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.factory.UsernameParser; -import com.github.yvasyliev.utils.MarkdownV2; +import com.github.yvasyliev.service.telegram.MarkdownV2Escaper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -19,13 +19,16 @@ public class AddBlockedAuthor extends AdminCommand { @Autowired private StateManager stateManager; + @Autowired + private MarkdownV2Escaper markdownV2Escaper; + @Override public void execute(Message message) throws IOException, TelegramApiException, URISyntaxException { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); stateManager.addBlockedAuthor(username); - username = MarkdownV2.escaped(username); + username = markdownV2Escaper.apply(username); reply(message, "responses/addblockedauthor.md", username, username); } else { reply(message, "responses/usernamenotrecognized.md"); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java index 37c91fd..9f0b88b 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -2,7 +2,7 @@ import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.factory.UsernameParser; -import com.github.yvasyliev.utils.MarkdownV2; +import com.github.yvasyliev.service.telegram.MarkdownV2Escaper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -16,13 +16,16 @@ public class RemoveBlockedAuthor extends AdminCommand { @Autowired private StateManager stateManager; + @Autowired + private MarkdownV2Escaper markdownV2Escaper; + @Override public void execute(Message message) throws Exception { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); stateManager.removeBlockedAuthor(username); - reply(message, "responses/removeblockedauthor.md", MarkdownV2.escaped(username)); + reply(message, "responses/removeblockedauthor.md", markdownV2Escaper.apply(username)); } else { reply(message, "responses/usernamenotrecognized.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java index 6549ee3..4fbc638 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.utils.MarkdownV2; +import com.github.yvasyliev.service.telegram.MarkdownV2Escaper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; @@ -12,6 +13,9 @@ @Service("/replysent") public class ReplySent extends AdminCommand { + @Autowired + private MarkdownV2Escaper markdownV2Escaper; + @Override public void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { if (message.hasText()) { @@ -21,7 +25,7 @@ public void execute(Message message) throws URISyntaxException, IOException, Tel var replyMessage = SendMessage.builder() .chatId(awaitingReply.fromChatId()) .replyToMessageId(awaitingReply.messageId()) - .text(responseReader.applyWithException("responses/replysent/reply_template.md").formatted(MarkdownV2.escaped(message.getText()))) + .text(responseReader.applyWithException("responses/replysent/reply_template.md").formatted(markdownV2Escaper.apply(message.getText()))) .parseMode(ParseMode.MARKDOWNV2) .build(); redTelBot.execute(replyMessage); From b97e7ce0dd71018ce4a0ae36d87a2fd3ee16fff1 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 20 Oct 2023 15:47:59 +0300 Subject: [PATCH 22/93] moved @SuppressWarnings("unchecked") --- .../com/github/yvasyliev/service/telegram/PostManager.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 1d7f0dd..60b5ce1 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -74,14 +74,13 @@ public void publishPosts(List posts) { posts.forEach(this::publishPost); } - @SuppressWarnings("unchecked") public void publishPost(T post) { var chatId = post.isApproved() ? redTelBot.getChannelId() : redTelBot.getAdminId(); var created = post.getCreated(); var postServiceName = post.getType(); if (context.containsBean(postServiceName)) { - var postService = (PostService) context.getBean(postServiceName); + @SuppressWarnings("unchecked") var postService = (PostService) context.getBean(postServiceName); try { var sentMessage = postService.applyWithException(chatId, post); if (sentMessage.isPresent() && !post.isApproved()) { From 52c9059f9ed945f324afa4188e54d32944e3958a Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 20 Oct 2023 16:03:06 +0300 Subject: [PATCH 23/93] added logging --- src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java | 1 + .../java/com/github/yvasyliev/service/telegram/PostManager.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index 4234063..6e97a00 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -49,6 +49,7 @@ public RedTelBot(@Value("${BOT_TOKEN}") String botToken) { public void startPolling() throws TelegramApiException { botSession = context.getBean(TelegramBotsApi.class).registerBot(this); + LOGGER.info("Started polling."); } public void stopPolling() { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 60b5ce1..fa29550 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -68,6 +68,7 @@ public void schedulePosting() { } } }, 0, 1, TimeUnit.MINUTES); + LOGGER.info("Started posting."); } public void publishPosts(List posts) { From 750be69545dbd180ba0fae952cd08c557f2727eb Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 20 Oct 2023 16:15:58 +0300 Subject: [PATCH 24/93] Renamed SubredditPostSupplier --- .../{RedditPostService.java => SubredditPostSupplier.java} | 7 ++++--- .../com/github/yvasyliev/service/telegram/PostManager.java | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) rename src/main/java/com/github/yvasyliev/service/reddit/{RedditPostService.java => SubredditPostSupplier.java} (93%) diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java similarity index 93% rename from src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java rename to src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java index a0134b2..3c4dcc5 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditPostService.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java @@ -21,8 +21,8 @@ import java.util.stream.StreamSupport; @Service -public class RedditPostService { - private static final Logger LOGGER = LoggerFactory.getLogger(RedditPostService.class); +public class SubredditPostSupplier implements ThrowingSupplier> { + private static final Logger LOGGER = LoggerFactory.getLogger(SubredditPostSupplier.class); @Autowired private ThrowingSupplier subredditNewSupplier; @@ -36,7 +36,8 @@ public class RedditPostService { @Autowired private ObjectMapper objectMapper; - public List findNewPosts() throws Exception { + @Override + public List getWithException() throws Exception { var subredditPosts = subredditNewSupplier.getWithException(); var children = subredditPosts .get("data") diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index fa29550..1544e50 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -5,7 +5,7 @@ import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.model.dto.RedditPostDecisionData; import com.github.yvasyliev.model.dto.post.Post; -import com.github.yvasyliev.service.reddit.RedditPostService; +import com.github.yvasyliev.service.reddit.SubredditPostSupplier; import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.posts.PhotoGroupPostService; import com.github.yvasyliev.service.telegram.posts.PostService; @@ -35,7 +35,7 @@ public class PostManager { private ScheduledExecutorService executorService; @Autowired - private RedditPostService redditPostService; + private SubredditPostSupplier subredditPostSupplier; @Autowired private RedTelBot redTelBot; @@ -61,7 +61,7 @@ public void schedulePosting() { executorService.scheduleWithFixedDelay(() -> { if (publishing.get()) { try { - var newPosts = redditPostService.findNewPosts(); + var newPosts = subredditPostSupplier.getWithException(); publishPosts(newPosts); } catch (Exception e) { LOGGER.error("Failed to find new posts.", e); From a0de34f437689bf580f320af39b6a3a86b87ed0a Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 23 Oct 2023 15:08:36 +0300 Subject: [PATCH 25/93] minor bugfix --- .../yvasyliev/service/deserializers/PostDeserializer.java | 4 ++-- .../yvasyliev/service/telegram/MarkdownV2Escaper.java | 3 +++ .../github/yvasyliev/service/telegram/commands/Start.java | 2 +- .../service/telegram/readers/BotResponseReader.java | 8 ++------ 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index d4832de..fb7abfe 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -1,5 +1,6 @@ package com.github.yvasyliev.service.deserializers; +import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; @@ -7,7 +8,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.state.StateManager; -import org.hibernate.MappingException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; @@ -48,7 +48,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ return optionalPost.get(); } } catch (Exception e) { - throw new MappingException(e); + throw new JsonParseException(jsonParser, e.getMessage(), e); } } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/MarkdownV2Escaper.java b/src/main/java/com/github/yvasyliev/service/telegram/MarkdownV2Escaper.java index b5567ef..8ae436f 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/MarkdownV2Escaper.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/MarkdownV2Escaper.java @@ -1,7 +1,10 @@ package com.github.yvasyliev.service.telegram; +import org.springframework.stereotype.Component; + import java.util.function.Function; +@Component public class MarkdownV2Escaper implements Function { @Override public String apply(String text) { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java index 8ad09fe..0d10aea 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java @@ -12,7 +12,7 @@ @Service("/start") @Qualifier("/help") public class Start extends Command { - @Value("telegram.channel.name") + @Value("${telegram.channel.name}") private String telegramChannelName; @Override diff --git a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java index a73a5f3..d844613 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java @@ -1,22 +1,18 @@ package com.github.yvasyliev.service.telegram.readers; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.util.function.ThrowingFunction; import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.Objects; @Service public class BotResponseReader implements ThrowingFunction { @Override public String applyWithException(String file) throws URISyntaxException, IOException { - return String.join( - "\n", - Files.readAllLines(Paths.get(Objects.requireNonNull(BotResponseReader.class.getClassLoader().getResource(file)).toURI())) - ) + return Files.readString(new ClassPathResource(file).getFile().toPath()) .replace(".", "\\.") .replace("!", "\\!") .replace("-", "\\-"); From 34b8b714e8571f4aded99338900296c6dfabde1a Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 28 Oct 2023 17:16:58 +0300 Subject: [PATCH 26/93] Fixed post.setApproved. Minor refactoring --- .../deserializers/PostDeserializer.java | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index fb7abfe..63c5b68 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -27,38 +27,36 @@ public class PostDeserializer extends JsonDeserializer { @Override public Post deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { - var node = jsonParser.getCodec().readTree(jsonParser); - if (node instanceof JsonNode jsonPost) { - var author = jsonPost.get("author").textValue(); - var created = jsonPost.get("created").intValue(); - var postUrl = jsonPost.get("url_overridden_by_dest").textValue(); - var blockedAuthors = context.getBean(StateManager.class).getBlockedAuthors(); - - jsonPost = extractRootPost(jsonPost); - for (var postMapper : postMappers) { - try { - var optionalPost = postMapper.applyWithException(jsonPost).map(post -> { - post.setAuthor(author); - post.setCreated(created); - post.setApproved(blockedAuthors.contains(author)); - post.setPostUrl(postUrl); - return post; - }); - if (optionalPost.isPresent()) { - return optionalPost.get(); - } - } catch (Exception e) { - throw new JsonParseException(jsonParser, e.getMessage(), e); + var jsonPost = jsonParser.readValueAs(JsonNode.class); + var author = jsonPost.get("author").textValue(); + var created = jsonPost.get("created").intValue(); + var postUrl = jsonPost.get("url_overridden_by_dest").textValue(); + var blockedAuthors = context.getBean(StateManager.class).getBlockedAuthors(); + + jsonPost = extractRootPost(jsonPost); + for (var postMapper : postMappers) { + try { + var optionalPost = postMapper.applyWithException(jsonPost).map(post -> { + post.setAuthor(author); + post.setCreated(created); + post.setApproved(!blockedAuthors.contains(author)); + post.setPostUrl(postUrl); + return post; + }); + if (optionalPost.isPresent()) { + return optionalPost.get(); } + } catch (Exception e) { + throw new JsonParseException(jsonParser, e.getMessage(), e); } } - throw new JsonMappingException(jsonParser, "Failed to parse post: " + node); + throw new JsonMappingException(jsonParser, "Failed to parse post: " + jsonPost); } private JsonNode extractRootPost(JsonNode jsonPost) { return jsonPost.has("crosspost_parent_list") - ? extractRootPost(jsonPost.get("crosspost_parent_list").get(0)) + ? extractRootPost(jsonPost.at("/crosspost_parent_list/0")) : jsonPost; } } From 0582fb0a8a6cfaf82a413230171a207c0f97b05c Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 28 Oct 2023 19:44:42 +0300 Subject: [PATCH 27/93] decomposition of PostManager#publishPost --- .../service/telegram/PostManager.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 1544e50..c15300f 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -76,31 +76,32 @@ public void publishPosts(List posts) { } public void publishPost(T post) { - var chatId = post.isApproved() ? redTelBot.getChannelId() : redTelBot.getAdminId(); - var created = post.getCreated(); - var postServiceName = post.getType(); - - if (context.containsBean(postServiceName)) { - @SuppressWarnings("unchecked") var postService = (PostService) context.getBean(postServiceName); + if (context.containsBean(post.getType())) { try { - var sentMessage = postService.applyWithException(chatId, post); - if (sentMessage.isPresent() && !post.isApproved()) { - askApprove(chatId, created); - postCandidates.put(created, post); - } + publishPost(post, post.getType()); } catch (TelegramApiException | JsonProcessingException e) { LOGGER.error("Failed to ask approve.", e); } catch (Exception e) { LOGGER.error("Failed to send post: {}", post, e); } try { - stateManager.setLastCreated(created); + stateManager.setLastCreated(post.getCreated()); } catch (IOException e) { - LOGGER.error("Failed to save last_created: {}", created, e); + LOGGER.error("Failed to save last_created: {}", post.getCreated(), e); } } } + public void publishPost(T post, String postServiceName) throws Exception { + @SuppressWarnings("unchecked") var postService = (PostService) context.getBean(postServiceName); + var chatId = post.isApproved() ? redTelBot.getChannelId() : redTelBot.getAdminId(); + var sentMessage = postService.applyWithException(chatId, post); + if (sentMessage.isPresent() && !post.isApproved()) { + askApprove(chatId, post.getCreated()); + postCandidates.put(post.getCreated(), post); + } + } + public void pausePublishing() { publishing.set(false); } From 926c87c2e0eaf84114d812c8f9051c2da2c2b1dd Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 28 Oct 2023 22:41:53 +0300 Subject: [PATCH 28/93] code cleanup --- .../service/reddit/SubredditNewSupplier.java | 728 ------------------ 1 file changed, 728 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java index f21c72a..dd1cc63 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java @@ -41,734 +41,6 @@ public JsonNode getWithException() throws Exception { .GET() .build(); var jsonBody = httpClient.send(request, HttpResponse.BodyHandlers.ofString()).body(); - jsonBody = JSON; return objectMapper.readTree(jsonBody); } - - private static final String JSON = """ - { - "kind": "Listing", - "data": { - "after": null, - "dist": 1, - "modhash": null, - "geo_filter": "", - "children": [ - { - "kind": "t3", - "data": { - "approved_at_utc": null, - "subreddit": "AnadeArmas", - "selftext": "", - "author_fullname": "t2_dc45hj39d", - "saved": false, - "mod_reason_title": null, - "gilded": 0, - "clicked": false, - "is_gallery": true, - "title": "Ana de Armas' nipples naked", - "link_flair_richtext": [], - "subreddit_name_prefixed": "r/AnadeArmas", - "hidden": false, - "pwls": null, - "link_flair_css_class": null, - "downs": 0, - "thumbnail_height": 105, - "top_awarded_type": null, - "hide_score": false, - "media_metadata": { - "rlf1w8ksu0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=e4e8f63362db1daf754a23470b4a36290e1075d4" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=108&crop=smart&auto=webp&s=0daed3fdb8e23dcfde2344168c9814c3ac40ec9d" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=216&crop=smart&auto=webp&s=43093964c3095afbb6d5a49853f97708f2ab7d43" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=320&crop=smart&auto=webp&s=6d8cbab01beec50ee082a5dd2a662ce1c49a49b4" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=640&crop=smart&auto=webp&s=b54ee17d97d3abf8ffa375749ef980a24bee12b5" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=960&crop=smart&auto=webp&s=d04a7cf41ce7e77b18d1d6517102d487844454a1" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=1080&crop=smart&auto=webp&s=c35da9b6c08aac33dc603b33bae8252817d2afe1" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/rlf1w8ksu0ub1.png?width=1440&format=png&auto=webp&s=19a3b7a7535ce81a170e364e1f33c4bf13143f71" - }, - "id": "rlf1w8ksu0ub1" - }, - "lj94ghusu0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=98b964fd91b282432558ee6fc3e46557f317f5b8" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=108&crop=smart&auto=webp&s=30aad919c222c397ffbb6765fe856b4f35076922" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=216&crop=smart&auto=webp&s=517bf6f7a46fbe958524f4a28414c4e5dac98da0" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=320&crop=smart&auto=webp&s=1663fe649ce81aa2b4052a006f506e05b474767c" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=640&crop=smart&auto=webp&s=f772b9efbbdc8630cfe5890df03fc32a478bf81d" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=960&crop=smart&auto=webp&s=f2525918684e10d83575e63116ff4a29735ce359" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=1080&crop=smart&auto=webp&s=71844377adc4a521a99b5bb2f3830e99563ecfa6" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/lj94ghusu0ub1.png?width=1440&format=png&auto=webp&s=284d98c12aec5b2e09bbe98c2e21b1f5b5a0ba2c" - }, - "id": "lj94ghusu0ub1" - }, - "5mue509su0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=392fb4ad3c1d5cbe46780b600e84ccd6228239b0" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=108&crop=smart&auto=webp&s=976e32fbf1830c5f94e770f09ba1eb03196e5c37" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=216&crop=smart&auto=webp&s=f58f046a9815bbb7a976f3ff7e531b66a3b3a5ae" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=320&crop=smart&auto=webp&s=e39ff29393ca8d57aaba44782eb9ef1ceee481f2" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=640&crop=smart&auto=webp&s=dd8d7fcc4e34b35e869a845c4d09dc12bc76632f" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=960&crop=smart&auto=webp&s=21903a3af900ed62a43bc60473ebc25a1a604330" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=1080&crop=smart&auto=webp&s=d5836b2afadae4f0efc479072dd4d184e42cb430" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/5mue509su0ub1.png?width=1440&format=png&auto=webp&s=aae5fe197a57f100338d2268539c0001d9f35a9b" - }, - "id": "5mue509su0ub1" - }, - "rmn0ts2ru0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=0203de21750785d32ff4dc3398ba8a41b1dda56f" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=108&crop=smart&auto=webp&s=bc2ba87a1a4f10c32e82a215fd636de5d8d2d256" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=216&crop=smart&auto=webp&s=88d2e7186aef9401b989f99806daa9032e385cb4" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=320&crop=smart&auto=webp&s=eb12a25fb5cb5b1f58f4554c86b311b826fb031b" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=640&crop=smart&auto=webp&s=7046535b9179512f34e95350012cb8ae914dae75" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=960&crop=smart&auto=webp&s=6389b3e7204c67f20bb66207e99f7eb05e1732c9" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=1080&crop=smart&auto=webp&s=d1f35823e465fd6c525b8f88a2c22ee0b240a0ac" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/rmn0ts2ru0ub1.png?width=1440&format=png&auto=webp&s=9205418acd19fd114800e50fa0f8542d97356a0a" - }, - "id": "rmn0ts2ru0ub1" - }, - "jdgn5clru0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=448f1083b7c3a0d700a1ead4dfef7034dede6c20" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=108&crop=smart&auto=webp&s=eb8e434ba2e9a1cc596d00523e8e7fe832183b3e" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=216&crop=smart&auto=webp&s=8b196659120106bf5d3fb3af3d4f45adb7c249fd" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=320&crop=smart&auto=webp&s=dcf652694086a682e10860eb8b92e69732399906" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=640&crop=smart&auto=webp&s=48850e17c28550ab7a26901b80837e9cf6eee751" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=960&crop=smart&auto=webp&s=50bc2d24fa53ef934ada659ed4adb78415f4a260" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=1080&crop=smart&auto=webp&s=7cf133c4cc6774e9fa1e9dddf17dbcdd03784d76" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/jdgn5clru0ub1.png?width=1440&format=png&auto=webp&s=fa19caad13dbec82252d6c880c9ce325f58764be" - }, - "id": "jdgn5clru0ub1" - }, - "m04ou2bou0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=4740604f027fb8a3a779965686ecf0aacad8756c" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=108&crop=smart&auto=webp&s=8128c5291672b06c394a15d81b49e62a1619fa4f" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=216&crop=smart&auto=webp&s=0dd62a75dd2b7f61961f3a73e331bdb8cb16bb18" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=320&crop=smart&auto=webp&s=64cc56043eb69a4d8a4447aeee1e972ff65b33df" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=640&crop=smart&auto=webp&s=75a9fce9053b25e8c09199227339a20e7812bbe8" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=960&crop=smart&auto=webp&s=35871fed06e528217fe1caab5dd9dfd3638876c5" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=1080&crop=smart&auto=webp&s=407909eb0b2651ec17e6f8c244613ec91c0cb805" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/m04ou2bou0ub1.png?width=1440&format=png&auto=webp&s=48484adb5dfb4daaab7cffe5b62f7741200fc633" - }, - "id": "m04ou2bou0ub1" - }, - "44kiy7wru0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=82acd8e92a02b90cd46d6cabbd74c66c375e4f68" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=108&crop=smart&auto=webp&s=d4e1fdf18733357cd0183146e2dd67f7ce949279" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=216&crop=smart&auto=webp&s=d6103aeb56d1a0e422c6ea394abbbc6cbff178c4" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=320&crop=smart&auto=webp&s=52d43a5227df576b5e733d043e4c211bc4c954cf" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=640&crop=smart&auto=webp&s=37d9c75de9b6adb36fc647923b90bfee70743c93" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=960&crop=smart&auto=webp&s=a6ccba4b834d7440c55bd4893435239b97a5f2f7" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=1080&crop=smart&auto=webp&s=86b90f61ec3c3fd52894522193ad60448276903c" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/44kiy7wru0ub1.png?width=1440&format=png&auto=webp&s=46f1ec2fd87af7ab28c7d81b6d0adf0e0bb54614" - }, - "id": "44kiy7wru0ub1" - }, - "n1v7f14pu0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=fdb5da264933c5c25b92a71c334af6074127d7c2" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=108&crop=smart&auto=webp&s=5661c4f41c554164230ee40980d4d6b614d7390b" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=216&crop=smart&auto=webp&s=6dc88d0b06bc0827bb4b52a6125bdd897f32729e" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=320&crop=smart&auto=webp&s=dbae5a8add82f9ee0c452d29eb9eecd6243ac461" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=640&crop=smart&auto=webp&s=918cc66291dfaa9726e7320c544df73069a60410" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=960&crop=smart&auto=webp&s=61ac7d7d526fef0878ad74d16a34d6fe5e355b95" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=1080&crop=smart&auto=webp&s=28b9d27eba15e002c5e1acb4103bd6ba2276ae8a" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/n1v7f14pu0ub1.png?width=1440&format=png&auto=webp&s=f0f9cd6f9fef50f284829e63a3cb30903da6e7fb" - }, - "id": "n1v7f14pu0ub1" - }, - "n8uw36sou0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=5977aa08b899b5b2a0982d0c1157f2eb657b3928" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=108&crop=smart&auto=webp&s=3c8948389d738d154ec126a5d4817acf46d64e93" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=216&crop=smart&auto=webp&s=6af812166344d0d192a8db13a06b40b9a0994994" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=320&crop=smart&auto=webp&s=4c468690cb779ca2ed910ab86ddac5517cf53efc" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=640&crop=smart&auto=webp&s=38c7a3b75978e53285c55b3f3360cffb17cf8364" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=960&crop=smart&auto=webp&s=b9f5d89391267b6bd13689d68a1db7d666841661" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=1080&crop=smart&auto=webp&s=dfc8b56055853a6e650d65380301f08545c3c169" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/n8uw36sou0ub1.png?width=1440&format=png&auto=webp&s=f21d8a145cb835de24cd32ca5c54935348b37e06" - }, - "id": "n8uw36sou0ub1" - }, - "bcssq7dru0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=aca3e9b5c191caff919a3a3db85d74d7c73df74b" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=108&crop=smart&auto=webp&s=01d7292526d1c60e8c7cd69a938fd47fe7d5d315" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=216&crop=smart&auto=webp&s=befa5578b81dacb5699f7996b1ab1c8bde2ab9ca" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=320&crop=smart&auto=webp&s=1d9c06d6f3d93f68e10e97e721b6819a7ba8cc82" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=640&crop=smart&auto=webp&s=8129da3b70afdfe7a606c0b2b66bb7c4c809bc13" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=960&crop=smart&auto=webp&s=b567d6968c06ffacecf5e284a824fbc53758f1a7" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=1080&crop=smart&auto=webp&s=addd261828aa63c726d14372b05f5754d92dc619" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/bcssq7dru0ub1.png?width=1440&format=png&auto=webp&s=8a1e28af308d63da008cae880962975f4d431e57" - }, - "id": "bcssq7dru0ub1" - }, - "sztu094tu0ub1": { - "status": "valid", - "e": "Image", - "m": "image/png", - "o": [ - { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=1080&blur=40&format=pjpg&auto=webp&s=7dbaf31087052132201b97c304cbd4c009dd7a09" - } - ], - "p": [ - { - "y": 81, - "x": 108, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=108&crop=smart&auto=webp&s=734620872dc28024e6012ac4bf97995f7e508f67" - }, - { - "y": 162, - "x": 216, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=216&crop=smart&auto=webp&s=b8c0b25188bf186c0da25e2b4afc9245276c85e8" - }, - { - "y": 240, - "x": 320, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=320&crop=smart&auto=webp&s=6ffb7cd3bc9f2c60f2cf96d1c5a284e9ebe788e4" - }, - { - "y": 480, - "x": 640, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=640&crop=smart&auto=webp&s=96a52e59880a7a97b1f497bb6be14976b9cc0548" - }, - { - "y": 720, - "x": 960, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=960&crop=smart&auto=webp&s=d5da6a28722c1c976c101bd31adcac34a8306457" - }, - { - "y": 810, - "x": 1080, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=1080&crop=smart&auto=webp&s=0bc9563b0ee092277ce109f3156d98d38c8d6c85" - } - ], - "s": { - "y": 1080, - "x": 1440, - "u": "https://preview.redd.it/sztu094tu0ub1.png?width=1440&format=png&auto=webp&s=2ee23d79d6fdcc92979fd2d20071c430446c82c3" - }, - "id": "sztu094tu0ub1" - } - }, - "name": "t3_1776p0t", - "quarantine": false, - "link_flair_text_color": "dark", - "upvote_ratio": 0.99, - "author_flair_background_color": null, - "ups": 1222, - "domain": "reddit.com", - "media_embed": {}, - "thumbnail_width": 140, - "author_flair_template_id": null, - "is_original_content": false, - "user_reports": [], - "secure_media": null, - "is_reddit_media_domain": false, - "is_meta": false, - "category": null, - "secure_media_embed": {}, - "gallery_data": { - "items": [ - { - "media_id": "m04ou2bou0ub1", - "id": 342084335 - }, - { - "media_id": "n1v7f14pu0ub1", - "id": 342084336 - }, - { - "media_id": "n8uw36sou0ub1", - "id": 342084337 - }, - { - "media_id": "rmn0ts2ru0ub1", - "id": 342084338 - }, - { - "media_id": "bcssq7dru0ub1", - "id": 342084339 - }, - { - "media_id": "jdgn5clru0ub1", - "id": 342084340 - }, - { - "media_id": "44kiy7wru0ub1", - "id": 342084341 - }, - { - "media_id": "5mue509su0ub1", - "id": 342084342 - }, - { - "media_id": "rlf1w8ksu0ub1", - "id": 342084343 - }, - { - "media_id": "lj94ghusu0ub1", - "id": 342084344 - }, - { - "media_id": "sztu094tu0ub1", - "id": 342084345 - } - ] - }, - "link_flair_text": null, - "can_mod_post": false, - "score": 1222, - "approved_by": null, - "is_created_from_ads_ui": false, - "author_premium": false, - "thumbnail": "nsfw", - "edited": false, - "author_flair_css_class": null, - "author_flair_richtext": [], - "gildings": {}, - "content_categories": null, - "is_self": false, - "subreddit_type": "public", - "created": 1697225506.0, - "link_flair_type": "text", - "wls": null, - "removed_by_category": null, - "banned_by": null, - "author_flair_type": "text", - "total_awards_received": 0, - "allow_live_comments": false, - "selftext_html": null, - "likes": null, - "suggested_sort": null, - "banned_at_utc": null, - "url_overridden_by_dest": "https://www.reddit.com/gallery/1776p0t", - "view_count": null, - "archived": false, - "no_follow": false, - "is_crosspostable": true, - "pinned": false, - "over_18": true, - "all_awardings": [], - "awarders": [], - "media_only": false, - "can_gild": false, - "spoiler": false, - "locked": false, - "author_flair_text": null, - "treatment_tags": [], - "visited": false, - "removed_by": null, - "mod_note": null, - "distinguished": null, - "subreddit_id": "t5_3a5ba", - "author_is_blocked": false, - "mod_reason_by": null, - "num_reports": null, - "removal_reason": null, - "link_flair_background_color": "", - "id": "1776p0t", - "is_robot_indexable": true, - "report_reasons": null, - "author": "World_Explorer949", - "discussion_type": null, - "num_comments": 12, - "send_replies": true, - "whitelist_status": null, - "contest_mode": false, - "mod_reports": [], - "author_patreon_flair": false, - "author_flair_text_color": null, - "permalink": "/r/AnadeArmas/comments/1776p0t/ana_de_armas_nipples_naked/", - "parent_whitelist_status": null, - "stickied": false, - "url": "https://www.reddit.com/gallery/1776p0t", - "subreddit_subscribers": 199496, - "created_utc": 1697225506.0, - "num_crossposts": 1, - "media": null, - "is_video": false - } - } - ], - "before": null - } - }"""; } From c1a85a98c3028138a8f3371a6decd24f3c484e41 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 28 Oct 2023 22:58:53 +0300 Subject: [PATCH 29/93] url_overridden_by_dest null check --- .../yvasyliev/service/deserializers/PostDeserializer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index 63c5b68..50a39bd 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -30,7 +30,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var jsonPost = jsonParser.readValueAs(JsonNode.class); var author = jsonPost.get("author").textValue(); var created = jsonPost.get("created").intValue(); - var postUrl = jsonPost.get("url_overridden_by_dest").textValue(); + var postUrl = jsonPost.has("url_overridden_by_dest") ? jsonPost.get("url_overridden_by_dest").textValue() : jsonPost.get("url").textValue(); var blockedAuthors = context.getBean(StateManager.class).getBlockedAuthors(); jsonPost = extractRootPost(jsonPost); From 3e71e5cce8c04a3879659264dd089c586499c336 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 28 Oct 2023 23:00:46 +0300 Subject: [PATCH 30/93] added test cases --- pom.xml | 12 + .../yvasyliev/tc/AbstractRedditPostTest.java | 32 + .../yvasyliev/tc/RedditGifPostTest.java | 51 ++ .../tc/RedditPhotoGroupPostTest.java | 79 +++ .../yvasyliev/tc/RedditPhotoPostTest.java | 51 ++ .../yvasyliev/tc/RedditPollPostTest.java | 51 ++ .../yvasyliev/tc/RedditTextPostTest.java | 47 ++ .../yvasyliev/tc/RedditVideoPostTest.java | 51 ++ src/test/resources/json/GifPost.json | 220 ++++++ src/test/resources/json/PhotoGroupPost.json | 654 ++++++++++++++++++ src/test/resources/json/PhotoPost.json | 177 +++++ src/test/resources/json/PollPost.json | 145 ++++ src/test/resources/json/TextPost.json | 177 +++++ src/test/resources/json/VideoPost.json | 185 +++++ 14 files changed, 1932 insertions(+) create mode 100644 src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java create mode 100644 src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java create mode 100644 src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java create mode 100644 src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java create mode 100644 src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java create mode 100644 src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java create mode 100644 src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java create mode 100644 src/test/resources/json/GifPost.json create mode 100644 src/test/resources/json/PhotoGroupPost.json create mode 100644 src/test/resources/json/PhotoPost.json create mode 100644 src/test/resources/json/PollPost.json create mode 100644 src/test/resources/json/TextPost.json create mode 100644 src/test/resources/json/VideoPost.json diff --git a/pom.xml b/pom.xml index 152ec30..e828b39 100644 --- a/pom.xml +++ b/pom.xml @@ -115,5 +115,17 @@ log4j-core 2.20.0 + + org.junit.jupiter + junit-jupiter-engine + 5.10.0 + test + + + org.springframework + spring-test + 6.0.13 + test + diff --git a/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java new file mode 100644 index 0000000..6b290b5 --- /dev/null +++ b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java @@ -0,0 +1,32 @@ +package com.github.yvasyliev.tc; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.yvasyliev.config.RedTelBotConfiguration; +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.service.state.StateManager; +import com.github.yvasyliev.service.telegram.PostManager; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.io.IOException; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = RedTelBotConfiguration.class) +abstract class AbstractRedditPostTest { + @Autowired + ObjectMapper objectMapper; + + @Autowired + StateManager stateManager; + + @Autowired + PostManager postManager; + + Post parsePost(String path) throws IOException { + var jsonNode = objectMapper.readTree(new ClassPathResource(path).getURL()); + return objectMapper.treeToValue(jsonNode.at("/data/children/0/data"), Post.class); + } +} diff --git a/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java new file mode 100644 index 0000000..2041c5b --- /dev/null +++ b/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java @@ -0,0 +1,51 @@ +package com.github.yvasyliev.tc; + +import com.github.yvasyliev.model.dto.post.GifPost; +import com.github.yvasyliev.model.dto.post.Post; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class RedditGifPostTest extends AbstractRedditPostTest { + @Test + void postApproved() { + assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(gifPost().getAuthor())); + + var gifPost = gifPost(); + assertTrue(gifPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(gifPost, gifPost.getType())); + } + + @Test + void postUnapproved() { + assertDoesNotThrow(() -> stateManager.addBlockedAuthor(gifPost().getAuthor())); + + var unapprovedGifPost = gifPost(); + assertFalse(unapprovedGifPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(unapprovedGifPost, unapprovedGifPost.getType())); + + var post = postManager.rejectPostCandidate(unapprovedGifPost.getCreated()); + var gifPost = assertInstanceOf(GifPost.class, post); + gifPost.setApproved(true); + assertDoesNotThrow(() -> postManager.publishPost(gifPost, gifPost.getType())); + } + + Post gifPost() { + var post = assertDoesNotThrow(() -> parsePost("json/GifPost.json")); + assertEquals(Post.Type.GIF, post.getType()); + assertEquals(1665430031, post.getCreated()); + assertEquals("jeh366", post.getAuthor()); + assertEquals("https://i.redd.it/f3wlnnpv41t91.gif", post.getPostUrl()); + assertNotNull(post.getText()); + assertFalse(post.getText().isBlank()); + var photoPost = assertInstanceOf(GifPost.class, post); + assertFalse(photoPost.isHasSpoiler()); + assertEquals("https://preview.redd.it/f3wlnnpv41t91.gif?format=mp4&s=5a024f969808538ff3ad387573cb14328e882080", photoPost.getMediaUrl()); + return photoPost; + } +} diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java new file mode 100644 index 0000000..55975e7 --- /dev/null +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java @@ -0,0 +1,79 @@ +package com.github.yvasyliev.tc; + +import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.model.dto.post.PhotoGroupPost; +import com.github.yvasyliev.model.dto.post.Post; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.springframework.beans.factory.annotation.Autowired; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; + +import java.util.concurrent.TimeUnit; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class RedditPhotoGroupPostTest extends AbstractRedditPostTest { + @Autowired + RedTelBot redTelBot; + + @BeforeAll + void startBot() throws TelegramApiException { + redTelBot.startPolling(); + } + + @BeforeEach + void waitABit() throws InterruptedException { + TimeUnit.SECONDS.sleep(10); + } + + @AfterAll + void stopBot() { + redTelBot.stopPolling(); + } + + @Test + void postApproved() { + assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(photoGroupPost().getAuthor())); + Post photoGroupPost = photoGroupPost(); + assertTrue(photoGroupPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(photoGroupPost, photoGroupPost.getType())); + } + + @Test + void postUnapproved() { + assertDoesNotThrow(() -> stateManager.addBlockedAuthor(photoGroupPost().getAuthor())); + + Post unapprovedPhotoGroupPost = photoGroupPost(); + assertFalse(unapprovedPhotoGroupPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(unapprovedPhotoGroupPost, unapprovedPhotoGroupPost.getType())); + + var post = postManager.rejectPostCandidate(unapprovedPhotoGroupPost.getCreated()); + var photoGroupPost = assertInstanceOf(PhotoGroupPost.class, post); + photoGroupPost.setApproved(true); + assertDoesNotThrow(() -> postManager.publishPost(photoGroupPost, photoGroupPost.getType())); + } + + Post photoGroupPost() { + var post = assertDoesNotThrow(() -> parsePost("json/PhotoGroupPost.json")); + assertEquals(Post.Type.PHOTO_GROUP, post.getType()); + assertEquals(1698473734, post.getCreated()); + assertEquals("nevara19", post.getAuthor()); + assertEquals("https://www.reddit.com/gallery/17i7j5d", post.getPostUrl()); + assertNotNull(post.getText()); + assertFalse(post.getText().isBlank()); + var photoGroupPost = assertInstanceOf(PhotoGroupPost.class, post); + assertFalse(photoGroupPost.isHasSpoiler()); + var pages = photoGroupPost.getPhotoUrlsPages(); + assertNotNull(pages); + return photoGroupPost; + } +} diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java new file mode 100644 index 0000000..ef11917 --- /dev/null +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java @@ -0,0 +1,51 @@ +package com.github.yvasyliev.tc; + +import com.github.yvasyliev.model.dto.post.PhotoPost; +import com.github.yvasyliev.model.dto.post.Post; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class RedditPhotoPostTest extends AbstractRedditPostTest { + @Test + void postApproved() { + assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(photoPost().getAuthor())); + + var photoPost = photoPost(); + assertTrue(photoPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(photoPost, photoPost.getType())); + } + + @Test + void postUnapproved() { + assertDoesNotThrow(() -> stateManager.addBlockedAuthor(photoPost().getAuthor())); + + var unapprovedPhotoPost = photoPost(); + assertFalse(unapprovedPhotoPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(unapprovedPhotoPost, unapprovedPhotoPost.getType())); + + var post = postManager.rejectPostCandidate(unapprovedPhotoPost.getCreated()); + var photoPost = assertInstanceOf(PhotoPost.class, post); + photoPost.setApproved(true); + assertDoesNotThrow(() -> postManager.publishPost(photoPost, photoPost.getType())); + } + + Post photoPost() { + var post = assertDoesNotThrow(() -> parsePost("json/PhotoPost.json")); + assertEquals(Post.Type.PHOTO, post.getType()); + assertEquals(1698428408, post.getCreated()); + assertEquals("SourTruffles", post.getAuthor()); + assertEquals("https://i.redd.it/2rtjf4hn7swb1.jpg", post.getPostUrl()); + assertNotNull(post.getText()); + assertFalse(post.getText().isBlank()); + var photoPost = assertInstanceOf(PhotoPost.class, post); + assertFalse(photoPost.isHasSpoiler()); + assertEquals("https://i.redd.it/2rtjf4hn7swb1.jpg", photoPost.getMediaUrl()); + return photoPost; + } +} diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java new file mode 100644 index 0000000..1b1830f --- /dev/null +++ b/src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java @@ -0,0 +1,51 @@ +package com.github.yvasyliev.tc; + +import com.github.yvasyliev.model.dto.post.PollPost; +import com.github.yvasyliev.model.dto.post.Post; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class RedditPollPostTest extends AbstractRedditPostTest { + @Test + void postApproved() { + assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(pollPost().getAuthor())); + + var pollPost = pollPost(); + assertTrue(pollPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(pollPost, pollPost.getType())); + } + + @Test + void postUnapproved() { + assertDoesNotThrow(() -> stateManager.addBlockedAuthor(pollPost().getAuthor())); + + var unapprovedPollPost = pollPost(); + assertFalse(unapprovedPollPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(unapprovedPollPost, unapprovedPollPost.getType())); + + var post = postManager.rejectPostCandidate(unapprovedPollPost.getCreated()); + var pollPost = assertInstanceOf(PollPost.class, post); + pollPost.setApproved(true); + assertDoesNotThrow(() -> postManager.publishPost(pollPost, pollPost.getType())); + } + + Post pollPost() { + var post = assertDoesNotThrow(() -> parsePost("json/PollPost.json")); + assertEquals(Post.Type.POLL, post.getType()); + assertEquals(1675989471, post.getCreated()); + assertEquals("A_Canadian23", post.getAuthor()); + assertNotNull(post.getText()); + assertFalse(post.getText().isBlank()); + var pollPost = assertInstanceOf(PollPost.class, post); + var options = pollPost.getOptions(); + assertNotNull(options); + assertFalse(options.isEmpty()); + return pollPost; + } +} diff --git a/src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java new file mode 100644 index 0000000..82e8c11 --- /dev/null +++ b/src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java @@ -0,0 +1,47 @@ +package com.github.yvasyliev.tc; + +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.dto.post.TextPost; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class RedditTextPostTest extends AbstractRedditPostTest { + @Test + void postApproved() { + assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(textPost().getAuthor())); + Post textPost = textPost(); + assertTrue(textPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(textPost, textPost.getType())); + } + + @Test + void postUnapproved() { + assertDoesNotThrow(() -> stateManager.addBlockedAuthor(textPost().getAuthor())); + + Post unapprovedTextPost = textPost(); + assertFalse(unapprovedTextPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(unapprovedTextPost, unapprovedTextPost.getType())); + + var post = postManager.rejectPostCandidate(unapprovedTextPost.getCreated()); + var textPost = assertInstanceOf(TextPost.class, post); + textPost.setApproved(true); + assertDoesNotThrow(() -> postManager.publishPost(textPost, textPost.getType())); + } + + Post textPost() { + var post = assertDoesNotThrow(() -> parsePost("json/TextPost.json")); + assertEquals(Post.Type.TEXT, post.getType()); + assertEquals(1698365958, post.getCreated()); + assertEquals("thr1ceuponatime", post.getAuthor()); + assertEquals("https://www.indiewire.com/news/general-news/martin-scorsese-joins-letterboxd-lists-double-feature-choices-1234920446/", post.getPostUrl()); + assertNotNull(post.getText()); + assertFalse(post.getText().isBlank()); + return assertInstanceOf(TextPost.class, post); + } +} \ No newline at end of file diff --git a/src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java new file mode 100644 index 0000000..7b707c8 --- /dev/null +++ b/src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java @@ -0,0 +1,51 @@ +package com.github.yvasyliev.tc; + +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.dto.post.VideoPost; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class RedditVideoPostTest extends AbstractRedditPostTest { + @Test + void postApproved() { + assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(videoPost().getAuthor())); + + var videoPost = videoPost(); + assertTrue(videoPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(videoPost, videoPost.getType())); + } + + @Test + void postUnapproved() { + assertDoesNotThrow(() -> stateManager.addBlockedAuthor(videoPost().getAuthor())); + + var unapprovedVideoPost = videoPost(); + assertFalse(unapprovedVideoPost.isApproved()); + assertDoesNotThrow(() -> postManager.publishPost(unapprovedVideoPost, unapprovedVideoPost.getType())); + + var post = postManager.rejectPostCandidate(unapprovedVideoPost.getCreated()); + var videoPost = assertInstanceOf(VideoPost.class, post); + videoPost.setApproved(true); + assertDoesNotThrow(() -> postManager.publishPost(videoPost, videoPost.getType())); + } + + Post videoPost() { + var post = assertDoesNotThrow(() -> parsePost("json/VideoPost.json")); + assertEquals(Post.Type.VIDEO, post.getType()); + assertEquals(1698463733, post.getCreated()); + assertEquals("Nightmare_Fire", post.getAuthor()); + assertEquals("https://v.redd.it/3akewp074vwb1", post.getPostUrl()); + assertNotNull(post.getText()); + assertFalse(post.getText().isBlank()); + var videoPost = assertInstanceOf(VideoPost.class, post); + assertFalse(videoPost.isHasSpoiler()); + assertEquals("https://sd.rapidsave.com/download.php?permalink=https://reddit.com/r/cats/comments/17i510y/bite_disguised_as_a_yawn/&video_url=https://v.redd.it/3akewp074vwb1/DASH_270.mp4?source=fallback&audio_url=false", videoPost.getMediaUrl()); + return videoPost; + } +} diff --git a/src/test/resources/json/GifPost.json b/src/test/resources/json/GifPost.json new file mode 100644 index 0000000..cc26f94 --- /dev/null +++ b/src/test/resources/json/GifPost.json @@ -0,0 +1,220 @@ +{ + "kind": "Listing", + "data": { + "after": null, + "dist": 1, + "modhash": null, + "geo_filter": "", + "children": [ + { + "kind": "t3", + "data": { + "approved_at_utc": null, + "subreddit": "gifs", + "selftext": "", + "author_fullname": "t2_5citd", + "saved": false, + "mod_reason_title": null, + "gilded": 0, + "clicked": false, + "title": "GIF of a printed Homer GIF", + "link_flair_richtext": [], + "subreddit_name_prefixed": "r/gifs", + "hidden": false, + "pwls": null, + "link_flair_css_class": null, + "downs": 0, + "thumbnail_height": 105, + "top_awarded_type": null, + "hide_score": false, + "name": "t3_y0nm2r", + "quarantine": false, + "link_flair_text_color": "dark", + "upvote_ratio": 0.96, + "author_flair_background_color": null, + "subreddit_type": "public", + "ups": 5025, + "total_awards_received": 0, + "media_embed": {}, + "thumbnail_width": 140, + "author_flair_template_id": null, + "is_original_content": false, + "user_reports": [], + "secure_media": null, + "is_reddit_media_domain": true, + "is_meta": false, + "category": null, + "secure_media_embed": {}, + "link_flair_text": null, + "can_mod_post": false, + "score": 5025, + "approved_by": null, + "is_created_from_ads_ui": false, + "author_premium": false, + "thumbnail": "https://b.thumbs.redditmedia.com/oQU-Hzk9d5MfZYPZSqucvTYuWpBnlKDjWeQB4GqNiew.jpg", + "edited": false, + "author_flair_css_class": null, + "author_flair_richtext": [], + "gildings": {}, + "post_hint": "image", + "content_categories": null, + "is_self": false, + "mod_note": null, + "created": 1665430031.0, + "link_flair_type": "text", + "wls": null, + "removed_by_category": null, + "banned_by": null, + "author_flair_type": "text", + "domain": "i.redd.it", + "allow_live_comments": true, + "selftext_html": null, + "likes": null, + "suggested_sort": null, + "banned_at_utc": null, + "url_overridden_by_dest": "https://i.redd.it/f3wlnnpv41t91.gif", + "view_count": null, + "archived": false, + "no_follow": false, + "is_crosspostable": true, + "pinned": false, + "over_18": false, + "preview": { + "images": [ + { + "source": { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?format=png8&s=e9ac9221c51a886add83e66293ff085a427c9de0", + "width": 800, + "height": 600 + }, + "resolutions": [ + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=108&crop=smart&format=png8&s=dd70eabc26c31d0108867c6a9e0bf9388f91907c", + "width": 108, + "height": 81 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=216&crop=smart&format=png8&s=8eb020121769ab5331c5c654ca5feb95d24d37f8", + "width": 216, + "height": 162 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=320&crop=smart&format=png8&s=8da8d85d70fc7126a286614855bc7f5ef714d2c5", + "width": 320, + "height": 240 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=640&crop=smart&format=png8&s=8cf19ee03c24dfe5335c808b8e929ce44d7b43be", + "width": 640, + "height": 480 + } + ], + "variants": { + "gif": { + "source": { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?s=e091ebac793a73c61696b56e4cb56d3616f27ab5", + "width": 800, + "height": 600 + }, + "resolutions": [ + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=108&crop=smart&s=6ed927042c4efcbe573ef61737371324d85c3d9e", + "width": 108, + "height": 81 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=216&crop=smart&s=44248c312fba4aede3b38905122bf926a4892224", + "width": 216, + "height": 162 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=320&crop=smart&s=0cd1b8d4efa34690b15f151e6c75cc1f00251374", + "width": 320, + "height": 240 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=640&crop=smart&s=a28ca37fd7fb12124f47840127de72dd4944198f", + "width": 640, + "height": 480 + } + ] + }, + "mp4": { + "source": { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?format=mp4&s=5a024f969808538ff3ad387573cb14328e882080", + "width": 800, + "height": 600 + }, + "resolutions": [ + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=108&format=mp4&s=0b8e9718d2cfbe52e351d8105c77f282b13159f3", + "width": 108, + "height": 81 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=216&format=mp4&s=efdea01af80e7d7bd0a7b3e2ffb5176e37def54c", + "width": 216, + "height": 162 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=320&format=mp4&s=0cef51a8586d71d972a6339e6715ba10264eefbe", + "width": 320, + "height": 240 + }, + { + "url": "https://preview.redd.it/f3wlnnpv41t91.gif?width=640&format=mp4&s=d0682479c60f1bb56d0718381efe9a4d82e51609", + "width": 640, + "height": 480 + } + ] + } + }, + "id": "4uzTTABynlIT5V5btp3N2y-JiD2YrSeniXEqAz-6Nao" + } + ], + "enabled": true + }, + "all_awardings": [], + "awarders": [], + "media_only": false, + "can_gild": false, + "spoiler": false, + "locked": false, + "author_flair_text": null, + "treatment_tags": [], + "visited": false, + "removed_by": null, + "num_reports": null, + "distinguished": null, + "subreddit_id": "t5_2qt55", + "author_is_blocked": false, + "mod_reason_by": null, + "removal_reason": null, + "link_flair_background_color": "", + "id": "y0nm2r", + "is_robot_indexable": true, + "report_reasons": null, + "author": "jeh366", + "discussion_type": null, + "num_comments": 48, + "send_replies": true, + "whitelist_status": null, + "contest_mode": false, + "mod_reports": [], + "author_patreon_flair": false, + "author_flair_text_color": null, + "permalink": "/r/gifs/comments/y0nm2r/gif_of_a_printed_homer_gif/", + "parent_whitelist_status": null, + "stickied": false, + "url": "https://i.redd.it/f3wlnnpv41t91.gif", + "subreddit_subscribers": 21670275, + "created_utc": 1665430031.0, + "num_crossposts": 1, + "media": null, + "is_video": false + } + } + ], + "before": null + } +} \ No newline at end of file diff --git a/src/test/resources/json/PhotoGroupPost.json b/src/test/resources/json/PhotoGroupPost.json new file mode 100644 index 0000000..f30e151 --- /dev/null +++ b/src/test/resources/json/PhotoGroupPost.json @@ -0,0 +1,654 @@ +{ + "kind": "Listing", + "data": { + "after": null, + "dist": 1, + "modhash": null, + "geo_filter": "", + "children": [ + { + "kind": "t3", + "data": { + "approved_at_utc": null, + "subreddit": "cats", + "selftext": "A story never told", + "author_fullname": "t2_10obs9", + "saved": false, + "mod_reason_title": null, + "gilded": 0, + "clicked": false, + "is_gallery": true, + "title": "When my cat wakes up", + "link_flair_richtext": [ + { + "e": "text", + "t": "Cat Picture" + } + ], + "subreddit_name_prefixed": "r/cats", + "hidden": false, + "pwls": 6, + "link_flair_css_class": "catpic", + "downs": 0, + "thumbnail_height": 140, + "top_awarded_type": null, + "hide_score": false, + "media_metadata": { + "volqjrkfyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/volqjrkfyvwb1.jpg?width=108&crop=smart&auto=webp&s=c88c4fef404ef532b7213f47a6fdad432fde4b77" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/volqjrkfyvwb1.jpg?width=216&crop=smart&auto=webp&s=f2a0c25fbc6ef2c1cf431302e2e2350504e57f4b" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/volqjrkfyvwb1.jpg?width=320&crop=smart&auto=webp&s=d1452b56663db62145f01776b2a382abd8486c48" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/volqjrkfyvwb1.jpg?width=640&crop=smart&auto=webp&s=363e44dd71d313fe097e1b2a6b7efe548f127263" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/volqjrkfyvwb1.jpg?width=960&crop=smart&auto=webp&s=031f14412420ce485b3f6097d03c4db6c8e927c0" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/volqjrkfyvwb1.jpg?width=1080&crop=smart&auto=webp&s=4d6a8a02ca8f78e3a1e6a036766f4d817cb00307" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/volqjrkfyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=fe4721d2eeb756b47bfdb9d67e9f3f2e12048823" + }, + "id": "volqjrkfyvwb1" + }, + "a3ctlrleyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/a3ctlrleyvwb1.jpg?width=108&crop=smart&auto=webp&s=caf72385379685b964d1c62af35d1fc13ca77c84" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/a3ctlrleyvwb1.jpg?width=216&crop=smart&auto=webp&s=8dfbab27eba83bf6b9c77338761f0339706c9ad4" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/a3ctlrleyvwb1.jpg?width=320&crop=smart&auto=webp&s=a104b467d7e94f249ff312f8b6b5ca4c65283c5a" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/a3ctlrleyvwb1.jpg?width=640&crop=smart&auto=webp&s=9dd4bb5b4389fee97dfb423345f00ed5d9f79013" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/a3ctlrleyvwb1.jpg?width=960&crop=smart&auto=webp&s=10d7cb3060bf6f2f39aed29c61d5a4e8bd8acea5" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/a3ctlrleyvwb1.jpg?width=1080&crop=smart&auto=webp&s=7b6b38b5ff88548fa442edda3218d9be250b7a27" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/a3ctlrleyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=52762fa4bac318af752bf335d8acdf3f2c1e3674" + }, + "id": "a3ctlrleyvwb1" + }, + "klyo4dgfyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/klyo4dgfyvwb1.jpg?width=108&crop=smart&auto=webp&s=042164c03b4a79edc2d2d6509f49b33b04c5141d" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/klyo4dgfyvwb1.jpg?width=216&crop=smart&auto=webp&s=92d63941ecd53a27ef665acf862c796a4e276a1d" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/klyo4dgfyvwb1.jpg?width=320&crop=smart&auto=webp&s=6e532d43c8371b6ba29d149d729c12669b4ea1a7" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/klyo4dgfyvwb1.jpg?width=640&crop=smart&auto=webp&s=2e534fa633eaef06d16d2e59f06e50e113a860a4" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/klyo4dgfyvwb1.jpg?width=960&crop=smart&auto=webp&s=64ed7a2672087f86c7f0c9a83740af54c764133a" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/klyo4dgfyvwb1.jpg?width=1080&crop=smart&auto=webp&s=256c760271c36cc6f8a1fc53922c162a3fbbfe05" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/klyo4dgfyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=3858572c7265cd029d78b3a5c408f971306625fc" + }, + "id": "klyo4dgfyvwb1" + }, + "odu28q1fyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/odu28q1fyvwb1.jpg?width=108&crop=smart&auto=webp&s=502860a0f9ce1e120d90b1088ae8f531230efaec" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/odu28q1fyvwb1.jpg?width=216&crop=smart&auto=webp&s=387892550e12e5b64375bc4e5818401e1185fc7d" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/odu28q1fyvwb1.jpg?width=320&crop=smart&auto=webp&s=52895a154ab4a80ce9a92f1e3abee1388cbc4488" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/odu28q1fyvwb1.jpg?width=640&crop=smart&auto=webp&s=47ddbd463fcd8a31ceb1e72dd25312625c73076c" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/odu28q1fyvwb1.jpg?width=960&crop=smart&auto=webp&s=c296a9779ec00c8a3feda7c65bf4d982a0e8d778" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/odu28q1fyvwb1.jpg?width=1080&crop=smart&auto=webp&s=bc8306fc1a7e86b0c758d86663e8afc44a38ed1e" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/odu28q1fyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=d9ad579f35a000a0c138a5c615ab807c7ce83e1f" + }, + "id": "odu28q1fyvwb1" + }, + "nar5vvreyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/nar5vvreyvwb1.jpg?width=108&crop=smart&auto=webp&s=20ca35096d16f644216463b7910c00159e3f77f5" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/nar5vvreyvwb1.jpg?width=216&crop=smart&auto=webp&s=17152426c09231648020a91048ed386bdd36da55" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/nar5vvreyvwb1.jpg?width=320&crop=smart&auto=webp&s=f03c1c136fdab609d4da209996002948b7ef5be5" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/nar5vvreyvwb1.jpg?width=640&crop=smart&auto=webp&s=42a86d8e934911a8deae7f58e09235112687df15" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/nar5vvreyvwb1.jpg?width=960&crop=smart&auto=webp&s=1833cb2f481fb3a7dfc9e8b809359e4ab7ee6e7f" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/nar5vvreyvwb1.jpg?width=1080&crop=smart&auto=webp&s=75ace4a9b15a6a3334f1795af46a6219ddc02a8b" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/nar5vvreyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=26c0dcaa1602ddbc5e2a2333a906093e358a4afd" + }, + "id": "nar5vvreyvwb1" + }, + "179ioh6fyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/179ioh6fyvwb1.jpg?width=108&crop=smart&auto=webp&s=84484fcff944c2c185f3c73303a00e5fb1f7bcac" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/179ioh6fyvwb1.jpg?width=216&crop=smart&auto=webp&s=109098f7d55edd6773b3ac060d396988cc36d41d" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/179ioh6fyvwb1.jpg?width=320&crop=smart&auto=webp&s=6d207f11b27dadd4dbc1acd20409b980a025ba14" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/179ioh6fyvwb1.jpg?width=640&crop=smart&auto=webp&s=cef62febe5705c07876d9e484657fab685e3d8b5" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/179ioh6fyvwb1.jpg?width=960&crop=smart&auto=webp&s=f7dbbc0c5c02ac7631850134e9665b9ff4cb7dd9" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/179ioh6fyvwb1.jpg?width=1080&crop=smart&auto=webp&s=93b488058301fd085447466d6df41754130cfd22" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/179ioh6fyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=def15d4c8afc551bdc09982b38db7fc766d40332" + }, + "id": "179ioh6fyvwb1" + }, + "hb8pxepfyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/hb8pxepfyvwb1.jpg?width=108&crop=smart&auto=webp&s=18e09d246e2096dec42432cd45ffe70530803511" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/hb8pxepfyvwb1.jpg?width=216&crop=smart&auto=webp&s=bb18c3913fb5c27920ad8ebca93d574cc936e477" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/hb8pxepfyvwb1.jpg?width=320&crop=smart&auto=webp&s=9517a8afc7f866fa2a5725aba0cc50b0cfc19781" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/hb8pxepfyvwb1.jpg?width=640&crop=smart&auto=webp&s=3f495694ff84603ea384be7b0d839a6b1b89602d" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/hb8pxepfyvwb1.jpg?width=960&crop=smart&auto=webp&s=85c1f266dea30807dd4c1e3f40a2c998093a7d60" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/hb8pxepfyvwb1.jpg?width=1080&crop=smart&auto=webp&s=53c30321bc5c7c161d8639f6bd9579934e746bc2" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/hb8pxepfyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=62774ed5d787ca47fd30e52f2d8511c9f612238e" + }, + "id": "hb8pxepfyvwb1" + }, + "4hc4e2weyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/4hc4e2weyvwb1.jpg?width=108&crop=smart&auto=webp&s=7f1a2cac90d212aa36c0f171555e73e6e72b9f9a" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/4hc4e2weyvwb1.jpg?width=216&crop=smart&auto=webp&s=9a1229647d9c77c91ce6626743eaf78b87ced5f7" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/4hc4e2weyvwb1.jpg?width=320&crop=smart&auto=webp&s=4c62a60e5a01bb8e85762ad7e80956364faa4dd6" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/4hc4e2weyvwb1.jpg?width=640&crop=smart&auto=webp&s=7c3b310cee8a4b3f8dc0e36529536c13862e5fe2" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/4hc4e2weyvwb1.jpg?width=960&crop=smart&auto=webp&s=4fc006522b14d884b6bfc7c8499e377066745724" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/4hc4e2weyvwb1.jpg?width=1080&crop=smart&auto=webp&s=0b83db7c4992d4d8a3cd2c85ba7ffbb4537514d8" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/4hc4e2weyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=3775f85a3ca8a91b7cdea8c1b4e02c1d091ff158" + }, + "id": "4hc4e2weyvwb1" + }, + "e7tsu6geyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/e7tsu6geyvwb1.jpg?width=108&crop=smart&auto=webp&s=c5ad45d308c70fa9543a77a2baa4993dfcd6a5ae" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/e7tsu6geyvwb1.jpg?width=216&crop=smart&auto=webp&s=4bf59d4b76f42fe9e817dafec8cd9b2dca13e7a5" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/e7tsu6geyvwb1.jpg?width=320&crop=smart&auto=webp&s=7445d8efd1be64b90be8de4d67eff3ab60a54081" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/e7tsu6geyvwb1.jpg?width=640&crop=smart&auto=webp&s=529e9732816d2fc14c24ea60ac5d17a1652d4d1c" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/e7tsu6geyvwb1.jpg?width=960&crop=smart&auto=webp&s=2b4c721c7da1616335a2a012572fefa7916b7df3" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/e7tsu6geyvwb1.jpg?width=1080&crop=smart&auto=webp&s=9453737af05ee1527871e6e535c1c88b8b16ccff" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/e7tsu6geyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=b738c313c8c1b5dd34d95a0920e12df394126ae6" + }, + "id": "e7tsu6geyvwb1" + }, + "49gkl9aeyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/49gkl9aeyvwb1.jpg?width=108&crop=smart&auto=webp&s=acb4bc4f74ebc09c436c374e1384757ec0ce1b58" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/49gkl9aeyvwb1.jpg?width=216&crop=smart&auto=webp&s=8a2928bb3b2efdae64671ab317779109f22e8837" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/49gkl9aeyvwb1.jpg?width=320&crop=smart&auto=webp&s=c6c875b2d3cbf2c125add82c811c6876c2b684eb" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/49gkl9aeyvwb1.jpg?width=640&crop=smart&auto=webp&s=7c4255069cb5e3c42b9dd6b09e069b09e596ecb9" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/49gkl9aeyvwb1.jpg?width=960&crop=smart&auto=webp&s=a1715a71854b0b5f92d44d45338fb323bc41bd9a" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/49gkl9aeyvwb1.jpg?width=1080&crop=smart&auto=webp&s=cae705231837a65787649d0a9b53b5dc067b2be3" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/49gkl9aeyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=063d83a7ddb3af40c31ecc52d0f7b14b23153814" + }, + "id": "49gkl9aeyvwb1" + }, + "1zg3xlbfyvwb1": { + "status": "valid", + "e": "Image", + "m": "image/jpg", + "p": [ + { + "y": 144, + "x": 108, + "u": "https://preview.redd.it/1zg3xlbfyvwb1.jpg?width=108&crop=smart&auto=webp&s=b7c97567b78638c80b2d9fbe3aafad78ae04d4aa" + }, + { + "y": 288, + "x": 216, + "u": "https://preview.redd.it/1zg3xlbfyvwb1.jpg?width=216&crop=smart&auto=webp&s=5ecfc20d4583e94c37815d8f3823e893b850f050" + }, + { + "y": 426, + "x": 320, + "u": "https://preview.redd.it/1zg3xlbfyvwb1.jpg?width=320&crop=smart&auto=webp&s=313c529564269ef39c99545ebe7e9ed6335f8108" + }, + { + "y": 853, + "x": 640, + "u": "https://preview.redd.it/1zg3xlbfyvwb1.jpg?width=640&crop=smart&auto=webp&s=7a2b15c756b0c387027b6abc599ebf609babc70a" + }, + { + "y": 1280, + "x": 960, + "u": "https://preview.redd.it/1zg3xlbfyvwb1.jpg?width=960&crop=smart&auto=webp&s=0ba6fa690fdb5e105b33d71b8829893b974ce9cd" + }, + { + "y": 1440, + "x": 1080, + "u": "https://preview.redd.it/1zg3xlbfyvwb1.jpg?width=1080&crop=smart&auto=webp&s=dd76d494d3b3c06855c05e8fee5632d98d982d79" + } + ], + "s": { + "y": 4000, + "x": 3000, + "u": "https://preview.redd.it/1zg3xlbfyvwb1.jpg?width=3000&format=pjpg&auto=webp&s=faddfebd24a808e017fdd8c952ee3c582a6ae0ab" + }, + "id": "1zg3xlbfyvwb1" + } + }, + "name": "t3_17i7j5d", + "quarantine": false, + "link_flair_text_color": "light", + "upvote_ratio": 0.86, + "author_flair_background_color": null, + "ups": 5, + "domain": "reddit.com", + "media_embed": {}, + "thumbnail_width": 140, + "author_flair_template_id": null, + "is_original_content": false, + "user_reports": [], + "secure_media": null, + "is_reddit_media_domain": false, + "is_meta": false, + "category": null, + "secure_media_embed": {}, + "gallery_data": { + "items": [ + { + "media_id": "49gkl9aeyvwb1", + "id": 348288634 + }, + { + "media_id": "e7tsu6geyvwb1", + "id": 348288635 + }, + { + "media_id": "a3ctlrleyvwb1", + "id": 348288636 + }, + { + "media_id": "nar5vvreyvwb1", + "id": 348288637 + }, + { + "media_id": "4hc4e2weyvwb1", + "id": 348288638 + }, + { + "media_id": "odu28q1fyvwb1", + "id": 348288639 + }, + { + "media_id": "179ioh6fyvwb1", + "id": 348288640 + }, + { + "media_id": "1zg3xlbfyvwb1", + "id": 348288641 + }, + { + "media_id": "klyo4dgfyvwb1", + "id": 348288642 + }, + { + "media_id": "volqjrkfyvwb1", + "id": 348288643 + }, + { + "media_id": "hb8pxepfyvwb1", + "id": 348288644 + } + ] + }, + "link_flair_text": "Cat Picture", + "can_mod_post": false, + "score": 5, + "approved_by": null, + "is_created_from_ads_ui": false, + "author_premium": false, + "thumbnail": "https://b.thumbs.redditmedia.com/3oMCfSMxImf53agFkYyYpDgsxIF9r8eIW-5tDElaf5M.jpg", + "edited": false, + "author_flair_css_class": null, + "author_flair_richtext": [], + "gildings": {}, + "content_categories": null, + "is_self": false, + "subreddit_type": "public", + "created": 1698473734.0, + "link_flair_type": "richtext", + "wls": 6, + "removed_by_category": null, + "banned_by": null, + "author_flair_type": "text", + "total_awards_received": 0, + "allow_live_comments": false, + "selftext_html": "

A story never told

\n
", + "likes": null, + "suggested_sort": null, + "banned_at_utc": null, + "url_overridden_by_dest": "https://www.reddit.com/gallery/17i7j5d", + "view_count": null, + "archived": false, + "no_follow": false, + "is_crosspostable": true, + "pinned": false, + "over_18": false, + "all_awardings": [], + "awarders": [], + "media_only": false, + "link_flair_template_id": "9b021bc6-b875-11ec-aa94-8e28dbb24a96", + "can_gild": false, + "spoiler": false, + "locked": false, + "author_flair_text": null, + "treatment_tags": [], + "visited": false, + "removed_by": null, + "mod_note": null, + "distinguished": null, + "subreddit_id": "t5_2qhta", + "author_is_blocked": false, + "mod_reason_by": null, + "num_reports": null, + "removal_reason": null, + "link_flair_background_color": "#cc5289", + "id": "17i7j5d", + "is_robot_indexable": true, + "report_reasons": null, + "author": "nevara19", + "discussion_type": null, + "num_comments": 1, + "send_replies": true, + "whitelist_status": "all_ads", + "contest_mode": false, + "mod_reports": [], + "author_patreon_flair": false, + "author_flair_text_color": null, + "permalink": "/r/cats/comments/17i7j5d/when_my_cat_wakes_up/", + "parent_whitelist_status": "all_ads", + "stickied": false, + "url": "https://www.reddit.com/gallery/17i7j5d", + "subreddit_subscribers": 4849544, + "created_utc": 1698473734.0, + "num_crossposts": 0, + "media": null, + "is_video": false + } + } + ], + "before": null + } +} \ No newline at end of file diff --git a/src/test/resources/json/PhotoPost.json b/src/test/resources/json/PhotoPost.json new file mode 100644 index 0000000..9b26a54 --- /dev/null +++ b/src/test/resources/json/PhotoPost.json @@ -0,0 +1,177 @@ +{ + "kind": "Listing", + "data": { + "after": null, + "dist": 1, + "modhash": null, + "geo_filter": "", + "children": [ + { + "kind": "t3", + "data": { + "approved_at_utc": null, + "subreddit": "cats", + "selftext": "", + "author_fullname": "t2_7pr4r", + "saved": false, + "mod_reason_title": null, + "gilded": 0, + "clicked": false, + "title": "My cat refuses to use the heated bed I bought for him, even though it’s been getting very cold at night. Is he stupid or something?", + "link_flair_richtext": [ + { + "e": "text", + "t": "Advice" + } + ], + "subreddit_name_prefixed": "r/cats", + "hidden": false, + "pwls": 6, + "link_flair_css_class": "advice", + "downs": 0, + "thumbnail_height": 140, + "top_awarded_type": null, + "hide_score": false, + "name": "t3_17ht0n4", + "quarantine": false, + "link_flair_text_color": "light", + "upvote_ratio": 0.95, + "author_flair_background_color": null, + "ups": 22272, + "total_awards_received": 0, + "media_embed": {}, + "thumbnail_width": 140, + "author_flair_template_id": null, + "is_original_content": false, + "user_reports": [], + "secure_media": null, + "is_reddit_media_domain": true, + "is_meta": false, + "category": null, + "secure_media_embed": {}, + "link_flair_text": "Advice", + "can_mod_post": false, + "score": 22272, + "approved_by": null, + "is_created_from_ads_ui": false, + "author_premium": false, + "thumbnail": "https://b.thumbs.redditmedia.com/Azx684UpdEfo7OMIcDe3QeN0xKmsFZTOkLZEc_h532A.jpg", + "edited": false, + "author_flair_css_class": null, + "author_flair_richtext": [], + "gildings": {}, + "post_hint": "image", + "content_categories": null, + "is_self": false, + "subreddit_type": "public", + "created": 1698428408.0, + "link_flair_type": "richtext", + "wls": 6, + "removed_by_category": null, + "banned_by": null, + "author_flair_type": "text", + "domain": "i.redd.it", + "allow_live_comments": true, + "selftext_html": null, + "likes": null, + "suggested_sort": null, + "banned_at_utc": null, + "url_overridden_by_dest": "https://i.redd.it/2rtjf4hn7swb1.jpg", + "view_count": null, + "archived": false, + "no_follow": false, + "is_crosspostable": true, + "pinned": false, + "over_18": false, + "preview": { + "images": [ + { + "source": { + "url": "https://preview.redd.it/2rtjf4hn7swb1.jpg?auto=webp&s=3fc0920be004a435e2babebe4305d0f52e7b8eb5", + "width": 3024, + "height": 4032 + }, + "resolutions": [ + { + "url": "https://preview.redd.it/2rtjf4hn7swb1.jpg?width=108&crop=smart&auto=webp&s=36c8a4437b8cfcc5cd939101f59047d74e6bed29", + "width": 108, + "height": 144 + }, + { + "url": "https://preview.redd.it/2rtjf4hn7swb1.jpg?width=216&crop=smart&auto=webp&s=e6964cc30282d6804167f79a2ade504e334e3305", + "width": 216, + "height": 288 + }, + { + "url": "https://preview.redd.it/2rtjf4hn7swb1.jpg?width=320&crop=smart&auto=webp&s=3127ff87145ea0c1c6e40f13554864038b03c56e", + "width": 320, + "height": 426 + }, + { + "url": "https://preview.redd.it/2rtjf4hn7swb1.jpg?width=640&crop=smart&auto=webp&s=b10e5e1609c8f84572784f4f801e3959235d6fad", + "width": 640, + "height": 853 + }, + { + "url": "https://preview.redd.it/2rtjf4hn7swb1.jpg?width=960&crop=smart&auto=webp&s=1730bb26163a033249ea2603bca6cc31938f8e16", + "width": 960, + "height": 1280 + }, + { + "url": "https://preview.redd.it/2rtjf4hn7swb1.jpg?width=1080&crop=smart&auto=webp&s=5d7724d4b853bf78820c0f5bb4490b5269a16826", + "width": 1080, + "height": 1440 + } + ], + "variants": {}, + "id": "0RPX-o9_nmd4TJcJFwokXi1wtQN84W8F0O0ooJvGYH8" + } + ], + "enabled": true + }, + "all_awardings": [], + "awarders": [], + "media_only": false, + "link_flair_template_id": "7e252220-f6c9-11e4-ba11-0e7d3bf7865f", + "can_gild": false, + "spoiler": false, + "locked": false, + "author_flair_text": null, + "treatment_tags": [], + "visited": false, + "removed_by": null, + "mod_note": null, + "distinguished": null, + "subreddit_id": "t5_2qhta", + "author_is_blocked": false, + "mod_reason_by": null, + "num_reports": null, + "removal_reason": null, + "link_flair_background_color": "#47b2b2", + "id": "17ht0n4", + "is_robot_indexable": true, + "report_reasons": null, + "author": "SourTruffles", + "discussion_type": null, + "num_comments": 1834, + "send_replies": true, + "whitelist_status": "all_ads", + "contest_mode": false, + "mod_reports": [], + "author_patreon_flair": false, + "author_flair_text_color": null, + "permalink": "/r/cats/comments/17ht0n4/my_cat_refuses_to_use_the_heated_bed_i_bought_for/", + "parent_whitelist_status": "all_ads", + "stickied": false, + "url": "https://i.redd.it/2rtjf4hn7swb1.jpg", + "subreddit_subscribers": 4849425, + "created_utc": 1698428408.0, + "num_crossposts": 2, + "media": null, + "is_video": false + } + } + ], + "before": null + } +} \ No newline at end of file diff --git a/src/test/resources/json/PollPost.json b/src/test/resources/json/PollPost.json new file mode 100644 index 0000000..0d79423 --- /dev/null +++ b/src/test/resources/json/PollPost.json @@ -0,0 +1,145 @@ +{ + "kind": "Listing", + "data": { + "after": null, + "dist": 1, + "modhash": null, + "geo_filter": "", + "children": [ + { + "kind": "t3", + "data": { + "approved_at_utc": null, + "subreddit": "poll", + "selftext": "\n\n[View Poll](https://www.reddit.com/poll/10ybewj)", + "author_fullname": "t2_u2g8s4c1", + "saved": false, + "mod_reason_title": null, + "gilded": 0, + "clicked": false, + "title": "In the morning, which breakfast would you prefer?", + "link_flair_richtext": [], + "subreddit_name_prefixed": "r/poll", + "hidden": false, + "pwls": 6, + "link_flair_css_class": null, + "downs": 0, + "top_awarded_type": null, + "hide_score": false, + "name": "t3_10ybewj", + "quarantine": false, + "link_flair_text_color": "dark", + "upvote_ratio": 0.9, + "author_flair_background_color": null, + "subreddit_type": "public", + "ups": 8, + "total_awards_received": 0, + "media_embed": {}, + "author_flair_template_id": null, + "is_original_content": false, + "user_reports": [], + "secure_media": null, + "is_reddit_media_domain": false, + "is_meta": false, + "category": null, + "secure_media_embed": {}, + "link_flair_text": null, + "can_mod_post": false, + "score": 8, + "approved_by": null, + "is_created_from_ads_ui": false, + "author_premium": false, + "thumbnail": "", + "edited": false, + "author_flair_css_class": null, + "author_flair_richtext": [], + "gildings": {}, + "content_categories": null, + "is_self": true, + "mod_note": null, + "created": 1675989471.0, + "link_flair_type": "text", + "wls": 6, + "removed_by_category": null, + "banned_by": null, + "author_flair_type": "text", + "domain": "self.poll", + "allow_live_comments": false, + "selftext_html": "", + "likes": null, + "suggested_sort": null, + "banned_at_utc": null, + "view_count": null, + "archived": false, + "no_follow": false, + "is_crosspostable": true, + "pinned": false, + "over_18": false, + "all_awardings": [], + "awarders": [], + "media_only": false, + "can_gild": false, + "spoiler": false, + "locked": false, + "author_flair_text": null, + "treatment_tags": [], + "visited": false, + "removed_by": null, + "num_reports": null, + "distinguished": null, + "subreddit_id": "t5_2qh64", + "author_is_blocked": false, + "mod_reason_by": null, + "removal_reason": null, + "link_flair_background_color": "", + "id": "10ybewj", + "is_robot_indexable": true, + "report_reasons": null, + "author": "A_Canadian23", + "discussion_type": null, + "num_comments": 10, + "send_replies": true, + "whitelist_status": "all_ads", + "contest_mode": false, + "poll_data": { + "prediction_status": null, + "total_stake_amount": null, + "voting_end_timestamp": 1676594271691, + "options": [ + { + "text": "Waffles.", + "vote_count": 86, + "id": "21522525" + }, + { + "text": "Pancakes.", + "vote_count": 81, + "id": "21522526" + } + ], + "vote_updates_remained": null, + "is_prediction": false, + "resolved_option_id": null, + "user_won_amount": null, + "user_selection": null, + "total_vote_count": 167, + "tournament_id": null + }, + "author_patreon_flair": false, + "author_flair_text_color": null, + "permalink": "/r/poll/comments/10ybewj/in_the_morning_which_breakfast_would_you_prefer/", + "parent_whitelist_status": "all_ads", + "stickied": false, + "mod_reports": [], + "url": "https://www.reddit.com/r/poll/comments/10ybewj/in_the_morning_which_breakfast_would_you_prefer/", + "subreddit_subscribers": 6877, + "created_utc": 1675989471.0, + "num_crossposts": 0, + "media": null, + "is_video": false + } + } + ], + "before": null + } +} \ No newline at end of file diff --git a/src/test/resources/json/TextPost.json b/src/test/resources/json/TextPost.json new file mode 100644 index 0000000..24725d8 --- /dev/null +++ b/src/test/resources/json/TextPost.json @@ -0,0 +1,177 @@ +{ + "kind": "Listing", + "data": { + "after": null, + "dist": 1, + "modhash": null, + "geo_filter": "", + "children": [ + { + "kind": "t3", + "data": { + "approved_at_utc": null, + "subreddit": "movies", + "selftext": "", + "author_fullname": "t2_alrgvzbg", + "saved": false, + "mod_reason_title": null, + "gilded": 0, + "clicked": false, + "title": "Martin Scorsese Joins Letterboxd — and Has Curated a Massive List of Double-Feature Pairings with His Own Films", + "link_flair_richtext": [ + { + "e": "text", + "t": "News" + } + ], + "subreddit_name_prefixed": "r/movies", + "hidden": false, + "pwls": 6, + "link_flair_css_class": "news", + "downs": 0, + "thumbnail_height": 93, + "top_awarded_type": null, + "hide_score": false, + "name": "t3_17hav59", + "quarantine": false, + "link_flair_text_color": "dark", + "upvote_ratio": 0.95, + "author_flair_background_color": null, + "ups": 3379, + "total_awards_received": 0, + "media_embed": {}, + "thumbnail_width": 140, + "author_flair_template_id": null, + "is_original_content": false, + "user_reports": [], + "secure_media": null, + "is_reddit_media_domain": false, + "is_meta": false, + "category": null, + "secure_media_embed": {}, + "link_flair_text": "News", + "can_mod_post": false, + "score": 3379, + "approved_by": null, + "is_created_from_ads_ui": false, + "author_premium": false, + "thumbnail": "https://b.thumbs.redditmedia.com/57kaqxw5hSF34UivdM69iwKxAE9DD1xD7X5jWrq2i3k.jpg", + "edited": false, + "author_flair_css_class": null, + "author_flair_richtext": [], + "gildings": {}, + "post_hint": "link", + "content_categories": null, + "is_self": false, + "subreddit_type": "public", + "created": 1698365958.0, + "link_flair_type": "richtext", + "wls": 6, + "removed_by_category": null, + "banned_by": null, + "author_flair_type": "text", + "domain": "indiewire.com", + "allow_live_comments": false, + "selftext_html": null, + "likes": null, + "suggested_sort": null, + "banned_at_utc": null, + "url_overridden_by_dest": "https://www.indiewire.com/news/general-news/martin-scorsese-joins-letterboxd-lists-double-feature-choices-1234920446/", + "view_count": null, + "archived": false, + "no_follow": false, + "is_crosspostable": true, + "pinned": false, + "over_18": false, + "preview": { + "images": [ + { + "source": { + "url": "https://external-preview.redd.it/B_sluN8KB15iwqPGzB_ZIhMy6Ra2spn7BFyaqJWSCOA.jpg?auto=webp&s=a430b284e0883e8efa250334cde48c5ddbac7b34", + "width": 6000, + "height": 4000 + }, + "resolutions": [ + { + "url": "https://external-preview.redd.it/B_sluN8KB15iwqPGzB_ZIhMy6Ra2spn7BFyaqJWSCOA.jpg?width=108&crop=smart&auto=webp&s=05ada6b79d58a71ba179f1e086001c29eccf644d", + "width": 108, + "height": 72 + }, + { + "url": "https://external-preview.redd.it/B_sluN8KB15iwqPGzB_ZIhMy6Ra2spn7BFyaqJWSCOA.jpg?width=216&crop=smart&auto=webp&s=c01630c3a621074762ab961d5f9ceba4ef6ee1a8", + "width": 216, + "height": 144 + }, + { + "url": "https://external-preview.redd.it/B_sluN8KB15iwqPGzB_ZIhMy6Ra2spn7BFyaqJWSCOA.jpg?width=320&crop=smart&auto=webp&s=3c18a6a9a2ace439965c48074c7ed32418c7b2ec", + "width": 320, + "height": 213 + }, + { + "url": "https://external-preview.redd.it/B_sluN8KB15iwqPGzB_ZIhMy6Ra2spn7BFyaqJWSCOA.jpg?width=640&crop=smart&auto=webp&s=49680da24d95ca812798546bf318760f9cc3f89f", + "width": 640, + "height": 426 + }, + { + "url": "https://external-preview.redd.it/B_sluN8KB15iwqPGzB_ZIhMy6Ra2spn7BFyaqJWSCOA.jpg?width=960&crop=smart&auto=webp&s=01ac362f55fe1187e97be21c224f8c15996654c2", + "width": 960, + "height": 640 + }, + { + "url": "https://external-preview.redd.it/B_sluN8KB15iwqPGzB_ZIhMy6Ra2spn7BFyaqJWSCOA.jpg?width=1080&crop=smart&auto=webp&s=374d35680c52ac5292cbcd4e83c01c0c779a1662", + "width": 1080, + "height": 720 + } + ], + "variants": {}, + "id": "Q-Ya3oZ1tTSZajhOVqnYNuqElpF-hjuG_X7W6F5dcNE" + } + ], + "enabled": false + }, + "all_awardings": [], + "awarders": [], + "media_only": false, + "link_flair_template_id": "2b89defa-381e-11e2-8c5e-12313d28169d", + "can_gild": false, + "spoiler": false, + "locked": false, + "author_flair_text": null, + "treatment_tags": [], + "visited": false, + "removed_by": null, + "mod_note": null, + "distinguished": null, + "subreddit_id": "t5_2qh3s", + "author_is_blocked": false, + "mod_reason_by": null, + "num_reports": null, + "removal_reason": null, + "link_flair_background_color": "#0aa18f", + "id": "17hav59", + "is_robot_indexable": true, + "report_reasons": null, + "author": "thr1ceuponatime", + "discussion_type": null, + "num_comments": 134, + "send_replies": false, + "whitelist_status": "all_ads", + "contest_mode": false, + "mod_reports": [], + "author_patreon_flair": false, + "author_flair_text_color": null, + "permalink": "/r/movies/comments/17hav59/martin_scorsese_joins_letterboxd_and_has_curated/", + "parent_whitelist_status": "all_ads", + "stickied": false, + "url": "https://www.indiewire.com/news/general-news/martin-scorsese-joins-letterboxd-lists-double-feature-choices-1234920446/", + "subreddit_subscribers": 31744356, + "created_utc": 1698365958.0, + "num_crossposts": 1, + "media": null, + "is_video": false + } + } + ], + "before": null + } +} \ No newline at end of file diff --git a/src/test/resources/json/VideoPost.json b/src/test/resources/json/VideoPost.json new file mode 100644 index 0000000..3e9877e --- /dev/null +++ b/src/test/resources/json/VideoPost.json @@ -0,0 +1,185 @@ +{ + "kind": "Listing", + "data": { + "after": null, + "dist": 1, + "modhash": null, + "geo_filter": "", + "children": [ + { + "kind": "t3", + "data": { + "approved_at_utc": null, + "subreddit": "cats", + "selftext": "", + "author_fullname": "t2_t6437b18", + "saved": false, + "mod_reason_title": null, + "gilded": 0, + "clicked": false, + "title": "Bite disguised as a yawn", + "link_flair_richtext": [ + { + "e": "text", + "t": "Video" + } + ], + "subreddit_name_prefixed": "r/cats", + "hidden": false, + "pwls": 6, + "link_flair_css_class": "video", + "downs": 0, + "thumbnail_height": 140, + "top_awarded_type": null, + "hide_score": false, + "name": "t3_17i510y", + "quarantine": false, + "link_flair_text_color": "dark", + "upvote_ratio": 1.0, + "author_flair_background_color": null, + "ups": 3901, + "total_awards_received": 0, + "media_embed": {}, + "thumbnail_width": 140, + "author_flair_template_id": null, + "is_original_content": false, + "user_reports": [], + "secure_media": { + "reddit_video": { + "bitrate_kbps": 450, + "fallback_url": "https://v.redd.it/3akewp074vwb1/DASH_270.mp4?source=fallback", + "has_audio": false, + "height": 480, + "width": 262, + "scrubber_media_url": "https://v.redd.it/3akewp074vwb1/DASH_96.mp4", + "dash_url": "https://v.redd.it/3akewp074vwb1/DASHPlaylist.mpd?a=1701103408%2CODBiZjcyYmZlMGNhYzEzMTEzODU2NGI4OWZjZWEyZTEyNzFiZjFiNzNiZGU4Y2QzNmMzNWYzMzVhZTQ0M2M3Mg%3D%3D&v=1&f=sd", + "duration": 10, + "hls_url": "https://v.redd.it/3akewp074vwb1/HLSPlaylist.m3u8?a=1701103408%2CMTE4MmNiZTE1MzMzNjRlNTllMTdhMjllODVkOTc5MDgwZWEyN2U1YTM2YTFmNGQ0MGY1YzU1MTZkOTA2YjU1Mg%3D%3D&v=1&f=sd", + "is_gif": false, + "transcoding_status": "completed" + } + }, + "is_reddit_media_domain": true, + "is_meta": false, + "category": null, + "secure_media_embed": {}, + "link_flair_text": "Video", + "can_mod_post": false, + "score": 3901, + "approved_by": null, + "is_created_from_ads_ui": false, + "author_premium": false, + "thumbnail": "https://b.thumbs.redditmedia.com/a4DYV9uU4-ptjQVVsx5Uo4IUYOCsMfkUoYYeMwtPQAk.jpg", + "edited": false, + "author_flair_css_class": null, + "author_flair_richtext": [], + "gildings": {}, + "post_hint": "hosted:video", + "content_categories": null, + "is_self": false, + "subreddit_type": "public", + "created": 1698463733.0, + "link_flair_type": "richtext", + "wls": 6, + "removed_by_category": null, + "banned_by": null, + "author_flair_type": "text", + "domain": "v.redd.it", + "allow_live_comments": false, + "selftext_html": null, + "likes": null, + "suggested_sort": null, + "banned_at_utc": null, + "url_overridden_by_dest": "https://v.redd.it/3akewp074vwb1", + "view_count": null, + "archived": false, + "no_follow": false, + "is_crosspostable": true, + "pinned": false, + "over_18": false, + "preview": { + "images": [ + { + "source": { + "url": "https://external-preview.redd.it/EOoSE9FWjXyBP_zM8M3tQuWZcK2N9YmqYcipZhFhrkc.png?format=pjpg&auto=webp&s=4b20cac98e36ecedf3ce0abc582372fa5d9ce115", + "width": 262, + "height": 480 + }, + "resolutions": [ + { + "url": "https://external-preview.redd.it/EOoSE9FWjXyBP_zM8M3tQuWZcK2N9YmqYcipZhFhrkc.png?width=108&crop=smart&format=pjpg&auto=webp&s=89cfdce15b2e999d80612c9c7ff6d1b098cc2dcf", + "width": 108, + "height": 197 + }, + { + "url": "https://external-preview.redd.it/EOoSE9FWjXyBP_zM8M3tQuWZcK2N9YmqYcipZhFhrkc.png?width=216&crop=smart&format=pjpg&auto=webp&s=85eb93220e7407ffacaa97abeb12582530feb778", + "width": 216, + "height": 395 + } + ], + "variants": {}, + "id": "b1bcfOppopCPjdZFYDKE6QBVO9rw7hL-CFCEy1dR3Gc" + } + ], + "enabled": false + }, + "all_awardings": [], + "awarders": [], + "media_only": false, + "link_flair_template_id": "c1134456-f9a1-11e4-b505-0eb74937ef65", + "can_gild": false, + "spoiler": false, + "locked": false, + "author_flair_text": null, + "treatment_tags": [], + "visited": false, + "removed_by": null, + "mod_note": null, + "distinguished": null, + "subreddit_id": "t5_2qhta", + "author_is_blocked": false, + "mod_reason_by": null, + "num_reports": null, + "removal_reason": null, + "link_flair_background_color": "#b3a3b3", + "id": "17i510y", + "is_robot_indexable": true, + "report_reasons": null, + "author": "Nightmare_Fire", + "discussion_type": null, + "num_comments": 41, + "send_replies": true, + "whitelist_status": "all_ads", + "contest_mode": false, + "mod_reports": [], + "author_patreon_flair": false, + "author_flair_text_color": null, + "permalink": "/r/cats/comments/17i510y/bite_disguised_as_a_yawn/", + "parent_whitelist_status": "all_ads", + "stickied": false, + "url": "https://v.redd.it/3akewp074vwb1", + "subreddit_subscribers": 4849480, + "created_utc": 1698463733.0, + "num_crossposts": 0, + "media": { + "reddit_video": { + "bitrate_kbps": 450, + "fallback_url": "https://v.redd.it/3akewp074vwb1/DASH_270.mp4?source=fallback", + "has_audio": false, + "height": 480, + "width": 262, + "scrubber_media_url": "https://v.redd.it/3akewp074vwb1/DASH_96.mp4", + "dash_url": "https://v.redd.it/3akewp074vwb1/DASHPlaylist.mpd?a=1701103408%2CODBiZjcyYmZlMGNhYzEzMTEzODU2NGI4OWZjZWEyZTEyNzFiZjFiNzNiZGU4Y2QzNmMzNWYzMzVhZTQ0M2M3Mg%3D%3D&v=1&f=sd", + "duration": 10, + "hls_url": "https://v.redd.it/3akewp074vwb1/HLSPlaylist.m3u8?a=1701103408%2CMTE4MmNiZTE1MzMzNjRlNTllMTdhMjllODVkOTc5MDgwZWEyN2U1YTM2YTFmNGQ0MGY1YzU1MTZkOTA2YjU1Mg%3D%3D&v=1&f=sd", + "is_gif": false, + "transcoding_status": "completed" + } + }, + "is_video": true + } + } + ], + "before": null + } +} \ No newline at end of file From 79a9fce4f57c41fe23a6e1c70c5313f8698e0a2f Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 29 Oct 2023 11:44:25 +0200 Subject: [PATCH 31/93] migrated PhotoGroupPost#photoUrlsPages to LinkedList> --- .../yvasyliev/model/dto/post/PhotoGroupPost.java | 9 +++++---- .../deserializers/mappers/PhotoGroupPostMapper.java | 13 +++++++------ .../telegram/posts/PhotoGroupPostService.java | 10 +++++----- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java index 1a80672..2906268 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java @@ -1,15 +1,16 @@ package com.github.yvasyliev.model.dto.post; -import java.util.List; +import java.util.LinkedList; +import java.util.Queue; public class PhotoGroupPost extends SpoilerablePost { - private List> photoUrlsPages; + private LinkedList> photoUrlsPages; // TODO: 10/29/2023 Migrate to JDK 21 and replace with List> - public List> getPhotoUrlsPages() { + public LinkedList> getPhotoUrlsPages() { return photoUrlsPages; } - public void setPhotoUrlsPages(List> photoUrlsPages) { + public void setPhotoUrlsPages(LinkedList> photoUrlsPages) { this.photoUrlsPages = photoUrlsPages; } diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java index 0891d3b..96f6116 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java @@ -7,9 +7,12 @@ import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.util.ArrayDeque; import java.util.Comparator; +import java.util.LinkedList; import java.util.List; import java.util.Optional; +import java.util.Queue; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -33,18 +36,16 @@ public Optional applyWithException(JsonNode jsonPost) { return Optional.empty(); } - private List> extractPhotoUrlsPages(JsonNode post) { + private LinkedList> extractPhotoUrlsPages(JsonNode post) { var photoUrls = extractPhotoUrls(post); - return IntStream + return new LinkedList<>(IntStream .range(0, photoUrls.size()) .boxed() .collect(Collectors.groupingBy( i -> i / pageSize, - Collectors.mapping(photoUrls::get, Collectors.toList()) + Collectors.mapping(photoUrls::get, Collectors.toCollection(ArrayDeque::new)) )) - .values() - .stream() - .toList(); + .values()); } private List extractPhotoUrls(JsonNode post) { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 0d0a821..69a973d 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Queue; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.ExecutionException; @@ -47,7 +48,7 @@ public Optional> applyWithException(String chatId, PhotoGroupPost ? responseReader.applyWithException("responses/photogroup.md").formatted(text) : text; - var sendMediaGroup = sendMediaGroup(chatId, pages.get(0), hasSpoiler, null); // TODO: 10/16/2023 replace pages.get(0) + var sendMediaGroup = sendMediaGroup(chatId, pages.getFirst(), hasSpoiler, null); sendMediaGroup.getMedias().get(0).setCaption(caption); var publishedPost = redTelBot.execute(sendMediaGroup); @@ -74,17 +75,16 @@ private List sendDelayed(String chatId, int replyToMessageId, PhotoGrou var pages = post.getPhotoUrlsPages(); var hasSpoiler = post.isHasSpoiler(); var messages = new ArrayList(); - for (var i = 1; i < pages.size(); i++) { - var page = pages.get(i); + for (var page : pages.subList(1, pages.size())) { messages.addAll(page.size() > 1 ? executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)) - : List.of(executeDelayed(sendPhoto(chatId, page.get(0), hasSpoiler, replyToMessageId))) + : List.of(executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId))) ); } return messages; } - private SendMediaGroup sendMediaGroup(String chatId, List page, boolean hasSpoiler, Integer replyToMessageId) { + private SendMediaGroup sendMediaGroup(String chatId, Queue page, boolean hasSpoiler, Integer replyToMessageId) { var inputMediaPhotos = page .stream() .map(photoUrl -> (InputMedia) InputMediaPhoto From 6d58ae36b6f51030ecbbbf014cf4023f4570d35c Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 29 Oct 2023 14:14:17 +0200 Subject: [PATCH 32/93] logging url --- .../github/yvasyliev/service/reddit/SubredditPostSupplier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java index 3c4dcc5..34ea420 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java @@ -61,7 +61,7 @@ public List getWithException() throws Exception { LOGGER.error( "Failed to deserialize post. Created: {}, URL: {}", data.get("created").intValue(), - data.get("url_overridden_by_dest").textValue(), + data.get("url").textValue(), e ); return null; From 8f8b13d508b2dff05d47237f505712bbd9d62629 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 29 Oct 2023 14:22:45 +0200 Subject: [PATCH 33/93] created log4j2.xml --- src/test/resources/log4j2.xml | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/test/resources/log4j2.xml diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml new file mode 100644 index 0000000..431bb34 --- /dev/null +++ b/src/test/resources/log4j2.xml @@ -0,0 +1,40 @@ + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss} %p %m%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 7630f923f141e7ef63a32bc3dc81b77c04dfe007 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Fri, 3 Nov 2023 17:30:22 +0200 Subject: [PATCH 34/93] renamed env variables, updated logging messages --- .../java/com/github/yvasyliev/bots/telegram/RedTelBot.java | 5 +++-- .../yvasyliev/bots/telegram/notifier/AdminNotifier.java | 2 +- .../com/github/yvasyliev/config/RedTelBotConfiguration.java | 2 +- .../com/github/yvasyliev/service/telegram/commands/Stop.java | 2 +- src/main/resources/responses/stop.md | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index 6e97a00..a9d771e 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -43,17 +43,18 @@ public class RedTelBot extends AbstractRedTelBot { @Autowired private PostManager postManager; - public RedTelBot(@Value("${BOT_TOKEN}") String botToken) { + public RedTelBot(@Value("${telegram.bot.token}") String botToken) { super(botToken); } public void startPolling() throws TelegramApiException { botSession = context.getBean(TelegramBotsApi.class).registerBot(this); - LOGGER.info("Started polling."); + LOGGER.info("{} started long polling.", getBotUsername()); } public void stopPolling() { botSession.stop(); + LOGGER.info("{} stopped long polling.", getBotUsername()); } @Override diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java index 617827d..ab5c6f9 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java @@ -19,7 +19,7 @@ public class AdminNotifier extends AbstractRedTelBot implements TelegramNotifier @Value("4096") private int charactersLimit; - public AdminNotifier(@Value("${BOT_TOKEN}") String botToken) { + public AdminNotifier(@Value("${telegram.bot.token}") String botToken) { super(botToken); } diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java index e6528b4..2742451 100644 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -66,7 +66,7 @@ public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { } @Bean - public RedTelBot redTelBot(@Value("${BOT_TOKEN}") String botToken) { + public RedTelBot redTelBot(@Value("${telegram.bot.token}") String botToken) { return new RedTelBot(botToken); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java index 8432a8f..3183ce3 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -18,6 +18,6 @@ public class Stop extends AdminCommand { public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.stopPublishing(); redTelBot.stopPolling(); - reply(message, "responses/stop.md"); + reply(message, "responses/stop.md", redTelBot.getBotUsername()); } } diff --git a/src/main/resources/responses/stop.md b/src/main/resources/responses/stop.md index 8a0ab22..2955184 100644 --- a/src/main/resources/responses/stop.md +++ b/src/main/resources/responses/stop.md @@ -1 +1 @@ -😔 Stopping bot... \ No newline at end of file +😔 %s has stopped... \ No newline at end of file From 0af93d07968e8289b4ec4c38255e104212b74953 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 20:14:11 +0200 Subject: [PATCH 35/93] migrated to telegrambots-spring-boot-starter and spring boot 3 --- pom.xml | 75 ++++++++++++------- .../com/github/yvasyliev/Application.java | 36 +++++---- .../appenders/TelegramBotAppender.java | 7 +- .../yvasyliev/bots/telegram/RedTelBot.java | 18 ++++- .../bots/telegram/notifier/AdminNotifier.java | 23 ++++-- .../config/RedTelBotConfiguration.java | 9 +-- .../yvasyliev/model/dto/ChannelPost.java | 4 + .../model/events/NewChannelPost.java | 10 +++ .../service/telegram/ChatIdFactory.java | 21 ++++++ .../service/telegram/PostManager.java | 7 +- .../service/telegram/commands/Start.java | 1 - src/main/resources/application.properties | 1 + 12 files changed, 149 insertions(+), 63 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/model/dto/ChannelPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java create mode 100644 src/main/resources/application.properties diff --git a/pom.xml b/pom.xml index e828b39..d9448c3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,6 +4,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.1.5 + + com.github.yvasyliev reddit-telegram-repeater 2.3.3 @@ -79,42 +85,61 @@ - org.springframework - spring-context - 6.0.12 - - - org.telegram - telegrambots - 6.8.0 + org.springframework.boot + spring-boot-starter - - - com.fasterxml.jackson.module - jackson-module-jaxb-annotations - - + - commons-codec - commons-codec + org.springframework.boot + spring-boot-starter-logging - org.jsoup - jsoup - 1.15.4 + org.springframework.boot + spring-boot-starter-log4j2 + + + + - org.apache.logging.log4j - log4j-slf4j2-impl - 2.20.0 + org.telegram + telegrambots-spring-boot-starter + 6.8.0 + + + + + + + + + + + + + + + + + - org.apache.logging.log4j - log4j-core - 2.20.0 + org.jsoup + jsoup + 1.15.4 + + + + + + + + + + org.junit.jupiter junit-jupiter-engine diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/Application.java index 7a56875..49d468e 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/Application.java @@ -1,20 +1,30 @@ package com.github.yvasyliev; -import com.github.yvasyliev.bots.telegram.RedTelBot; -import com.github.yvasyliev.config.RedTelBotConfiguration; -import com.github.yvasyliev.service.telegram.PostManager; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import com.github.yvasyliev.service.telegram.commands.Start; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.context.ApplicationPidFileWriter; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.telegram.telegrambots.starter.TelegramBotStarterConfiguration; -public class Application { - public static void main(String[] args) throws TelegramApiException { - var context = new AnnotationConfigApplicationContext(RedTelBotConfiguration.class); - context.registerShutdownHook(); +@SpringBootApplication +public class Application extends TelegramBotStarterConfiguration { + private static ConfigurableApplicationContext context; - var redTelBot = context.getBean(RedTelBot.class); - redTelBot.startPolling(); + public static void main(String[] args) { + context = new SpringApplicationBuilder(Application.class) + .listeners(new ApplicationPidFileWriter()) + .build() + .run(args); + } + + public static ConfigurableApplicationContext getContext() { + return context; + } - var postManager = context.getBean(PostManager.class); - postManager.schedulePosting(); + @Bean("/help") + public Start help(Start start) { + return start; } } diff --git a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java index 9a6a912..39f6e75 100644 --- a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java +++ b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java @@ -1,5 +1,6 @@ package com.github.yvasyliev.appenders; +import com.github.yvasyliev.Application; import com.github.yvasyliev.bots.telegram.notifier.TelegramNotifier; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Core; @@ -13,7 +14,6 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement; import org.apache.logging.log4j.core.config.plugins.PluginFactory; import org.apache.logging.log4j.core.layout.PatternLayout; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.io.IOException; import java.io.PrintWriter; @@ -22,12 +22,9 @@ @Plugin(name = "TelegramBotAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE) public class TelegramBotAppender extends AbstractAppender { - private final TelegramNotifier telegramNotifier; protected TelegramBotAppender(String name, Filter filter, Layout layout, boolean ignoreExceptions, Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); - var applicationContext = new AnnotationConfigApplicationContext(TelegramNotifier.class.getPackageName()); - this.telegramNotifier = applicationContext.getBean(TelegramNotifier.class); } @PluginFactory @@ -47,7 +44,7 @@ public void append(LogEvent event) { } try { - telegramNotifier.applyWithException(formattedMessage); + Application.getContext().getBean(TelegramNotifier.class).applyWithException(formattedMessage); } catch (Exception e) { e.printStackTrace(System.err); } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index a9d771e..6171913 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -3,8 +3,9 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.CallbackData; +import com.github.yvasyliev.model.dto.ChannelPost; import com.github.yvasyliev.model.dto.ExternalMessageData; -import com.github.yvasyliev.service.telegram.PostManager; +import com.github.yvasyliev.model.events.NewChannelPost; import com.github.yvasyliev.service.telegram.callbacks.Callback; import com.github.yvasyliev.service.telegram.commands.Command; import org.slf4j.Logger; @@ -12,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.api.objects.CallbackQuery; import org.telegram.telegrambots.meta.api.objects.Message; @@ -19,10 +22,12 @@ import org.telegram.telegrambots.meta.api.objects.User; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.meta.generics.BotSession; +import org.telegram.telegrambots.starter.AfterBotRegistration; import java.util.Map; import java.util.Optional; +@Component public class RedTelBot extends AbstractRedTelBot { private static final Logger LOGGER = LoggerFactory.getLogger(RedTelBot.class); @@ -41,15 +46,20 @@ public class RedTelBot extends AbstractRedTelBot { private Map awaitingReplies; @Autowired - private PostManager postManager; + private ApplicationEventPublisher eventPublisher; public RedTelBot(@Value("${telegram.bot.token}") String botToken) { super(botToken); } + @AfterBotRegistration + public void setBotSession(BotSession botSession) { + this.botSession = botSession; + LOGGER.info("{} started long polling.", getBotUsername()); + } + public void startPolling() throws TelegramApiException { botSession = context.getBean(TelegramBotsApi.class).registerBot(this); - LOGGER.info("{} started long polling.", getBotUsername()); } public void stopPolling() { @@ -71,7 +81,7 @@ public void onMessageReceived(Message message) { var isAutomaticForward = message.getIsAutomaticForward(); var forwardFromMessageId = message.getForwardFromMessageId(); if (isAutomaticForward != null && isAutomaticForward && forwardFromMessageId != null) { - postManager.sendExtraPhotos(message.getMessageId(), forwardFromMessageId); + eventPublisher.publishEvent(new NewChannelPost(new ChannelPost(message.getMessageId(), forwardFromMessageId))); } else if (message.isUserMessage()) { onUserMessageReceived(message); } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java index ab5c6f9..9dddc93 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/notifier/AdminNotifier.java @@ -1,26 +1,33 @@ package com.github.yvasyliev.bots.telegram.notifier; -import com.github.yvasyliev.bots.telegram.AbstractRedTelBot; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import org.telegram.telegrambots.bots.DefaultAbsSender; +import org.telegram.telegrambots.bots.DefaultBotOptions; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @Component -public class AdminNotifier extends AbstractRedTelBot implements TelegramNotifier { +public class AdminNotifier extends DefaultAbsSender implements TelegramNotifier { + @Value("4096") + private int charactersLimit; + + @Value("${telegram.admin.id}") + private String adminId; + @Value(""" ``` %s ```""") private String messageTemplate; - @Value("4096") - private int charactersLimit; - - public AdminNotifier(@Value("${telegram.bot.token}") String botToken) { - super(botToken); + public AdminNotifier( + @Value("#{new org.telegram.telegrambots.bots.DefaultBotOptions()}") DefaultBotOptions botOptions, + @Value("${telegram.bot.token}") String botToken + ) { + super(botOptions, botToken); } @Override @@ -29,7 +36,7 @@ public Message applyWithException(String text) throws TelegramApiException { text = text.substring(0, charactersLimit); } SendMessage sendMessage = SendMessage.builder() - .chatId(getAdminId()) + .chatId(adminId) .text(messageTemplate.formatted(text)) .parseMode(ParseMode.MARKDOWN) .build(); diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java index 2742451..1e76ce2 100644 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; -import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.model.dto.ExternalMessageData; import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; @@ -65,10 +64,10 @@ public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); } - @Bean - public RedTelBot redTelBot(@Value("${telegram.bot.token}") String botToken) { - return new RedTelBot(botToken); - } +// @Bean +// public RedTelBot redTelBot(@Value("${telegram.bot.token}") String botToken) { +// return new RedTelBot(botToken); +// } @Bean public HttpClient httpClient() { diff --git a/src/main/java/com/github/yvasyliev/model/dto/ChannelPost.java b/src/main/java/com/github/yvasyliev/model/dto/ChannelPost.java new file mode 100644 index 0000000..8dead90 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/dto/ChannelPost.java @@ -0,0 +1,4 @@ +package com.github.yvasyliev.model.dto; + +public record ChannelPost(int messageId, int forwardFromMessageId) { +} diff --git a/src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java b/src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java new file mode 100644 index 0000000..db64d68 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java @@ -0,0 +1,10 @@ +package com.github.yvasyliev.model.events; + +import com.github.yvasyliev.model.dto.ChannelPost; +import org.springframework.context.ApplicationEvent; + +public class NewChannelPost extends ApplicationEvent { + public NewChannelPost(ChannelPost channelPost) { + super(channelPost); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java b/src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java new file mode 100644 index 0000000..4ce6c46 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java @@ -0,0 +1,21 @@ +package com.github.yvasyliev.service.telegram; + +import com.github.yvasyliev.model.dto.post.Post; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.util.function.Function; + +@Component +public class ChatIdFactory implements Function { + @Value("${telegram.admin.id}") + private String adminId; + + @Value("${telegram.channel.id}") + private String channelId; + + @Override + public String apply(Post post) { + return post.isApproved() ? channelId : adminId; + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index c15300f..5615cf4 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.model.dto.ChannelPost; import com.github.yvasyliev.model.dto.RedditPostDecisionData; import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.reddit.SubredditPostSupplier; @@ -13,6 +14,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; @@ -114,9 +116,10 @@ public void stopPublishing() { executorService.shutdown(); } - public void sendExtraPhotos(int replyToMessageId, int forwardMessageId) { + @EventListener + public void sendExtraPhotos(ChannelPost channelPost) { try { - photoGroupPostService.sendExtraPhotos(replyToMessageId, forwardMessageId); + photoGroupPostService.sendExtraPhotos(channelPost.messageId(), channelPost.forwardFromMessageId()); } catch (TelegramApiException e) { LOGGER.error("Failed to send extra photos.", e); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java index 0d10aea..fac6654 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java @@ -10,7 +10,6 @@ import java.net.URISyntaxException; @Service("/start") -@Qualifier("/help") public class Start extends Command { @Value("${telegram.channel.name}") private String telegramChannelName; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..ba17f62 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.main.web-application-type=none \ No newline at end of file From 02aaa4b737b9003af0fd0c6bbec8c12f9a874217 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 20:44:54 +0200 Subject: [PATCH 36/93] migrated to spring-boot-starter-test --- pom.xml | 11 ++-------- .../bots/telegram/AbstractRedTelBot.java | 4 ++-- .../tc/RedditPhotoGroupPostTest.java | 20 ------------------- 3 files changed, 4 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index d9448c3..513c717 100644 --- a/pom.xml +++ b/pom.xml @@ -141,15 +141,8 @@ - org.junit.jupiter - junit-jupiter-engine - 5.10.0 - test - - - org.springframework - spring-test - 6.0.13 + org.springframework.boot + spring-boot-starter-test test diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java index 7627069..eade0a9 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java @@ -8,10 +8,10 @@ public abstract class AbstractRedTelBot extends TelegramLongPollingBot { @Value("${BOT_USERNAME}") private String botUsername; - @Value("${ADMIN_ID}") + @Value("${telegram.admin.id}") private String adminId; - @Value("${CHANNEL_ID}") + @Value("${telegram.channel.id}") private String channelId; @Value("${GROUP_ID}") diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java index 55975e7..a377c9d 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java @@ -1,15 +1,9 @@ package com.github.yvasyliev.tc; -import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.springframework.beans.factory.annotation.Autowired; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import java.util.concurrent.TimeUnit; @@ -20,26 +14,12 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -@TestInstance(TestInstance.Lifecycle.PER_CLASS) class RedditPhotoGroupPostTest extends AbstractRedditPostTest { - @Autowired - RedTelBot redTelBot; - - @BeforeAll - void startBot() throws TelegramApiException { - redTelBot.startPolling(); - } - @BeforeEach void waitABit() throws InterruptedException { TimeUnit.SECONDS.sleep(10); } - @AfterAll - void stopBot() { - redTelBot.stopPolling(); - } - @Test void postApproved() { assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(photoGroupPost().getAuthor())); From 8f49c41e8f3503f98ebd40cd50f721a7a298d059 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 21:05:34 +0200 Subject: [PATCH 37/93] code cleanup --- pom.xml | 31 ------------------- .../yvasyliev/tc/AbstractRedditPostTest.java | 9 ++---- 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/pom.xml b/pom.xml index 513c717..4b9efe7 100644 --- a/pom.xml +++ b/pom.xml @@ -99,47 +99,16 @@ org.springframework.boot spring-boot-starter-log4j2 - - - - org.telegram telegrambots-spring-boot-starter 6.8.0 - - - - - - - - - - - - - - - - - org.jsoup jsoup 1.15.4 - - - - - - - - - - org.springframework.boot spring-boot-starter-test diff --git a/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java index 6b290b5..64d8507 100644 --- a/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java @@ -1,20 +1,17 @@ package com.github.yvasyliev.tc; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.config.RedTelBotConfiguration; +import com.github.yvasyliev.Application; import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.PostManager; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.core.io.ClassPathResource; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.io.IOException; -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = RedTelBotConfiguration.class) +@SpringBootTest(classes = Application.class) abstract class AbstractRedditPostTest { @Autowired ObjectMapper objectMapper; From 1913b7016522e7bd8892518a8222436bde048eca Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 21:05:57 +0200 Subject: [PATCH 38/93] stopping polling --- .../yvasyliev/tc/RedditPhotoGroupPostTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java index a377c9d..9cd2492 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java @@ -1,9 +1,13 @@ package com.github.yvasyliev.tc; +import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.springframework.beans.factory.annotation.Autowired; import java.util.concurrent.TimeUnit; @@ -14,12 +18,21 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +@TestInstance(TestInstance.Lifecycle.PER_CLASS) class RedditPhotoGroupPostTest extends AbstractRedditPostTest { + @Autowired + RedTelBot redTelBot; + @BeforeEach void waitABit() throws InterruptedException { TimeUnit.SECONDS.sleep(10); } + @AfterAll + void stopBot() { + redTelBot.stopPolling(); + } + @Test void postApproved() { assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(photoGroupPost().getAuthor())); From 801ad57c4105e6357f0c888e5a4b5ad72cb1a04a Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 21:28:04 +0200 Subject: [PATCH 39/93] @PreDestroy RedTelBot#stopPolling --- .../github/yvasyliev/bots/telegram/RedTelBot.java | 3 +++ .../yvasyliev/tc/RedditPhotoGroupPostTest.java | 13 ------------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index 6171913..48b0a87 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -8,6 +8,7 @@ import com.github.yvasyliev.model.events.NewChannelPost; import com.github.yvasyliev.service.telegram.callbacks.Callback; import com.github.yvasyliev.service.telegram.commands.Command; +import jakarta.annotation.PreDestroy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -60,8 +61,10 @@ public void setBotSession(BotSession botSession) { public void startPolling() throws TelegramApiException { botSession = context.getBean(TelegramBotsApi.class).registerBot(this); + LOGGER.info("{} started long polling.", getBotUsername()); } + @PreDestroy public void stopPolling() { botSession.stop(); LOGGER.info("{} stopped long polling.", getBotUsername()); diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java index 9cd2492..a377c9d 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java @@ -1,13 +1,9 @@ package com.github.yvasyliev.tc; -import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.springframework.beans.factory.annotation.Autowired; import java.util.concurrent.TimeUnit; @@ -18,21 +14,12 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -@TestInstance(TestInstance.Lifecycle.PER_CLASS) class RedditPhotoGroupPostTest extends AbstractRedditPostTest { - @Autowired - RedTelBot redTelBot; - @BeforeEach void waitABit() throws InterruptedException { TimeUnit.SECONDS.sleep(10); } - @AfterAll - void stopBot() { - redTelBot.stopPolling(); - } - @Test void postApproved() { assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(photoGroupPost().getAuthor())); From 6036e96031a6aa5242af7cc98d79cf44a80ae497 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 21:47:15 +0200 Subject: [PATCH 40/93] removed RedTelBotConfiguration.java --- .../com/github/yvasyliev/Application.java | 108 +++++++++++++++ .../config/RedTelBotConfiguration.java | 126 ------------------ 2 files changed, 108 insertions(+), 126 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/Application.java index 49d468e..3feb0f8 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/Application.java @@ -1,12 +1,36 @@ package com.github.yvasyliev; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.github.yvasyliev.model.dto.ExternalMessageData; +import com.github.yvasyliev.model.dto.post.PhotoGroupPost; +import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.telegram.commands.Start; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.ApplicationPidFileWriter; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Scope; +import org.telegram.telegrambots.meta.TelegramBotsApi; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.starter.TelegramBotStarterConfiguration; +import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; + +import java.io.File; +import java.net.http.HttpClient; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; @SpringBootApplication public class Application extends TelegramBotStarterConfiguration { @@ -27,4 +51,88 @@ public static ConfigurableApplicationContext getContext() { public Start help(Start start) { return start; } + + @Bean + public TelegramBotsApi telegramBotsApi() throws TelegramApiException { + return new TelegramBotsApi(DefaultBotSession.class); + } + + @Bean + public ObjectMapper objectMapper(JsonDeserializer postJsonDeserializer) { + var mapper = new ObjectMapper(); + mapper.registerModule(module(postJsonDeserializer)); + return mapper; + } + + @Bean + public Module module(JsonDeserializer postJsonDeserializer) { + var module = new SimpleModule(); + module.addDeserializer(Post.class, postJsonDeserializer); + return module; + } + + @Bean + public ScheduledExecutorService scheduledExecutorService() { + return Executors.newSingleThreadScheduledExecutor(); + } + + @Bean + public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { + return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); + } + + @Bean + public HttpClient httpClient() { + return HttpClient.newHttpClient(); + } + + @Bean + public File stateSrc() { + return new File("state.json"); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map synchronizedFixedSizeMap(@Value("16") int maxSize) { + return Collections.synchronizedMap(new LinkedHashMap<>(maxSize) { + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() >= maxSize; + } + }); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map integerPostMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map integerPhotoGroupPostMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map longStringMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } + + @Bean + @Scope(BeanDefinition.SCOPE_PROTOTYPE) + public Map longExternalMessageDataMap(@Value("16") int maxSize) { + return synchronizedFixedSizeMap(maxSize); + } + + @Bean + public Executor delayedExecutor() { + return CompletableFuture.delayedExecutor(10, TimeUnit.SECONDS, singleThreadExecutor()); + } + + @Bean + public Executor singleThreadExecutor() { + return Executors.newSingleThreadExecutor(); + } } diff --git a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java b/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java deleted file mode 100644 index 1e76ce2..0000000 --- a/src/main/java/com/github/yvasyliev/config/RedTelBotConfiguration.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.github.yvasyliev.config; - -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.Module; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.github.yvasyliev.model.dto.ExternalMessageData; -import com.github.yvasyliev.model.dto.post.PhotoGroupPost; -import com.github.yvasyliev.model.dto.post.Post; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; -import org.telegram.telegrambots.meta.TelegramBotsApi; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; -import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; - -import java.io.File; -import java.net.http.HttpClient; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -@Configuration -@ComponentScan("com.github.yvasyliev.service") -public class RedTelBotConfiguration { - @Autowired - private JsonDeserializer postJsonDeserializer; - - @Bean - public TelegramBotsApi telegramBotsApi() throws TelegramApiException { - return new TelegramBotsApi(DefaultBotSession.class); - } - - @Bean - public ObjectMapper objectMapper() { - var mapper = new ObjectMapper(); - mapper.registerModule(module()); - return mapper; - } - - @Bean - public Module module() { - var module = new SimpleModule(); - module.addDeserializer(Post.class, postJsonDeserializer); - return module; - } - - @Bean - public ScheduledExecutorService scheduledExecutorService() { - return Executors.newSingleThreadScheduledExecutor(); - } - - @Bean - public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { - return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); - } - -// @Bean -// public RedTelBot redTelBot(@Value("${telegram.bot.token}") String botToken) { -// return new RedTelBot(botToken); -// } - - @Bean - public HttpClient httpClient() { - return HttpClient.newHttpClient(); - } - - @Bean - public File stateSrc() { - return new File("state.json"); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map synchronizedFixedSizeMap(@Value("16") int maxSize) { - return Collections.synchronizedMap(new LinkedHashMap<>(maxSize) { - @Override - protected boolean removeEldestEntry(Map.Entry eldest) { - return size() >= maxSize; - } - }); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map integerPostMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map integerPhotoGroupPostMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map longStringMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map longExternalMessageDataMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - - @Bean - public Executor delayedExecutor() { - return CompletableFuture.delayedExecutor(10, TimeUnit.SECONDS, singleThreadExecutor()); - } - - @Bean - public Executor singleThreadExecutor() { - return Executors.newSingleThreadExecutor(); - } -} From 3eb509f92b5d3e380bee817aeff20b67c5c22ee9 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 23:44:42 +0200 Subject: [PATCH 41/93] optimized GifPostMapper logic --- .../deserializers/mappers/GifPostMapper.java | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java index 9b94498..af5ffe0 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java @@ -4,6 +4,7 @@ import com.github.yvasyliev.model.dto.post.GifPost; import com.github.yvasyliev.model.dto.post.Post; import org.springframework.core.annotation.Order; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import java.util.Optional; @@ -12,19 +13,12 @@ @Order(4) public class GifPostMapper implements PostMapper { @Override - public Optional applyWithException(JsonNode jsonPost) { + @NonNull + public Optional applyWithException(@NonNull JsonNode jsonPost) { if (isGif(jsonPost)) { - var gifUrl = jsonPost - .get("preview") - .get("images") - .get(0) - .get("variants") - .get("mp4") - .get("source") - .get("url") - .textValue(); + var gifUrl = jsonPost.requiredAt("/preview/images/0/variants/mp4/source/url").textValue(); var post = new GifPost(); - post.setText(jsonPost.get("title").textValue()); + post.setText(jsonPost.path("title").textValue()); post.setMediaUrl(gifUrl); post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); return Optional.of(post); @@ -32,9 +26,8 @@ public Optional applyWithException(JsonNode jsonPost) { return Optional.empty(); } - private boolean isGif(JsonNode data) { - return data.has("url_overridden_by_dest") - && data.get("url_overridden_by_dest").textValue().endsWith(".gif") - && data.get("preview").get("images").get(0).get("variants").has("mp4"); + private boolean isGif(JsonNode jsonPost) { + return jsonPost.path("url_overridden_by_dest").textValue().endsWith(".gif") + && !jsonPost.at("/preview/images/0/variants/mp4").isMissingNode(); } } From 521ca1a5ccf501ad7e5b2aebc3f0fe63e35b29a9 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 4 Nov 2023 23:46:55 +0200 Subject: [PATCH 42/93] sending gifs as mp4 --- .../service/telegram/posts/GifPostService.java | 10 +++++++++- .../service/telegram/posts/PostService.java | 12 ++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java index 977d8df..d402d5f 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java @@ -2,18 +2,21 @@ import com.github.yvasyliev.model.dto.post.GifPost; import com.github.yvasyliev.model.dto.post.Post; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendAnimation; import org.telegram.telegrambots.meta.api.objects.InputFile; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import java.net.URISyntaxException; import java.util.Optional; @Service(Post.Type.GIF) public class GifPostService extends PostService { @Override - public Optional applyWithException(String chatId, GifPost post) throws TelegramApiException { + @NonNull + public Optional applyWithException(@NonNull String chatId, @NonNull GifPost post) throws TelegramApiException { return Optional.ofNullable(sendWithInputStream((inputStream, filename) -> { var sendAnimation = SendAnimation.builder() .chatId(chatId) @@ -25,4 +28,9 @@ public Optional applyWithException(String chatId, GifPost post) throws return redTelBot.execute(sendAnimation); }, post)); } + + @Override + protected String parseFilename(String mediaUrl) throws URISyntaxException { + return super.parseFilename(mediaUrl).replace(".gif", ".mp4"); + } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java index f48dd32..6d05d97 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java @@ -3,13 +3,16 @@ import com.github.yvasyliev.bots.telegram.RedTelBot; import com.github.yvasyliev.model.dto.post.MediaPost; import com.github.yvasyliev.model.dto.post.Post; +import org.apache.http.client.utils.URIBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.function.ThrowingBiFunction; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import java.io.InputStream; +import java.net.URISyntaxException; import java.net.URL; +import java.util.ArrayDeque; import java.util.Optional; public abstract class PostService implements ThrowingBiFunction> { @@ -19,13 +22,14 @@ public abstract class PostService implements ThrowingBiFuncti protected Message sendWithInputStream(ThrowingBiFunction telegramApiCall, MediaPost post) throws TelegramApiException { var mediaUrl = post.getMediaUrl(); try (var inputStream = new URL(mediaUrl).openStream()) { - var filename = mediaUrl.substring(mediaUrl.lastIndexOf('/') + 1); - if (filename.contains("?")) { - filename = filename.substring(0, filename.indexOf("?")); - } + var filename = parseFilename(mediaUrl); return telegramApiCall.applyWithException(inputStream, filename); } catch (Exception e) { throw new TelegramApiException(e); } } + + protected String parseFilename(String mediaUrl) throws URISyntaxException { + return new ArrayDeque<>(new URIBuilder(mediaUrl).getPathSegments()).getLast(); + } } From c5081e408f47a0ecfac6cc4d3f7d3621fae0cd21 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 5 Nov 2023 11:45:15 +0200 Subject: [PATCH 43/93] simplified GifPostMapper --- .github/workflows/release.yml | 100 +++++++++++++++++- .../deserializers/mappers/GifPostMapper.java | 22 ++-- 2 files changed, 107 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8d8a781..c61105d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,15 +3,109 @@ name: Release on: workflow_dispatch: inputs: - version: - description: "Release version" - required: true + release_type: + description: "Release type" + type: choice + options: + - patch + - minor + - major + - provided env: JAR_NAME_TEMPLATE: reddit-telegram-repeater-*-shaded.jar TAG: v${{ github.event.inputs.version }} jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'corretto' + cache: maven + - name: Run test + run: mvn test + env: + telegram.admin.id: ${{ secrets.telegram.admin.id }} + telegram.bot.token: ${{ secrets.test.telegram.bot.token }} + telegram.channel.id: ${{ secrets.test.telegram.channel.id }} + telegram.chat.id: ${{ secrets.test.telegram.chat.id }} + + release: + runs-on: ubuntu-latest + needs: test + steps: + - name: Install XMLStarlet + run: sudo apt-get install xmlstarlet + - name: Checkout + uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'corretto' + cache: maven + - name: Get current version + id: get_current_version + run: | + current_version=$(xmlstarlet sel -N pom=http://maven.apache.org/POM/4.0.0 -t -v "/pom:project/pom:version" pom.xml) + echo "current_version=$current_version" + echo "VERSION=$current_version" >> $GITHUB_ENV + - name: Validate current version + if: github.event.inputs.release_type != 'provided' + run: | + echo ${{ env.VERSION }} | grep -qoP "^\d+\.\d+\.\d+((\.|-).+)?$" || (echo "::error::Unexpected artifact version found in pom.xml: ${{ env.VERSION }}. Expected format: x.y.z*" && exit 1) + - name: Increment patch version + if: github.event.inputs.release_type == 'patch' + run: | + patch_version=$(echo ${{ env.VERSION }} | grep -oP "^\d+\.\d+\.\K\d+") + echo "patch_version=$patch_version" + incremented_patch_version=$((patch_version + 1)) + echo "incremented_patch_version=$incremented_patch_version" + echo "VERSION=$(echo ${{ env.VERSION }} | grep -oP '^\d+\.\d+\.')$incremented_patch_version" >> $GITHUB_ENV + - name: Increment minor version + if: github.event.inputs.release_type == 'minor' + run: | + minor_version=$(echo ${{ env.VERSION }} | grep -oP "^\d+\.\K\d+") + echo "minor_version=$minor_version" + incremented_minor_version=$((minor_version + 1)) + echo "incremented_minor_version=$incremented_minor_version" + echo "VERSION=$(echo ${{ env.VERSION }} | grep -oP '^\d+\.')$incremented_minor_version.0" >> $GITHUB_ENV + - name: Increment major version + if: github.event.inputs.release_type == 'major' + run: | + major_version=$(echo ${{ env.VERSION }} | grep -oP "^\d+") + echo "major_version=$major_version" + incremented_major_version=$((major_version + 1)) + echo "incremented_major_version=$incremented_major_version" + echo "VERSION=$incremented_major_version.0.0" >> $GITHUB_ENV + - name: Print new version + run: echo "new_version=${{ env.VERSION }}" + - name: Update pom.xml version + run: xmlstarlet ed -P -L -N pom=http://maven.apache.org/POM/4.0.0 -u "/pom:project/pom:version" -v ${{ env.VERSION }} pom.xml + - name: Set Tag name + run: echo "TAG=v${{ env.VERSION }}" >> $GITHUB_ENV + - name: Commit & Push changes + run: | + git config user.email "github-actions@github.com" + git config user.name "github-actions" + git add pom.xml + git commit -m "${{ env.TAG }}" + git push + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.TAG }} + release_name: ${{ env.TAG }} + draft: true check_input: runs-on: ubuntu-latest steps: diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java index af5ffe0..c392906 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/GifPostMapper.java @@ -15,19 +15,17 @@ public class GifPostMapper implements PostMapper { @Override @NonNull public Optional applyWithException(@NonNull JsonNode jsonPost) { - if (isGif(jsonPost)) { - var gifUrl = jsonPost.requiredAt("/preview/images/0/variants/mp4/source/url").textValue(); - var post = new GifPost(); - post.setText(jsonPost.path("title").textValue()); - post.setMediaUrl(gifUrl); - post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); - return Optional.of(post); + var url = jsonPost.at("/preview/images/0/variants/mp4/source/url"); + + if (url.isMissingNode()) { + return Optional.empty(); } - return Optional.empty(); - } - private boolean isGif(JsonNode jsonPost) { - return jsonPost.path("url_overridden_by_dest").textValue().endsWith(".gif") - && !jsonPost.at("/preview/images/0/variants/mp4").isMissingNode(); + var gifUrl = url.textValue(); + var post = new GifPost(); + post.setText(jsonPost.get("title").textValue()); + post.setMediaUrl(gifUrl); + post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); + return Optional.of(post); } } From 264f7d863d25f96c6f213ad13a9f6c86425d7f20 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 5 Nov 2023 18:51:51 +0200 Subject: [PATCH 44/93] optimized PhotoGroupPost usage --- .../github/yvasyliev/bots/telegram/RedTelBot.java | 4 ++-- .../yvasyliev/model/dto/post/PhotoGroupPost.java | 7 +++---- .../yvasyliev/model/events/NewChannelPost.java | 10 ---------- .../model/events/NewChannelPostEvent.java | 14 ++++++++++++++ .../mappers/PhotoGroupPostMapper.java | 9 +++++---- .../service/reddit/SubredditNewSupplier.java | 2 ++ .../service/reddit/SubredditPostSupplier.java | 2 ++ .../yvasyliev/service/telegram/PostManager.java | 5 +++-- .../telegram/posts/PhotoGroupPostService.java | 12 ++++++++---- .../yvasyliev/tc/AbstractRedditPostTest.java | 3 +-- .../com/github/yvasyliev/tc/RedditGifPostTest.java | 8 ++++++++ .../yvasyliev/tc/RedditPhotoGroupPostTest.java | 6 +++--- 12 files changed, 51 insertions(+), 31 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java create mode 100644 src/main/java/com/github/yvasyliev/model/events/NewChannelPostEvent.java diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index 48b0a87..68a5d9b 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -5,7 +5,7 @@ import com.github.yvasyliev.model.dto.CallbackData; import com.github.yvasyliev.model.dto.ChannelPost; import com.github.yvasyliev.model.dto.ExternalMessageData; -import com.github.yvasyliev.model.events.NewChannelPost; +import com.github.yvasyliev.model.events.NewChannelPostEvent; import com.github.yvasyliev.service.telegram.callbacks.Callback; import com.github.yvasyliev.service.telegram.commands.Command; import jakarta.annotation.PreDestroy; @@ -84,7 +84,7 @@ public void onMessageReceived(Message message) { var isAutomaticForward = message.getIsAutomaticForward(); var forwardFromMessageId = message.getForwardFromMessageId(); if (isAutomaticForward != null && isAutomaticForward && forwardFromMessageId != null) { - eventPublisher.publishEvent(new NewChannelPost(new ChannelPost(message.getMessageId(), forwardFromMessageId))); + eventPublisher.publishEvent(new NewChannelPostEvent(new ChannelPost(message.getMessageId(), forwardFromMessageId))); } else if (message.isUserMessage()) { onUserMessageReceived(message); } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java index 2906268..c090818 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java @@ -1,16 +1,15 @@ package com.github.yvasyliev.model.dto.post; -import java.util.LinkedList; import java.util.Queue; public class PhotoGroupPost extends SpoilerablePost { - private LinkedList> photoUrlsPages; // TODO: 10/29/2023 Migrate to JDK 21 and replace with List> + private Queue> photoUrlsPages; // TODO: 10/29/2023 Migrate to JDK 21 and replace with List> - public LinkedList> getPhotoUrlsPages() { + public Queue> getPhotoUrlsPages() { return photoUrlsPages; } - public void setPhotoUrlsPages(LinkedList> photoUrlsPages) { + public void setPhotoUrlsPages(Queue> photoUrlsPages) { this.photoUrlsPages = photoUrlsPages; } diff --git a/src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java b/src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java deleted file mode 100644 index db64d68..0000000 --- a/src/main/java/com/github/yvasyliev/model/events/NewChannelPost.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.github.yvasyliev.model.events; - -import com.github.yvasyliev.model.dto.ChannelPost; -import org.springframework.context.ApplicationEvent; - -public class NewChannelPost extends ApplicationEvent { - public NewChannelPost(ChannelPost channelPost) { - super(channelPost); - } -} diff --git a/src/main/java/com/github/yvasyliev/model/events/NewChannelPostEvent.java b/src/main/java/com/github/yvasyliev/model/events/NewChannelPostEvent.java new file mode 100644 index 0000000..12ed9a1 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/events/NewChannelPostEvent.java @@ -0,0 +1,14 @@ +package com.github.yvasyliev.model.events; + +import com.github.yvasyliev.model.dto.ChannelPost; +import org.springframework.context.ApplicationEvent; + +public class NewChannelPostEvent extends ApplicationEvent { + public NewChannelPostEvent(ChannelPost channelPost) { + super(channelPost); + } + + public ChannelPost getChannelPost() { + return (ChannelPost) getSource(); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java index 96f6116..231869f 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoGroupPostMapper.java @@ -5,11 +5,11 @@ import com.github.yvasyliev.model.dto.post.Post; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import java.util.ArrayDeque; import java.util.Comparator; -import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.Queue; @@ -23,6 +23,7 @@ public class PhotoGroupPostMapper implements PostMapper { private int pageSize; @Override + @NonNull public Optional applyWithException(JsonNode jsonPost) { if (jsonPost.has("gallery_data")) { var photoUrlsPages = extractPhotoUrlsPages(jsonPost); @@ -36,9 +37,9 @@ public Optional applyWithException(JsonNode jsonPost) { return Optional.empty(); } - private LinkedList> extractPhotoUrlsPages(JsonNode post) { + private Queue> extractPhotoUrlsPages(JsonNode post) { var photoUrls = extractPhotoUrls(post); - return new LinkedList<>(IntStream + return new ArrayDeque<>(IntStream .range(0, photoUrls.size()) .boxed() .collect(Collectors.groupingBy( @@ -49,7 +50,7 @@ private LinkedList> extractPhotoUrlsPages(JsonNode post) { } private List extractPhotoUrls(JsonNode post) { - var items = post.get("gallery_data").get("items").elements(); + var items = post.requiredAt("/gallery_data/items").elements(); return stream(items) .map(item -> { var mediaId = item.get("media_id").textValue(); diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java index dd1cc63..c20f396 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java @@ -5,6 +5,7 @@ import com.github.yvasyliev.model.dto.RedditAccessToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.springframework.util.function.ThrowingSupplier; @@ -31,6 +32,7 @@ public class SubredditNewSupplier implements ThrowingSupplier { private ThrowingSupplier redditAccessTokenSupplier; @Override + @NonNull public JsonNode getWithException() throws Exception { var redditAccessToken = redditAccessTokenSupplier.getWithException(); var authorization = "Bearer %s".formatted(redditAccessToken.token()); diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java index 34ea420..17b3e8a 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java @@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.springframework.util.function.ThrowingSupplier; @@ -37,6 +38,7 @@ public class SubredditPostSupplier implements ThrowingSupplier> { private ObjectMapper objectMapper; @Override + @NonNull public List getWithException() throws Exception { var subredditPosts = subredditNewSupplier.getWithException(); var children = subredditPosts diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 5615cf4..7fc68da 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -3,9 +3,9 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.bots.telegram.RedTelBot; -import com.github.yvasyliev.model.dto.ChannelPost; import com.github.yvasyliev.model.dto.RedditPostDecisionData; import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.events.NewChannelPostEvent; import com.github.yvasyliev.service.reddit.SubredditPostSupplier; import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.posts.PhotoGroupPostService; @@ -117,7 +117,8 @@ public void stopPublishing() { } @EventListener - public void sendExtraPhotos(ChannelPost channelPost) { + public void onNewChannelPostEvent(NewChannelPostEvent newChannelPostEvent) { + var channelPost = newChannelPostEvent.getChannelPost(); try { photoGroupPostService.sendExtraPhotos(channelPost.messageId(), channelPost.forwardFromMessageId()); } catch (TelegramApiException e) { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 69a973d..9a8eace 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -4,6 +4,7 @@ import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.telegram.readers.BotResponseReader; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; @@ -16,6 +17,7 @@ import java.io.IOException; import java.net.URISyntaxException; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -38,7 +40,8 @@ public class PhotoGroupPostService extends PostService extraPhotos; @Override - public Optional> applyWithException(String chatId, PhotoGroupPost post) throws TelegramApiException, URISyntaxException, IOException { + @NonNull + public Optional> applyWithException(@NonNull String chatId, PhotoGroupPost post) throws TelegramApiException, URISyntaxException, IOException { var pages = post.getPhotoUrlsPages(); var text = post.getText(); var hasSpoiler = post.isHasSpoiler(); @@ -48,7 +51,7 @@ public Optional> applyWithException(String chatId, PhotoGroupPost ? responseReader.applyWithException("responses/photogroup.md").formatted(text) : text; - var sendMediaGroup = sendMediaGroup(chatId, pages.getFirst(), hasSpoiler, null); + var sendMediaGroup = sendMediaGroup(chatId, pages.element(), hasSpoiler, null); sendMediaGroup.getMedias().get(0).setCaption(caption); var publishedPost = redTelBot.execute(sendMediaGroup); @@ -72,10 +75,11 @@ public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) } private List sendDelayed(String chatId, int replyToMessageId, PhotoGroupPost post) throws TelegramApiException { - var pages = post.getPhotoUrlsPages(); + var pages = new ArrayDeque<>(post.getPhotoUrlsPages()); var hasSpoiler = post.isHasSpoiler(); var messages = new ArrayList(); - for (var page : pages.subList(1, pages.size())) { + pages.removeFirst(); + for (var page : pages) { messages.addAll(page.size() > 1 ? executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)) : List.of(executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId))) diff --git a/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java index 64d8507..fb83516 100644 --- a/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java @@ -1,7 +1,6 @@ package com.github.yvasyliev.tc; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.Application; import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.PostManager; @@ -11,7 +10,7 @@ import java.io.IOException; -@SpringBootTest(classes = Application.class) +@SpringBootTest abstract class AbstractRedditPostTest { @Autowired ObjectMapper objectMapper; diff --git a/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java index 2041c5b..9fa122f 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java @@ -2,8 +2,11 @@ import com.github.yvasyliev.model.dto.post.GifPost; import com.github.yvasyliev.model.dto.post.Post; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; +import java.util.concurrent.TimeUnit; + import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -12,6 +15,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue; class RedditGifPostTest extends AbstractRedditPostTest { + @AfterAll + static void waitABit() throws InterruptedException { + TimeUnit.SECONDS.sleep(10); + } + @Test void postApproved() { assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(gifPost().getAuthor())); diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java index a377c9d..7530f94 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java @@ -2,7 +2,7 @@ import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import java.util.concurrent.TimeUnit; @@ -15,9 +15,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue; class RedditPhotoGroupPostTest extends AbstractRedditPostTest { - @BeforeEach + @AfterEach void waitABit() throws InterruptedException { - TimeUnit.SECONDS.sleep(10); + TimeUnit.SECONDS.sleep(20); } @Test From 29939c8404e118893a3ad248a57fa8d89421513c Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 6 Nov 2023 18:15:48 +0200 Subject: [PATCH 45/93] optimized PhotoPostMapper --- .../mappers/PhotoPostMapper.java | 42 ++++++++----------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java index 479aeec..fb5ecdf 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PhotoPostMapper.java @@ -18,39 +18,31 @@ public class PhotoPostMapper implements PostMapper { @Override public Optional applyWithException(JsonNode jsonPost) { - var photoUrl = extractPhotoUrl(jsonPost); - if (photoUrl != null) { - var text = jsonPost.get("title").textValue(); - var post = new PhotoPost(); - post.setText(text); - post.setMediaUrl(photoUrl); - post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); - return Optional.of(post); - } - return Optional.empty(); + return extractPhotoUrl(jsonPost) + .map(photoUrl -> { + var text = jsonPost.get("title").textValue(); + var post = new PhotoPost(); + post.setText(text); + post.setMediaUrl(photoUrl); + post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); + return post; + }); } - private String extractPhotoUrl(JsonNode post) { - if (post.has("url_overridden_by_dest")) { - var urlOverriddenByDest = post.get("url_overridden_by_dest").textValue(); - + private Optional extractPhotoUrl(JsonNode post) { + var urlOverriddenByDestNode = post.path("url_overridden_by_dest"); + if (!urlOverriddenByDestNode.isMissingNode()) { + var urlOverriddenByDest = urlOverriddenByDestNode.textValue(); if (urlOverriddenByDest.endsWith(".jpg1")) { - return urlOverriddenByDest.substring(0, urlOverriddenByDest.length() - 1); + return urlOverriddenByDest.substring(0, urlOverriddenByDest.length() - 1).describeConstable(); } if (photoExtensions.stream().anyMatch(urlOverriddenByDest::endsWith)) { - var photoUrl = post - .get("preview") - .get("images") - .get(0) - .get("source") - .get("url") - .textValue(); - - return photoUrl.contains("auto=webp") ? urlOverriddenByDest : photoUrl; + var photoUrl = post.at("/preview/images/0/source/url").asText(); + return (photoUrl.contains("auto=webp") ? urlOverriddenByDest : photoUrl).describeConstable(); } } - return null; + return Optional.empty(); } } From cc3c02a3c8f99228cbd1db7f97c4a787d9ffa539 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 6 Nov 2023 19:19:06 +0200 Subject: [PATCH 46/93] optimized PollPostMapper --- .../deserializers/mappers/PollPostMapper.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java index 6254f17..9d3cb0e 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/PollPostMapper.java @@ -13,16 +13,16 @@ public class PollPostMapper implements PostMapper { @Override public Optional applyWithException(JsonNode jsonPost) { - if (jsonPost.has("poll_data")) { - var redditOptions = jsonPost.get("poll_data").get("options").elements(); - var options = stream(redditOptions) - .map(redditOption -> redditOption.get("text").textValue()) - .toList(); - var post = new PollPost(); - post.setText(jsonPost.get("title").textValue()); - post.setOptions(options); - return Optional.of(post); - } - return Optional.empty(); + return Optional + .ofNullable(jsonPost.path("poll_data").get("options")) + .map(redditOptions -> { + var options = stream(redditOptions.elements()) + .map(redditOption -> redditOption.get("text").textValue()) + .toList(); + var post = new PollPost(); + post.setText(jsonPost.get("title").textValue()); + post.setOptions(options); + return post; + }); } } From 3c24b2c82b0fa84dc0a1b1d462d8973ad27b8814 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 6 Nov 2023 19:41:24 +0200 Subject: [PATCH 47/93] optimized TextPostMapper --- .../deserializers/mappers/TextPostMapper.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java index f954539..60aaa2d 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/TextPostMapper.java @@ -27,30 +27,31 @@ public class TextPostMapper implements PostMapper { @Override public Optional applyWithException(JsonNode jsonPost) { - if (isTextPost(jsonPost)) { - var text = postTextTemplate.formatted( - jsonPost.get("title").textValue(), - jsonPost.get("url_overridden_by_dest").textValue() - ); - - var post = new TextPost(); - post.setText(text); - return Optional.of(post); + if (!isTextPost(jsonPost)) { + return Optional.empty(); } - return Optional.empty(); + + var text = postTextTemplate.formatted( + jsonPost.get("title").textValue(), + jsonPost.get("url_overridden_by_dest").textValue() + ); + + var post = new TextPost(); + post.setText(text); + return Optional.of(post); } private boolean isTextPost(JsonNode post) { - if (post.has("post_hint")) { - var postHint = post.get("post_hint").textValue(); - if ("link".equals(postHint)) { - if (post.has("url_overridden_by_dest")) { - var urlOverriddenByDest = post.get("url_overridden_by_dest").textValue(); - return videoExtensions.stream().noneMatch(urlOverriddenByDest::endsWith); - } - return true; - } - } - return post.has("domain") && youtubeDomains.contains(post.get("domain").textValue()); + return "link".equals(post.path("post_hint").asText()) + ? allowedVideoUrl(post) + : youtubeDomains.contains(post.path("domain").asText()); + + } + + private boolean allowedVideoUrl(JsonNode post) { + return Optional + .ofNullable(post.path("url_overridden_by_dest").textValue()) + .map(urlOverriddenByDest -> videoExtensions.stream().noneMatch(urlOverriddenByDest::endsWith)) + .orElse(true); } } From 16ca2147f767361fb562d1919b39845f21ce9e0e Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 6 Nov 2023 19:52:10 +0200 Subject: [PATCH 48/93] optimized VideoPostMapper --- .../mappers/VideoPostMapper.java | 34 ++++++------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java index b855c06..15e3352 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/mappers/VideoPostMapper.java @@ -20,37 +20,23 @@ public class VideoPostMapper implements PostMapper { @Override public Optional applyWithException(JsonNode jsonPost) throws Exception { - var videoUrl = extractVideoUrl(jsonPost); - if (videoUrl != null) { + return extractVideoUrl(jsonPost).map(videoUrl -> { var post = new VideoPost(); post.setText(jsonPost.get("title").textValue()); post.setMediaUrl(videoUrl); post.setHasSpoiler("nsfw".equals(jsonPost.get("thumbnail").textValue())); - return Optional.of(post); - } - return Optional.empty(); + return post; + }); } - private String extractVideoUrl(JsonNode data) throws Exception { - if (data.get("is_video").booleanValue()) { - var redditPostUrl = "https://www.reddit.com%s".formatted(data.get("permalink").textValue()); - return redditVideoDownloadUrlProvider.applyWithException(redditPostUrl); - } - - if (data.has("media")) { - var media = data.get("media"); - if (media.has("reddit_video")) { - return media.get("reddit_video").get("fallback_url").textValue(); - } - } - - if (data.has("preview")) { - var preview = data.get("preview"); - if (preview.has("reddit_video_preview")) { - return preview.get("reddit_video_preview").get("fallback_url").textValue(); - } + private Optional extractVideoUrl(JsonNode jsonPost) throws Exception { + if (jsonPost.get("is_video").booleanValue()) { + var redditPostUrl = "https://www.reddit.com%s".formatted(jsonPost.get("permalink").textValue()); + return redditVideoDownloadUrlProvider.applyWithException(redditPostUrl).describeConstable(); } - return null; + return Optional + .ofNullable(jsonPost.at("/media/reddit_video/fallback_url").textValue()) + .or(() -> Optional.ofNullable(jsonPost.at("/preview/reddit_video_preview/fallback_url").textValue())); } } From ba0bea84985d7e6659089bef2cb76cf5c28cfbce Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 7 Nov 2023 19:56:25 +0200 Subject: [PATCH 49/93] migrated to spring-data --- pom.xml | 14 ++++++ .../com/github/yvasyliev/model/dto/State.java | 34 -------------- .../model/entities/BlockedAuthor.java | 25 +++++++++++ .../RedditTelegramForwarderProperty.java | 41 +++++++++++++++++ .../RedditTelegramForwarderPropertyName.java | 5 +++ .../service/data/BlockedAuthorService.java | 29 ++++++++++++ ...edditTelegramForwarderPropertyService.java | 28 ++++++++++++ .../deserializers/PostDeserializer.java | 12 +++-- .../service/factories/StateFactoryBean.java | 25 ----------- .../service/reddit/SubredditPostSupplier.java | 6 +-- .../repository/BlockedAuthorRepository.java | 9 ++++ ...itTelegramForwarderPropertyRepository.java | 20 +++++++++ .../yvasyliev/service/state/StateIO.java | 28 ------------ .../yvasyliev/service/state/StateManager.java | 44 ------------------- .../service/telegram/PostManager.java | 11 ++--- .../telegram/commands/AddBlockedAuthor.java | 8 ++-- .../service/telegram/commands/GetBlocked.java | 8 ++-- .../commands/RemoveBlockedAuthor.java | 10 ++--- src/main/resources/application.properties | 8 ++++ .../yvasyliev/tc/AbstractRedditPostTest.java | 4 +- .../yvasyliev/tc/RedditGifPostTest.java | 4 +- .../tc/RedditPhotoGroupPostTest.java | 6 +-- .../yvasyliev/tc/RedditPhotoPostTest.java | 4 +- .../yvasyliev/tc/RedditPollPostTest.java | 4 +- .../yvasyliev/tc/RedditTextPostTest.java | 4 +- .../yvasyliev/tc/RedditVideoPostTest.java | 4 +- 26 files changed, 221 insertions(+), 174 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/model/dto/State.java create mode 100644 src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java create mode 100644 src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java create mode 100644 src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderPropertyName.java create mode 100644 src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java create mode 100644 src/main/java/com/github/yvasyliev/service/data/RedditTelegramForwarderPropertyService.java delete mode 100644 src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java create mode 100644 src/main/java/com/github/yvasyliev/service/repository/BlockedAuthorRepository.java create mode 100644 src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java delete mode 100644 src/main/java/com/github/yvasyliev/service/state/StateIO.java delete mode 100644 src/main/java/com/github/yvasyliev/service/state/StateManager.java diff --git a/pom.xml b/pom.xml index 4b9efe7..2a42683 100644 --- a/pom.xml +++ b/pom.xml @@ -99,6 +99,10 @@ org.springframework.boot spring-boot-starter-log4j2 + + org.springframework.boot + spring-boot-starter-data-jpa + org.telegram telegrambots-spring-boot-starter @@ -109,6 +113,16 @@ jsoup 1.15.4 + + org.xerial + sqlite-jdbc + 3.43.2.2 + + + org.hibernate.orm + hibernate-community-dialects + 6.3.1.Final + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/github/yvasyliev/model/dto/State.java b/src/main/java/com/github/yvasyliev/model/dto/State.java deleted file mode 100644 index 7fa4761..0000000 --- a/src/main/java/com/github/yvasyliev/model/dto/State.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.github.yvasyliev.model.dto; - -import java.util.SortedSet; -import java.util.TreeSet; - -public class State { - private int lastCreated; - private SortedSet blockedAuthors; - - public State() { - this(0, new TreeSet<>()); - } - - public State(int lastCreated, SortedSet blockedAuthors) { - this.lastCreated = lastCreated; - this.blockedAuthors = blockedAuthors; - } - - public int getLastCreated() { - return lastCreated; - } - - public void setLastCreated(int lastCreated) { - this.lastCreated = lastCreated; - } - - public SortedSet getBlockedAuthors() { - return blockedAuthors; - } - - public void setBlockedAuthors(SortedSet blockedAuthors) { - this.blockedAuthors = blockedAuthors; - } -} diff --git a/src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java b/src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java new file mode 100644 index 0000000..bdc5539 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java @@ -0,0 +1,25 @@ +package com.github.yvasyliev.model.entities; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; + +@Entity +public class BlockedAuthor { + @Id + private String username; + + public BlockedAuthor() { + } + + public BlockedAuthor(String username) { + this.username = username; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java b/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java new file mode 100644 index 0000000..dcc7ae7 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java @@ -0,0 +1,41 @@ +package com.github.yvasyliev.model.entities; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.Id; + +@Entity +public class RedditTelegramForwarderProperty { + @Id + @Enumerated(EnumType.STRING) + private RedditTelegramForwarderPropertyName name; + + @Column(nullable = false) + private String value; + + public RedditTelegramForwarderProperty() { + } + + public RedditTelegramForwarderProperty(RedditTelegramForwarderPropertyName name, String value) { + this.name = name; + this.value = value; + } + + public RedditTelegramForwarderPropertyName getName() { + return name; + } + + public void setName(RedditTelegramForwarderPropertyName name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderPropertyName.java b/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderPropertyName.java new file mode 100644 index 0000000..4a2d556 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderPropertyName.java @@ -0,0 +1,5 @@ +package com.github.yvasyliev.model.entities; + +public enum RedditTelegramForwarderPropertyName { + LAST_CREATED +} diff --git a/src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java b/src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java new file mode 100644 index 0000000..8397b92 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java @@ -0,0 +1,29 @@ +package com.github.yvasyliev.service.data; + +import com.github.yvasyliev.model.entities.BlockedAuthor; +import com.github.yvasyliev.service.repository.BlockedAuthorRepository; +import jakarta.transaction.Transactional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class BlockedAuthorService { + @Autowired + private BlockedAuthorRepository blockedAuthorRepository; + + public List findAll() { + return blockedAuthorRepository.findAll(); + } + + @Transactional + public BlockedAuthor saveBlockedAuthor(String username) { + return blockedAuthorRepository.save(new BlockedAuthor(username)); + } + + @Transactional + public void removeBlockedAuthor(String username) { + blockedAuthorRepository.deleteById(username); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/data/RedditTelegramForwarderPropertyService.java b/src/main/java/com/github/yvasyliev/service/data/RedditTelegramForwarderPropertyService.java new file mode 100644 index 0000000..dd99583 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/data/RedditTelegramForwarderPropertyService.java @@ -0,0 +1,28 @@ +package com.github.yvasyliev.service.data; + +import com.github.yvasyliev.model.entities.RedditTelegramForwarderProperty; +import com.github.yvasyliev.model.entities.RedditTelegramForwarderPropertyName; +import com.github.yvasyliev.service.repository.RedditTelegramForwarderPropertyRepository; +import jakarta.transaction.Transactional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class RedditTelegramForwarderPropertyService { + @Autowired + private RedditTelegramForwarderPropertyRepository propertyRepository; + + public Optional findLastCreated() { + return propertyRepository.findLastCreated(); + } + + @Transactional + public RedditTelegramForwarderProperty saveLastCreated(int lastCreated) { + return propertyRepository.save(new RedditTelegramForwarderProperty( + RedditTelegramForwarderPropertyName.LAST_CREATED, + String.valueOf(lastCreated)) + ); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index 50a39bd..3f046e0 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -7,9 +7,9 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.post.Post; -import com.github.yvasyliev.service.state.StateManager; +import com.github.yvasyliev.model.entities.BlockedAuthor; +import com.github.yvasyliev.service.data.BlockedAuthorService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import org.springframework.util.function.ThrowingFunction; @@ -23,7 +23,7 @@ public class PostDeserializer extends JsonDeserializer { private List>> postMappers; @Autowired - private ApplicationContext context; + private BlockedAuthorService blockedAuthorService; @Override public Post deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { @@ -31,7 +31,11 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var author = jsonPost.get("author").textValue(); var created = jsonPost.get("created").intValue(); var postUrl = jsonPost.has("url_overridden_by_dest") ? jsonPost.get("url_overridden_by_dest").textValue() : jsonPost.get("url").textValue(); - var blockedAuthors = context.getBean(StateManager.class).getBlockedAuthors(); + var blockedAuthors = blockedAuthorService + .findAll() + .stream() + .map(BlockedAuthor::getUsername) + .toList(); jsonPost = extractRootPost(jsonPost); for (var postMapper : postMappers) { diff --git a/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java b/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java deleted file mode 100644 index 817feab..0000000 --- a/src/main/java/com/github/yvasyliev/service/factories/StateFactoryBean.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.yvasyliev.service.factories; - -import com.github.yvasyliev.model.dto.State; -import com.github.yvasyliev.service.state.StateIO; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.IOException; - -@Component -public class StateFactoryBean implements FactoryBean { - @Autowired - private StateIO stateIO; - - @Override - public State getObject() throws IOException { - return stateIO.read(); - } - - @Override - public Class getObjectType() { - return State.class; - } -} diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java index 17b3e8a..3a8ac94 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.post.Post; -import com.github.yvasyliev.service.state.StateManager; +import com.github.yvasyliev.service.data.RedditTelegramForwarderPropertyService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -32,7 +32,7 @@ public class SubredditPostSupplier implements ThrowingSupplier> { private int delayMinutes; @Autowired - private StateManager stateManager; + private RedditTelegramForwarderPropertyService propertyService; @Autowired private ObjectMapper objectMapper; @@ -45,7 +45,7 @@ public List getWithException() throws Exception { .get("data") .get("children") .elements(); - var lastCreated = stateManager.getLastCreated(); + var lastCreated = propertyService.findLastCreated().orElse(0); return StreamSupport .stream(Spliterators.spliteratorUnknownSize(children, Spliterator.ORDERED), false) .map(child -> child.get("data")) diff --git a/src/main/java/com/github/yvasyliev/service/repository/BlockedAuthorRepository.java b/src/main/java/com/github/yvasyliev/service/repository/BlockedAuthorRepository.java new file mode 100644 index 0000000..49228bc --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/repository/BlockedAuthorRepository.java @@ -0,0 +1,9 @@ +package com.github.yvasyliev.service.repository; + +import com.github.yvasyliev.model.entities.BlockedAuthor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface BlockedAuthorRepository extends JpaRepository { +} diff --git a/src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java b/src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java new file mode 100644 index 0000000..1d957dd --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java @@ -0,0 +1,20 @@ +package com.github.yvasyliev.service.repository; + +import com.github.yvasyliev.model.entities.RedditTelegramForwarderProperty; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface RedditTelegramForwarderPropertyRepository extends JpaRepository { + @Query(""" + select + cast(r.value as integer) + from + RedditTelegramForwarderProperty r + where + r.name = com.github.yvasyliev.model.entities.RedditTelegramForwarderPropertyName.LAST_CREATED""") + Optional findLastCreated(); +} diff --git a/src/main/java/com/github/yvasyliev/service/state/StateIO.java b/src/main/java/com/github/yvasyliev/service/state/StateIO.java deleted file mode 100644 index bab23a8..0000000 --- a/src/main/java/com/github/yvasyliev/service/state/StateIO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.github.yvasyliev.service.state; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.model.dto.State; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.File; -import java.io.IOException; - -@Service -public class StateIO { - @Autowired - private ObjectMapper objectMapper; - - @Autowired - private File stateSrc; - - public State read() throws IOException { - return stateSrc.exists() - ? objectMapper.readValue(stateSrc, State.class) - : new State(); - } - - public void write(State state) throws IOException { - objectMapper.writeValue(stateSrc, state); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/state/StateManager.java b/src/main/java/com/github/yvasyliev/service/state/StateManager.java deleted file mode 100644 index 4c401b3..0000000 --- a/src/main/java/com/github/yvasyliev/service/state/StateManager.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.github.yvasyliev.service.state; - -import com.github.yvasyliev.model.dto.State; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.io.IOException; -import java.util.Set; - -@Service -public class StateManager { - @Autowired - private State state; - - @Autowired - private StateIO stateIO; - - public int getLastCreated() { - return state.getLastCreated(); - } - - public Set getBlockedAuthors() { - return Set.copyOf(state.getBlockedAuthors()); - } - - public void setLastCreated(int lastCreated) throws IOException { - state.setLastCreated(lastCreated); - save(); - } - - public void addBlockedAuthor(String username) throws IOException { - state.getBlockedAuthors().add(username); - save(); - } - - public void removeBlockedAuthor(String username) throws IOException { - state.getBlockedAuthors().remove(username); - save(); - } - - public void save() throws IOException { - stateIO.write(state); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 7fc68da..3f58d48 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -6,8 +6,8 @@ import com.github.yvasyliev.model.dto.RedditPostDecisionData; import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.model.events.NewChannelPostEvent; +import com.github.yvasyliev.service.data.RedditTelegramForwarderPropertyService; import com.github.yvasyliev.service.reddit.SubredditPostSupplier; -import com.github.yvasyliev.service.state.StateManager; import com.github.yvasyliev.service.telegram.posts.PhotoGroupPostService; import com.github.yvasyliev.service.telegram.posts.PostService; import org.slf4j.Logger; @@ -22,7 +22,6 @@ import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; -import java.io.IOException; import java.util.List; import java.util.Map; import java.util.concurrent.ScheduledExecutorService; @@ -52,7 +51,7 @@ public class PostManager { private Map postCandidates; @Autowired - private StateManager stateManager; + private RedditTelegramForwarderPropertyService propertyService; @Autowired private PhotoGroupPostService photoGroupPostService; @@ -86,11 +85,7 @@ public void publishPost(T post) { } catch (Exception e) { LOGGER.error("Failed to send post: {}", post, e); } - try { - stateManager.setLastCreated(post.getCreated()); - } catch (IOException e) { - LOGGER.error("Failed to save last_created: {}", post.getCreated(), e); - } + propertyService.saveLastCreated(post.getCreated()); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java index 4baf3d8..5a7b790 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.state.StateManager; -import com.github.yvasyliev.service.telegram.factory.UsernameParser; +import com.github.yvasyliev.service.data.BlockedAuthorService; import com.github.yvasyliev.service.telegram.MarkdownV2Escaper; +import com.github.yvasyliev.service.telegram.factory.UsernameParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -17,7 +17,7 @@ public class AddBlockedAuthor extends AdminCommand { private UsernameParser usernameParser; @Autowired - private StateManager stateManager; + private BlockedAuthorService blockedAuthorService; @Autowired private MarkdownV2Escaper markdownV2Escaper; @@ -27,7 +27,7 @@ public void execute(Message message) throws IOException, TelegramApiException, U var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); - stateManager.addBlockedAuthor(username); + blockedAuthorService.saveBlockedAuthor(username); username = markdownV2Escaper.apply(username); reply(message, "responses/addblockedauthor.md", username, username); } else { diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java index de82129..9e39a82 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.state.StateManager; +import com.github.yvasyliev.service.repository.BlockedAuthorRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -10,13 +10,13 @@ @Service("/getblocked") public class GetBlocked extends AdminCommand { @Autowired - private StateManager stateManager; + private BlockedAuthorRepository blockedAuthorRepository; @Override public void execute(Message message) throws Exception { var blockedAuthorTemplate = responseReader.applyWithException("responses/getblocked/blocked_author.md"); - var blockedAuthors = stateManager - .getBlockedAuthors() + var blockedAuthors = blockedAuthorRepository + .findAll() .stream() .map(blockedAuthorTemplate::formatted) .collect(Collectors.joining("\n")); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java index 9f0b88b..bcfcc71 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -1,8 +1,8 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.state.StateManager; -import com.github.yvasyliev.service.telegram.factory.UsernameParser; +import com.github.yvasyliev.service.data.BlockedAuthorService; import com.github.yvasyliev.service.telegram.MarkdownV2Escaper; +import com.github.yvasyliev.service.telegram.factory.UsernameParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -14,17 +14,17 @@ public class RemoveBlockedAuthor extends AdminCommand { private UsernameParser usernameParser; @Autowired - private StateManager stateManager; + private MarkdownV2Escaper markdownV2Escaper; @Autowired - private MarkdownV2Escaper markdownV2Escaper; + private BlockedAuthorService blockedAuthorService; @Override public void execute(Message message) throws Exception { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); - stateManager.removeBlockedAuthor(username); + blockedAuthorService.removeBlockedAuthor(username); reply(message, "responses/removeblockedauthor.md", markdownV2Escaper.apply(username)); } else { reply(message, "responses/usernamenotrecognized.md"); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index ba17f62..af922f6 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,9 @@ +spring.datasource.driver-class-name=org.sqlite.JDBC +spring.datasource.url=jdbc:sqlite:data.db + +spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect +spring.jpa.hibernate.ddl-auto=update +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.show-sql=true + spring.main.web-application-type=none \ No newline at end of file diff --git a/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java index fb83516..3a452ab 100644 --- a/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/AbstractRedditPostTest.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.post.Post; -import com.github.yvasyliev.service.state.StateManager; +import com.github.yvasyliev.service.data.BlockedAuthorService; import com.github.yvasyliev.service.telegram.PostManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -16,7 +16,7 @@ abstract class AbstractRedditPostTest { ObjectMapper objectMapper; @Autowired - StateManager stateManager; + BlockedAuthorService blockedAuthorService; @Autowired PostManager postManager; diff --git a/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java index 9fa122f..804ffb2 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditGifPostTest.java @@ -22,7 +22,7 @@ static void waitABit() throws InterruptedException { @Test void postApproved() { - assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(gifPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.removeBlockedAuthor(gifPost().getAuthor())); var gifPost = gifPost(); assertTrue(gifPost.isApproved()); @@ -31,7 +31,7 @@ void postApproved() { @Test void postUnapproved() { - assertDoesNotThrow(() -> stateManager.addBlockedAuthor(gifPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.saveBlockedAuthor(gifPost().getAuthor())); var unapprovedGifPost = gifPost(); assertFalse(unapprovedGifPost.isApproved()); diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java index 7530f94..24483f7 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java @@ -17,12 +17,12 @@ class RedditPhotoGroupPostTest extends AbstractRedditPostTest { @AfterEach void waitABit() throws InterruptedException { - TimeUnit.SECONDS.sleep(20); + TimeUnit.SECONDS.sleep(30); } @Test void postApproved() { - assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(photoGroupPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.removeBlockedAuthor(photoGroupPost().getAuthor())); Post photoGroupPost = photoGroupPost(); assertTrue(photoGroupPost.isApproved()); assertDoesNotThrow(() -> postManager.publishPost(photoGroupPost, photoGroupPost.getType())); @@ -30,7 +30,7 @@ void postApproved() { @Test void postUnapproved() { - assertDoesNotThrow(() -> stateManager.addBlockedAuthor(photoGroupPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.saveBlockedAuthor(photoGroupPost().getAuthor())); Post unapprovedPhotoGroupPost = photoGroupPost(); assertFalse(unapprovedPhotoGroupPost.isApproved()); diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java index ef11917..f284fc8 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoPostTest.java @@ -14,7 +14,7 @@ class RedditPhotoPostTest extends AbstractRedditPostTest { @Test void postApproved() { - assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(photoPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.removeBlockedAuthor(photoPost().getAuthor())); var photoPost = photoPost(); assertTrue(photoPost.isApproved()); @@ -23,7 +23,7 @@ void postApproved() { @Test void postUnapproved() { - assertDoesNotThrow(() -> stateManager.addBlockedAuthor(photoPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.saveBlockedAuthor(photoPost().getAuthor())); var unapprovedPhotoPost = photoPost(); assertFalse(unapprovedPhotoPost.isApproved()); diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java index 1b1830f..1bc6518 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPollPostTest.java @@ -14,7 +14,7 @@ class RedditPollPostTest extends AbstractRedditPostTest { @Test void postApproved() { - assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(pollPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.removeBlockedAuthor(pollPost().getAuthor())); var pollPost = pollPost(); assertTrue(pollPost.isApproved()); @@ -23,7 +23,7 @@ void postApproved() { @Test void postUnapproved() { - assertDoesNotThrow(() -> stateManager.addBlockedAuthor(pollPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.saveBlockedAuthor(pollPost().getAuthor())); var unapprovedPollPost = pollPost(); assertFalse(unapprovedPollPost.isApproved()); diff --git a/src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java index 82e8c11..1af0779 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditTextPostTest.java @@ -14,7 +14,7 @@ class RedditTextPostTest extends AbstractRedditPostTest { @Test void postApproved() { - assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(textPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.removeBlockedAuthor(textPost().getAuthor())); Post textPost = textPost(); assertTrue(textPost.isApproved()); assertDoesNotThrow(() -> postManager.publishPost(textPost, textPost.getType())); @@ -22,7 +22,7 @@ void postApproved() { @Test void postUnapproved() { - assertDoesNotThrow(() -> stateManager.addBlockedAuthor(textPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.saveBlockedAuthor(textPost().getAuthor())); Post unapprovedTextPost = textPost(); assertFalse(unapprovedTextPost.isApproved()); diff --git a/src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java index 7b707c8..aaeac17 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditVideoPostTest.java @@ -14,7 +14,7 @@ class RedditVideoPostTest extends AbstractRedditPostTest { @Test void postApproved() { - assertDoesNotThrow(() -> stateManager.removeBlockedAuthor(videoPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.removeBlockedAuthor(videoPost().getAuthor())); var videoPost = videoPost(); assertTrue(videoPost.isApproved()); @@ -23,7 +23,7 @@ void postApproved() { @Test void postUnapproved() { - assertDoesNotThrow(() -> stateManager.addBlockedAuthor(videoPost().getAuthor())); + assertDoesNotThrow(() -> blockedAuthorService.saveBlockedAuthor(videoPost().getAuthor())); var unapprovedVideoPost = videoPost(); assertFalse(unapprovedVideoPost.isApproved()); From 9629779dcc051924d2a24258d768722bd3e19615 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 16:00:38 +0200 Subject: [PATCH 50/93] optimized delay management for sending posts --- .github/workflows/release.yml | 3 + .../com/github/yvasyliev/Application.java | 38 +++--------- .../appenders/TelegramBotAppender.java | 53 +++++++++-------- .../yvasyliev/bots/telegram/RedTelBot.java | 16 +++++ .../async/DelayedBlockingExecutor.java | 35 +++++++++++ .../service/data/BlockedAuthorService.java | 6 +- .../deserializers/PostDeserializer.java | 10 +--- .../service/reddit/RedditVideoDownloader.java | 1 + .../service/telegram/PostManager.java | 52 +++-------------- .../telegram/ScheduledPostManager.java | 44 ++++++++++++++ .../telegram/commands/PausePublishing.java | 7 ++- .../telegram/commands/ResumePublishing.java | 7 ++- .../service/telegram/commands/Stop.java | 7 +-- .../telegram/posts/PhotoGroupPostService.java | 58 ++++--------------- src/main/resources/application.properties | 9 ++- src/main/resources/log4j2.xml | 6 +- .../tc/RedditPhotoGroupPostTest.java | 8 --- src/test/resources/log4j2.xml | 8 ++- 18 files changed, 188 insertions(+), 180 deletions(-) create mode 100644 src/main/java/com/github/yvasyliev/service/async/DelayedBlockingExecutor.java create mode 100644 src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c61105d..f49089b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,10 +31,13 @@ jobs: - name: Run test run: mvn test env: + spring.jpa.hibernate.ddl-auto: create-drop telegram.admin.id: ${{ secrets.telegram.admin.id }} telegram.bot.token: ${{ secrets.test.telegram.bot.token }} telegram.channel.id: ${{ secrets.test.telegram.channel.id }} telegram.chat.id: ${{ secrets.test.telegram.chat.id }} + telegram.schedule.posting.enabled: false + release: runs-on: ubuntu-latest diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/Application.java index 3feb0f8..b22c4aa 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/Application.java @@ -13,28 +13,25 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.ApplicationPidFileWriter; -import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Scope; +import org.springframework.scheduling.annotation.EnableScheduling; import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.starter.TelegramBotStarterConfiguration; import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; -import java.io.File; import java.net.http.HttpClient; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; @SpringBootApplication +@EnableScheduling public class Application extends TelegramBotStarterConfiguration { - private static ConfigurableApplicationContext context; + private static ApplicationContext context; public static void main(String[] args) { context = new SpringApplicationBuilder(Application.class) @@ -43,8 +40,10 @@ public static void main(String[] args) { .run(args); } - public static ConfigurableApplicationContext getContext() { - return context; + public static void withContext(Consumer contextConsumer) { + if (context != null) { + contextConsumer.accept(context); + } } @Bean("/help") @@ -71,11 +70,6 @@ public Module module(JsonDeserializer postJsonDeserializer) { return module; } - @Bean - public ScheduledExecutorService scheduledExecutorService() { - return Executors.newSingleThreadScheduledExecutor(); - } - @Bean public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); @@ -86,11 +80,6 @@ public HttpClient httpClient() { return HttpClient.newHttpClient(); } - @Bean - public File stateSrc() { - return new File("state.json"); - } - @Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) public Map synchronizedFixedSizeMap(@Value("16") int maxSize) { @@ -126,13 +115,4 @@ public Map longExternalMessageDataMap(@Value("16") in return synchronizedFixedSizeMap(maxSize); } - @Bean - public Executor delayedExecutor() { - return CompletableFuture.delayedExecutor(10, TimeUnit.SECONDS, singleThreadExecutor()); - } - - @Bean - public Executor singleThreadExecutor() { - return Executors.newSingleThreadExecutor(); - } } diff --git a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java index 39f6e75..fe97d76 100644 --- a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java +++ b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java @@ -19,9 +19,13 @@ import java.io.PrintWriter; import java.io.Serializable; import java.io.StringWriter; +import java.util.Optional; @Plugin(name = "TelegramBotAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE) public class TelegramBotAppender extends AbstractAppender { + private static final String MESSAGE_TEMPLATE = """ + %s + %s"""; protected TelegramBotAppender(String name, Filter filter, Layout layout, boolean ignoreExceptions, Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); @@ -34,32 +38,33 @@ public static TelegramBotAppender createAppender(@PluginAttribute("name") String @Override public void append(LogEvent event) { - var formattedMessage = event.getMessage().getFormattedMessage(); - - var stackTrace = getStackTrace(event.getThrown()); - if (stackTrace != null) { - formattedMessage = """ - %s - %s""".formatted(formattedMessage, stackTrace); - } - - try { - Application.getContext().getBean(TelegramNotifier.class).applyWithException(formattedMessage); - } catch (Exception e) { - e.printStackTrace(System.err); - } + Application.withContext(applicationContext -> { + try { + applicationContext + .getBean(TelegramNotifier.class) + .applyWithException(buildMessage(event)); + } catch (Exception e) { + e.printStackTrace(System.err); + } + }); } - private String getStackTrace(Throwable throwable) { - if (throwable == null) { - return null; - } + private String buildMessage(LogEvent event) { + var formattedMessage = event.getMessage().getFormattedMessage(); + return getStackTrace(event.getThrown()) + .map(stackTrace -> MESSAGE_TEMPLATE.formatted(formattedMessage, stackTrace)) + .orElse(formattedMessage); + } - try (var stringWriter = new StringWriter(); var printWriter = new PrintWriter(stringWriter)) { - throwable.printStackTrace(printWriter); - return stringWriter.toString(); - } catch (IOException e) { - return "Failed to read stack trace: " + e; - } + private Optional getStackTrace(Throwable throwable) { + return Optional.ofNullable(throwable).map(t -> { + try (var stringWriter = new StringWriter(); var printWriter = new PrintWriter(stringWriter)) { + t.printStackTrace(printWriter); + return stringWriter.toString(); + } catch (IOException e) { + e.printStackTrace(System.err); + return null; + } + }); } } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index 68a5d9b..ee35bb2 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -6,6 +6,7 @@ import com.github.yvasyliev.model.dto.ChannelPost; import com.github.yvasyliev.model.dto.ExternalMessageData; import com.github.yvasyliev.model.events.NewChannelPostEvent; +import com.github.yvasyliev.service.async.DelayedBlockingExecutor; import com.github.yvasyliev.service.telegram.callbacks.Callback; import com.github.yvasyliev.service.telegram.commands.Command; import jakarta.annotation.PreDestroy; @@ -17,6 +18,8 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.TelegramBotsApi; +import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; +import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; import org.telegram.telegrambots.meta.api.objects.CallbackQuery; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.Update; @@ -25,8 +28,10 @@ import org.telegram.telegrambots.meta.generics.BotSession; import org.telegram.telegrambots.starter.AfterBotRegistration; +import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.concurrent.CompletableFuture; @Component public class RedTelBot extends AbstractRedTelBot { @@ -49,6 +54,9 @@ public class RedTelBot extends AbstractRedTelBot { @Autowired private ApplicationEventPublisher eventPublisher; + @Autowired + private DelayedBlockingExecutor delayedBlockingExecutor; + public RedTelBot(@Value("${telegram.bot.token}") String botToken) { super(botToken); } @@ -140,6 +148,14 @@ public boolean isAdmin(User user) { return user.getId().toString().equals(getAdminId()); } + public CompletableFuture> executeDelayed(SendMediaGroup sendMediaGroup) { + return delayedBlockingExecutor.submit(() -> execute(sendMediaGroup)); + } + + public CompletableFuture executeDelayed(SendPhoto sendPhoto) { + return delayedBlockingExecutor.submit(() -> execute(sendPhoto)); + } + private Optional getCommand(Message message) { long userId = message.getFrom().getId(); if (message.hasText()) { diff --git a/src/main/java/com/github/yvasyliev/service/async/DelayedBlockingExecutor.java b/src/main/java/com/github/yvasyliev/service/async/DelayedBlockingExecutor.java new file mode 100644 index 0000000..df4f628 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/async/DelayedBlockingExecutor.java @@ -0,0 +1,35 @@ +package com.github.yvasyliev.service.async; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.Queue; +import java.util.concurrent.Callable; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + +@Component +public class DelayedBlockingExecutor { + @Value("#{new java.util.concurrent.LinkedBlockingQueue()}") + private Queue delayedRunnables; + + public CompletableFuture submit(Callable callable) { + var completableFuture = new CompletableFuture(); + delayedRunnables.add(() -> { + try { + completableFuture.complete(callable.call()); + } catch (Exception e) { + completableFuture.completeExceptionally(e); + } + }); + return completableFuture; + } + + @Scheduled(fixedDelayString = "${delayed.blocking.executor.delay.in.seconds:20}", timeUnit = TimeUnit.SECONDS) + public void runNextRunnable() { + if (!delayedRunnables.isEmpty()) { + delayedRunnables.poll().run(); + } + } +} diff --git a/src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java b/src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java index 8397b92..92bc500 100644 --- a/src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java +++ b/src/main/java/com/github/yvasyliev/service/data/BlockedAuthorService.java @@ -6,15 +6,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; - @Service public class BlockedAuthorService { @Autowired private BlockedAuthorRepository blockedAuthorRepository; - public List findAll() { - return blockedAuthorRepository.findAll(); + public boolean isBlocked(String username) { + return blockedAuthorRepository.existsById(username); } @Transactional diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index 3f046e0..d83df16 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -7,7 +7,6 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.github.yvasyliev.model.dto.post.Post; -import com.github.yvasyliev.model.entities.BlockedAuthor; import com.github.yvasyliev.service.data.BlockedAuthorService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,12 +29,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var jsonPost = jsonParser.readValueAs(JsonNode.class); var author = jsonPost.get("author").textValue(); var created = jsonPost.get("created").intValue(); - var postUrl = jsonPost.has("url_overridden_by_dest") ? jsonPost.get("url_overridden_by_dest").textValue() : jsonPost.get("url").textValue(); - var blockedAuthors = blockedAuthorService - .findAll() - .stream() - .map(BlockedAuthor::getUsername) - .toList(); + var postUrl = jsonPost.has("url_overridden_by_dest") ? jsonPost.get("url_overridden_by_dest").textValue() : jsonPost.get("url").textValue(); // TODO: 11/8/2023 simplify jsonPost = extractRootPost(jsonPost); for (var postMapper : postMappers) { @@ -43,7 +37,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var optionalPost = postMapper.applyWithException(jsonPost).map(post -> { post.setAuthor(author); post.setCreated(created); - post.setApproved(!blockedAuthors.contains(author)); + post.setApproved(!blockedAuthorService.isBlocked(author)); post.setPostUrl(postUrl); return post; }); diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java index de77c2d..9bc891a 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java @@ -7,6 +7,7 @@ import java.io.IOException; +// TODO: 11/7/2023 remove Jsoup @Service public class RedditVideoDownloader implements ThrowingFunction { @Override diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 3f58d48..9caa1a2 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -7,7 +7,6 @@ import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.model.events.NewChannelPostEvent; import com.github.yvasyliev.service.data.RedditTelegramForwarderPropertyService; -import com.github.yvasyliev.service.reddit.SubredditPostSupplier; import com.github.yvasyliev.service.telegram.posts.PhotoGroupPostService; import com.github.yvasyliev.service.telegram.posts.PostService; import org.slf4j.Logger; @@ -24,20 +23,12 @@ import java.util.List; import java.util.Map; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.ExecutionException; @Service public class PostManager { private static final Logger LOGGER = LoggerFactory.getLogger(PostManager.class); - @Autowired - private ScheduledExecutorService executorService; - - @Autowired - private SubredditPostSupplier subredditPostSupplier; - @Autowired private RedTelBot redTelBot; @@ -56,22 +47,6 @@ public class PostManager { @Autowired private PhotoGroupPostService photoGroupPostService; - private final AtomicBoolean publishing = new AtomicBoolean(true); - - public void schedulePosting() { - executorService.scheduleWithFixedDelay(() -> { - if (publishing.get()) { - try { - var newPosts = subredditPostSupplier.getWithException(); - publishPosts(newPosts); - } catch (Exception e) { - LOGGER.error("Failed to find new posts.", e); - } - } - }, 0, 1, TimeUnit.MINUTES); - LOGGER.info("Started posting."); - } - public void publishPosts(List posts) { posts.forEach(this::publishPost); } @@ -80,8 +55,6 @@ public void publishPost(T post) { if (context.containsBean(post.getType())) { try { publishPost(post, post.getType()); - } catch (TelegramApiException | JsonProcessingException e) { - LOGGER.error("Failed to ask approve.", e); } catch (Exception e) { LOGGER.error("Failed to send post: {}", post, e); } @@ -94,29 +67,22 @@ public void publishPost(T post, String postServiceName) throws var chatId = post.isApproved() ? redTelBot.getChannelId() : redTelBot.getAdminId(); var sentMessage = postService.applyWithException(chatId, post); if (sentMessage.isPresent() && !post.isApproved()) { - askApprove(chatId, post.getCreated()); - postCandidates.put(post.getCreated(), post); + try { + askApprove(chatId, post.getCreated()); + postCandidates.put(post.getCreated(), post); + } catch (TelegramApiException | JsonProcessingException e) { + LOGGER.error("Failed to ask approve.", e); + } } } - public void pausePublishing() { - publishing.set(false); - } - - public void resumePublishing() { - publishing.set(true); - } - - public void stopPublishing() { - executorService.shutdown(); - } - + // TODO: 11/8/2023 Move to PhotoGroupPostService @EventListener public void onNewChannelPostEvent(NewChannelPostEvent newChannelPostEvent) { var channelPost = newChannelPostEvent.getChannelPost(); try { photoGroupPostService.sendExtraPhotos(channelPost.messageId(), channelPost.forwardFromMessageId()); - } catch (TelegramApiException e) { + } catch (ExecutionException | InterruptedException e) { LOGGER.error("Failed to send extra photos.", e); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java new file mode 100644 index 0000000..7d018c3 --- /dev/null +++ b/src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java @@ -0,0 +1,44 @@ +package com.github.yvasyliev.service.telegram; + +import com.github.yvasyliev.service.reddit.SubredditPostSupplier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; + +@Service +public class ScheduledPostManager extends PostManager { + private static final Logger LOGGER = LoggerFactory.getLogger(ScheduledPostManager.class); + + @Value("#{new java.util.concurrent.atomic.AtomicBoolean(${telegram.schedule.posting.enabled:true})}") + private AtomicBoolean isPosting; + + @Autowired + private SubredditPostSupplier subredditPostSupplier; + + + @Scheduled(fixedDelayString = "${telegram.schedule.posting.delay.in.minutes:1}", timeUnit = TimeUnit.MINUTES) + public void shareNewPosts() { + if (isPosting.get()) { + try { + var newPosts = subredditPostSupplier.getWithException(); + publishPosts(newPosts); + } catch (Exception e) { + LOGGER.error("Failed to find new posts.", e); + } + } + } + + public void pausePosting() { + isPosting.set(false); + } + + public void resumePosting() { + isPosting.set(true); + } +} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java index 49b2cac..a3e2026 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.telegram.PostManager; +import com.github.yvasyliev.service.telegram.ScheduledPostManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; @@ -10,14 +10,15 @@ import java.io.IOException; import java.net.URISyntaxException; +// TODO: 11/8/2023 rename to pauseposting @Service("/pausepublishing") public class PausePublishing extends AdminCommand { @Autowired - private PostManager postManager; + private ScheduledPostManager postManager; @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { - postManager.pausePublishing(); + postManager.pausePosting(); redTelBot.execute(new SendMessage( message.getChatId().toString(), responseReader.applyWithException("responses/pausepublishing.md") diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java index 42af016..7a24132 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.telegram.PostManager; +import com.github.yvasyliev.service.telegram.ScheduledPostManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; @@ -10,14 +10,15 @@ import java.io.IOException; import java.net.URISyntaxException; +// TODO: 11/8/2023 rename to resumeposting @Service("/resumepublishing") public class ResumePublishing extends AdminCommand { @Autowired - private PostManager postManager; + private ScheduledPostManager postManager; @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { - postManager.resumePublishing(); + postManager.resumePosting(); redTelBot.execute(new SendMessage( message.getChatId().toString(), responseReader.applyWithException("responses/resumepublishing.md") diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java index 3183ce3..371bc71 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.service.telegram.PostManager; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; @@ -12,12 +12,11 @@ @Service("/stop") public class Stop extends AdminCommand { @Autowired - private PostManager postManager; + private ConfigurableApplicationContext context; @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { - postManager.stopPublishing(); - redTelBot.stopPolling(); + context.close(); reply(message, "responses/stop.md", redTelBot.getBotUsername()); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 9a8eace..863a18e 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -23,10 +23,8 @@ import java.util.Map; import java.util.Optional; import java.util.Queue; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionException; import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executor; +import java.util.function.Function; @Service(Post.Type.PHOTO_GROUP) public class PhotoGroupPostService extends PostService> { @@ -34,16 +32,16 @@ public class PhotoGroupPostService extends PostService extraPhotos; @Autowired - private Map extraPhotos; + private Function markdownV2Escaper; @Override @NonNull - public Optional> applyWithException(@NonNull String chatId, PhotoGroupPost post) throws TelegramApiException, URISyntaxException, IOException { + public Optional> applyWithException(@NonNull String chatId, PhotoGroupPost post) throws TelegramApiException, URISyntaxException, IOException, ExecutionException, InterruptedException { var pages = post.getPhotoUrlsPages(); - var text = post.getText(); + var text = markdownV2Escaper.apply(post.getText()); var hasSpoiler = post.isHasSpoiler(); var pagesAmount = pages.size(); @@ -54,7 +52,7 @@ public Optional> applyWithException(@NonNull String chatId, PhotoG var sendMediaGroup = sendMediaGroup(chatId, pages.element(), hasSpoiler, null); sendMediaGroup.getMedias().get(0).setCaption(caption); - var publishedPost = redTelBot.execute(sendMediaGroup); + var publishedPost = redTelBot.executeDelayed(sendMediaGroup).get(); var messages = new ArrayList<>(publishedPost); var messageId = publishedPost.get(0).getMessageId(); @@ -67,22 +65,22 @@ public Optional> applyWithException(@NonNull String chatId, PhotoG return Optional.of(messages); } - public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) throws TelegramApiException { + public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) throws ExecutionException, InterruptedException { var post = extraPhotos.remove(forwardMessageId); return post != null ? sendDelayed(redTelBot.getGroupId(), replyToMessageId, post) : List.of(); } - private List sendDelayed(String chatId, int replyToMessageId, PhotoGroupPost post) throws TelegramApiException { + private List sendDelayed(String chatId, int replyToMessageId, PhotoGroupPost post) throws ExecutionException, InterruptedException { var pages = new ArrayDeque<>(post.getPhotoUrlsPages()); var hasSpoiler = post.isHasSpoiler(); var messages = new ArrayList(); pages.removeFirst(); for (var page : pages) { messages.addAll(page.size() > 1 - ? executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)) - : List.of(executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId))) + ? redTelBot.executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)).get() + : List.of(redTelBot.executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId)).get()) ); } return messages; @@ -115,40 +113,4 @@ private SendPhoto sendPhoto(String chatId, String photo, boolean hasSpoiler, Int .replyToMessageId(replyToMessageId) .build(); } - - private List executeDelayed(SendMediaGroup sendMediaGroup) throws TelegramApiException { - try { - return CompletableFuture - .supplyAsync(() -> { - try { - return redTelBot.execute(sendMediaGroup); - } catch (TelegramApiException e) { - throw new CompletionException(e); - } - }, - delayedExecutor - ) - .get(); - } catch (InterruptedException | ExecutionException e) { - throw new TelegramApiException(e); - } - } - - public Message executeDelayed(SendPhoto sendPhoto) throws TelegramApiException { - try { - return CompletableFuture - .supplyAsync(() -> { - try { - return redTelBot.execute(sendPhoto); - } catch (TelegramApiException e) { - throw new CompletionException(e); - } - }, - delayedExecutor - ) - .get(); - } catch (InterruptedException | ExecutionException e) { - throw new TelegramApiException(e); - } - } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index af922f6..7de6fbd 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,6 +4,11 @@ spring.datasource.url=jdbc:sqlite:data.db spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.format_sql=true -spring.jpa.show-sql=true +spring.jpa.properties.hibernate.highlight_sql=true +#spring.jpa.show-sql=true -spring.main.web-application-type=none \ No newline at end of file +spring.main.web-application-type=none + +spring.output.ansi.enabled=always + +spring.task.scheduling.pool.size=2 \ No newline at end of file diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 98f469a..66d8857 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -2,7 +2,7 @@ - + - + + + \ No newline at end of file diff --git a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java index 24483f7..a6e0834 100644 --- a/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java +++ b/src/test/java/com/github/yvasyliev/tc/RedditPhotoGroupPostTest.java @@ -2,11 +2,8 @@ import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; -import java.util.concurrent.TimeUnit; - import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -15,11 +12,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue; class RedditPhotoGroupPostTest extends AbstractRedditPostTest { - @AfterEach - void waitABit() throws InterruptedException { - TimeUnit.SECONDS.sleep(30); - } - @Test void postApproved() { assertDoesNotThrow(() -> blockedAuthorService.removeBlockedAuthor(photoGroupPost().getAuthor())); diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml index 431bb34..5375e9b 100644 --- a/src/test/resources/log4j2.xml +++ b/src/test/resources/log4j2.xml @@ -2,7 +2,7 @@ - + - + + + + + From 46cdc7c584f31690e78877584f189a7095184020 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 17:07:02 +0200 Subject: [PATCH 51/93] removed AbstractRedTelBot.java --- .../bots/telegram/AbstractRedTelBot.java | 44 ------------------- .../yvasyliev/bots/telegram/RedTelBot.java | 40 +++++++++++++---- .../telegram/posts/PhotoGroupPostService.java | 2 +- 3 files changed, 33 insertions(+), 53 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java deleted file mode 100644 index eade0a9..0000000 --- a/src/main/java/com/github/yvasyliev/bots/telegram/AbstractRedTelBot.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.github.yvasyliev.bots.telegram; - -import org.springframework.beans.factory.annotation.Value; -import org.telegram.telegrambots.bots.TelegramLongPollingBot; -import org.telegram.telegrambots.meta.api.objects.Update; - -public abstract class AbstractRedTelBot extends TelegramLongPollingBot { - @Value("${BOT_USERNAME}") - private String botUsername; - - @Value("${telegram.admin.id}") - private String adminId; - - @Value("${telegram.channel.id}") - private String channelId; - - @Value("${GROUP_ID}") - private String groupId; - - public AbstractRedTelBot(String botToken) { - super(botToken); - } - - @Override - public void onUpdateReceived(Update update) { - } - - @Override - public String getBotUsername() { - return botUsername; - } - - public String getAdminId() { - return adminId; - } - - public String getChannelId() { - return channelId; - } - - public String getGroupId() { - return groupId; - } -} diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index ee35bb2..d9d5b7b 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -17,14 +17,13 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component; -import org.telegram.telegrambots.meta.TelegramBotsApi; +import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.api.methods.send.SendMediaGroup; import org.telegram.telegrambots.meta.api.methods.send.SendPhoto; import org.telegram.telegrambots.meta.api.objects.CallbackQuery; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.api.objects.User; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.meta.generics.BotSession; import org.telegram.telegrambots.starter.AfterBotRegistration; @@ -34,7 +33,7 @@ import java.util.concurrent.CompletableFuture; @Component -public class RedTelBot extends AbstractRedTelBot { +public class RedTelBot extends TelegramLongPollingBot { private static final Logger LOGGER = LoggerFactory.getLogger(RedTelBot.class); @Autowired @@ -57,6 +56,18 @@ public class RedTelBot extends AbstractRedTelBot { @Autowired private DelayedBlockingExecutor delayedBlockingExecutor; + @Value("${telegram.chat.id}") + private String chatId; + + @Value("${telegram.channel.id}") + private String channelId; + + @Value("${telegram.admin.id}") + private String adminId; + + @Value("${telegram.bot.username}") + private String botUsername; + public RedTelBot(@Value("${telegram.bot.token}") String botToken) { super(botToken); } @@ -67,11 +78,6 @@ public void setBotSession(BotSession botSession) { LOGGER.info("{} started long polling.", getBotUsername()); } - public void startPolling() throws TelegramApiException { - botSession = context.getBean(TelegramBotsApi.class).registerBot(this); - LOGGER.info("{} started long polling.", getBotUsername()); - } - @PreDestroy public void stopPolling() { botSession.stop(); @@ -156,6 +162,7 @@ public CompletableFuture executeDelayed(SendPhoto sendPhoto) { return delayedBlockingExecutor.submit(() -> execute(sendPhoto)); } + // TODO: 11/8/2023 message.isCommand private Optional getCommand(Message message) { long userId = message.getFrom().getId(); if (message.hasText()) { @@ -172,4 +179,21 @@ private Optional getCommand(Message message) { private boolean looksLikeCommand(String text) { return text.matches("/\\w+"); } + + public String getChatId() { + return chatId; + } + + public String getChannelId() { + return channelId; + } + + public String getAdminId() { + return adminId; + } + + @Override + public String getBotUsername() { + return botUsername; + } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 863a18e..4e0071c 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -68,7 +68,7 @@ public Optional> applyWithException(@NonNull String chatId, PhotoG public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) throws ExecutionException, InterruptedException { var post = extraPhotos.remove(forwardMessageId); return post != null - ? sendDelayed(redTelBot.getGroupId(), replyToMessageId, post) + ? sendDelayed(redTelBot.getChatId(), replyToMessageId, post) : List.of(); } From ac7014a1746417698694d7a94c28623725e45a21 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 17:27:49 +0200 Subject: [PATCH 52/93] optimized RedTelBot#getCommand --- .../yvasyliev/bots/telegram/RedTelBot.java | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java index d9d5b7b..7c4db98 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java @@ -162,24 +162,15 @@ public CompletableFuture executeDelayed(SendPhoto sendPhoto) { return delayedBlockingExecutor.submit(() -> execute(sendPhoto)); } - // TODO: 11/8/2023 message.isCommand private Optional getCommand(Message message) { - long userId = message.getFrom().getId(); - if (message.hasText()) { - var text = message.getText().trim(); - if (looksLikeCommand(text)) { - removeUserCommand(userId); - return Optional.of(text); - } + var userId = message.getFrom().getId(); + if (message.isCommand()) { + return Optional.ofNullable(removeUserCommand(userId)) + .or(() -> Optional.of(message.getText().trim())); } - return Optional.ofNullable(userCommands.get(userId)); } - private boolean looksLikeCommand(String text) { - return text.matches("/\\w+"); - } - public String getChatId() { return chatId; } From ed60277c2a4a51087d6d83765dc00e4229d049f7 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 17:32:13 +0200 Subject: [PATCH 53/93] renamed RedTelBot.java --- ...{RedTelBot.java => RedditTelegramForwarderBot.java} | 6 +++--- .../github/yvasyliev/service/telegram/PostManager.java | 8 ++++---- .../service/telegram/callbacks/ApprovePost.java | 8 ++++---- .../service/telegram/callbacks/ApproveRedditPost.java | 4 ++-- .../yvasyliev/service/telegram/callbacks/Callback.java | 4 ++-- .../service/telegram/callbacks/RejectPost.java | 4 ++-- .../service/telegram/callbacks/RejectRedditPost.java | 4 ++-- .../yvasyliev/service/telegram/callbacks/Reply.java | 6 +++--- .../service/telegram/commands/AdminCommand.java | 2 +- .../service/telegram/commands/BlockAuthor.java | 2 +- .../yvasyliev/service/telegram/commands/Cancel.java | 2 +- .../yvasyliev/service/telegram/commands/Command.java | 6 +++--- .../service/telegram/commands/ContactAdmin.java | 2 +- .../service/telegram/commands/PausePublishing.java | 2 +- .../service/telegram/commands/PostSuggested.java | 8 ++++---- .../yvasyliev/service/telegram/commands/ReplySent.java | 6 +++--- .../service/telegram/commands/ResumePublishing.java | 2 +- .../yvasyliev/service/telegram/commands/Start.java | 5 ++--- .../yvasyliev/service/telegram/commands/Stop.java | 2 +- .../service/telegram/commands/SuggestPost.java | 2 +- .../yvasyliev/service/telegram/commands/TextAdmin.java | 10 +++++----- .../service/telegram/commands/UnblockAuthor.java | 2 +- .../service/telegram/posts/GifPostService.java | 2 +- .../service/telegram/posts/PhotoGroupPostService.java | 8 ++++---- .../service/telegram/posts/PhotoPostService.java | 6 +++--- .../service/telegram/posts/PollPostService.java | 2 +- .../yvasyliev/service/telegram/posts/PostService.java | 4 ++-- .../service/telegram/posts/TextPostService.java | 2 +- .../service/telegram/posts/VideoPostService.java | 2 +- 29 files changed, 61 insertions(+), 62 deletions(-) rename src/main/java/com/github/yvasyliev/bots/telegram/{RedTelBot.java => RedditTelegramForwarderBot.java} (97%) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java similarity index 97% rename from src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java rename to src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java index 7c4db98..ccf8815 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedTelBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java @@ -33,8 +33,8 @@ import java.util.concurrent.CompletableFuture; @Component -public class RedTelBot extends TelegramLongPollingBot { - private static final Logger LOGGER = LoggerFactory.getLogger(RedTelBot.class); +public class RedditTelegramForwarderBot extends TelegramLongPollingBot { + private static final Logger LOGGER = LoggerFactory.getLogger(RedditTelegramForwarderBot.class); @Autowired private ApplicationContext context; @@ -68,7 +68,7 @@ public class RedTelBot extends TelegramLongPollingBot { @Value("${telegram.bot.username}") private String botUsername; - public RedTelBot(@Value("${telegram.bot.token}") String botToken) { + public RedditTelegramForwarderBot(@Value("${telegram.bot.token}") String botToken) { super(botToken); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 9caa1a2..388685d 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.bots.telegram.RedditTelegramForwarderBot; import com.github.yvasyliev.model.dto.RedditPostDecisionData; import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.model.events.NewChannelPostEvent; @@ -30,7 +30,7 @@ public class PostManager { private static final Logger LOGGER = LoggerFactory.getLogger(PostManager.class); @Autowired - private RedTelBot redTelBot; + private RedditTelegramForwarderBot redditTelegramForwarderBot; @Autowired private ApplicationContext context; @@ -64,7 +64,7 @@ public void publishPost(T post) { public void publishPost(T post, String postServiceName) throws Exception { @SuppressWarnings("unchecked") var postService = (PostService) context.getBean(postServiceName); - var chatId = post.isApproved() ? redTelBot.getChannelId() : redTelBot.getAdminId(); + var chatId = post.isApproved() ? redditTelegramForwarderBot.getChannelId() : redditTelegramForwarderBot.getAdminId(); var sentMessage = postService.applyWithException(chatId, post); if (sentMessage.isPresent() && !post.isApproved()) { try { @@ -122,6 +122,6 @@ private Message askApprove(String chatId, int created) throws TelegramApiExcepti denyButton )))) .build(); - return redTelBot.execute(sendMessage); + return redditTelegramForwarderBot.execute(sendMessage); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java index 0df576e..3040122 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java @@ -20,12 +20,12 @@ public void acceptWithException(CallbackQuery callbackQuery) throws TelegramApiE var chatId = message.getChatId(); var messageId = message.getMessageId(); var messageData = objectMapper.readValue(callbackQuery.getData(), ExternalMessageData.class); - redTelBot.execute(new ForwardMessage( - redTelBot.getChannelId(), + redditTelegramForwarderBot.execute(new ForwardMessage( + redditTelegramForwarderBot.getChannelId(), messageData.fromChatId(), messageData.messageId() )); - redTelBot.execute(new EditMessageReplyMarkup( + redditTelegramForwarderBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, callbackQuery.getInlineMessageId(), @@ -37,6 +37,6 @@ public void acceptWithException(CallbackQuery callbackQuery) throws TelegramApiE .text(format("responses/approvepost.md", message.getText())) .parseMode(ParseMode.MARKDOWNV2) .build(); - redTelBot.execute(editMessageText); + redditTelegramForwarderBot.execute(editMessageText); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java index 898ceb1..8d9bc51 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java @@ -25,7 +25,7 @@ public void acceptWithException(CallbackQuery callbackQuery) throws IOException, var messageId = message.getMessageId(); var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); postManager.publishPostCandidate(data.created()); - redTelBot.execute(new EditMessageReplyMarkup( + redditTelegramForwarderBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, callbackQuery.getInlineMessageId(), @@ -37,6 +37,6 @@ public void acceptWithException(CallbackQuery callbackQuery) throws IOException, .text(format("responses/approvepost.md", message.getText())) .parseMode(ParseMode.MARKDOWNV2) .build(); - redTelBot.execute(editMessageText); + redditTelegramForwarderBot.execute(editMessageText); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java index a44af13..2ce92c5 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Callback.java @@ -1,7 +1,7 @@ package com.github.yvasyliev.service.telegram.callbacks; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.bots.telegram.RedditTelegramForwarderBot; import com.github.yvasyliev.service.telegram.readers.BotResponseReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.function.ThrowingConsumer; @@ -12,7 +12,7 @@ public abstract class Callback implements ThrowingConsumer { @Autowired - protected RedTelBot redTelBot; + protected RedditTelegramForwarderBot redditTelegramForwarderBot; @Autowired protected BotResponseReader responseReader; diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java index ad0747a..ba323ba 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java @@ -13,7 +13,7 @@ public void acceptWithException(CallbackQuery callbackQuery) throws Exception { var message = callbackQuery.getMessage(); var chatId = message.getChatId(); var messageId = message.getMessageId(); - redTelBot.execute(new EditMessageReplyMarkup( + redditTelegramForwarderBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, callbackQuery.getInlineMessageId(), @@ -25,6 +25,6 @@ public void acceptWithException(CallbackQuery callbackQuery) throws Exception { .text(format("responses/rejectpost.md", message.getText())) .parseMode(ParseMode.MARKDOWNV2) .build(); - redTelBot.execute(editMessageText); + redditTelegramForwarderBot.execute(editMessageText); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java index 372b5f2..98898f6 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java @@ -21,7 +21,7 @@ public void acceptWithException(CallbackQuery callbackQuery) throws Exception { var messageId = message.getMessageId(); var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); postManager.rejectPostCandidate(data.created()); - redTelBot.execute(new EditMessageReplyMarkup( + redditTelegramForwarderBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, callbackQuery.getInlineMessageId(), @@ -33,6 +33,6 @@ public void acceptWithException(CallbackQuery callbackQuery) throws Exception { .text(format("responses/rejectpost.md", message.getText())) .parseMode(ParseMode.MARKDOWNV2) .build(); - redTelBot.execute(editMessageText); + redditTelegramForwarderBot.execute(editMessageText); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java index b5833d9..fef25f3 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java @@ -21,13 +21,13 @@ public class Reply extends Callback { public void acceptWithException(CallbackQuery callbackQuery) throws IOException, URISyntaxException, TelegramApiException { var messageData = objectMapper.readValue(callbackQuery.getData(), ExternalMessageData.class); var userId = callbackQuery.getFrom().getId(); - redTelBot.addUserCommand(userId, "/replysent"); - redTelBot.addAwaitingReply(userId, messageData); + redditTelegramForwarderBot.addUserCommand(userId, "/replysent"); + redditTelegramForwarderBot.addAwaitingReply(userId, messageData); var sendMessage = SendMessage.builder() .chatId(userId) .text(responseReader.applyWithException("responses/reply.md")) .parseMode(ParseMode.MARKDOWNV2) .build(); - redTelBot.execute(sendMessage); + redditTelegramForwarderBot.execute(sendMessage); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java index 98b5cb0..91a6a9a 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AdminCommand.java @@ -5,6 +5,6 @@ public abstract class AdminCommand extends Command { @Override protected boolean hasPermission(Message message) { - return redTelBot.isAdmin(message.getFrom()); + return redditTelegramForwarderBot.isAdmin(message.getFrom()); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java index f8f2224..0e7d7b8 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java @@ -11,7 +11,7 @@ public class BlockAuthor extends AdminCommand { @Override public void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { - redTelBot.addUserCommand(message.getFrom().getId(), "/addblockedauthor"); + redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/addblockedauthor"); reply(message, "responses/blockauthor.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java index 04374f8..a00aa74 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java @@ -11,7 +11,7 @@ public class Cancel extends Command { @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { - redTelBot.removeUserCommand(message.getFrom().getId()); + redditTelegramForwarderBot.removeUserCommand(message.getFrom().getId()); reply(message, "responses/cancel.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java index d05bd9d..268c199 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.commands; -import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.bots.telegram.RedditTelegramForwarderBot; import com.github.yvasyliev.service.telegram.readers.BotResponseReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.function.ThrowingConsumer; @@ -14,7 +14,7 @@ public abstract class Command implements ThrowingConsumer { @Autowired - protected RedTelBot redTelBot; + protected RedditTelegramForwarderBot redditTelegramForwarderBot; @Autowired protected BotResponseReader responseReader; @@ -39,6 +39,6 @@ protected Message reply(Message to, String template, Object... args) throws URIS .disableWebPagePreview(true) .parseMode(ParseMode.MARKDOWNV2) .build(); - return redTelBot.execute(sendMessage); + return redditTelegramForwarderBot.execute(sendMessage); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java index 876df7b..13d7488 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java @@ -7,7 +7,7 @@ public class ContactAdmin extends Command { @Override public void execute(Message message) throws Exception { - redTelBot.addUserCommand(message.getFrom().getId(), "/textadmin"); + redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/textadmin"); reply(message, "responses/contactadmin.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java index a3e2026..40d5eb9 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java @@ -19,7 +19,7 @@ public class PausePublishing extends AdminCommand { @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.pausePosting(); - redTelBot.execute(new SendMessage( + redditTelegramForwarderBot.execute(new SendMessage( message.getChatId().toString(), responseReader.applyWithException("responses/pausepublishing.md") )); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java index 37c718b..ede316b 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java @@ -26,8 +26,8 @@ public void execute(Message message) throws TelegramApiException, IOException, U var sourceChatId = message.getChatId().toString(); var sourceMessageId = message.getMessageId(); - redTelBot.execute(new ForwardMessage( - redTelBot.getAdminId(), + redditTelegramForwarderBot.execute(new ForwardMessage( + redditTelegramForwarderBot.getAdminId(), sourceChatId, sourceMessageId )); @@ -56,7 +56,7 @@ public void execute(Message message) throws TelegramApiException, IOException, U .build(); var sendMessage = SendMessage.builder() - .chatId(redTelBot.getAdminId()) + .chatId(redditTelegramForwarderBot.getAdminId()) .text(responseReader.applyWithException("responses/postsuggested/suggest_post.md")) .replyMarkup(new InlineKeyboardMarkup(List.of(List.of( approveButton, @@ -64,7 +64,7 @@ public void execute(Message message) throws TelegramApiException, IOException, U replyButton )))) .build(); - redTelBot.execute(sendMessage); + redditTelegramForwarderBot.execute(sendMessage); reply(message, "responses/postsuggested/post_suggested.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java index 4fbc638..b8b6354 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java @@ -20,15 +20,15 @@ public class ReplySent extends AdminCommand { public void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { if (message.hasText()) { var userId = message.getFrom().getId(); - redTelBot.removeUserCommand(userId); - var awaitingReply = redTelBot.getAwaitingReply(userId); + redditTelegramForwarderBot.removeUserCommand(userId); + var awaitingReply = redditTelegramForwarderBot.getAwaitingReply(userId); var replyMessage = SendMessage.builder() .chatId(awaitingReply.fromChatId()) .replyToMessageId(awaitingReply.messageId()) .text(responseReader.applyWithException("responses/replysent/reply_template.md").formatted(markdownV2Escaper.apply(message.getText()))) .parseMode(ParseMode.MARKDOWNV2) .build(); - redTelBot.execute(replyMessage); + redditTelegramForwarderBot.execute(replyMessage); reply(message, "responses/replysent/reply_sent.md"); } else { reply(message, "responses/replysent/empty_reply.md"); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java index 7a24132..6b2ce9e 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java @@ -19,7 +19,7 @@ public class ResumePublishing extends AdminCommand { @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.resumePosting(); - redTelBot.execute(new SendMessage( + redditTelegramForwarderBot.execute(new SendMessage( message.getChatId().toString(), responseReader.applyWithException("responses/resumepublishing.md") )); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java index fac6654..573dd93 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java @@ -1,6 +1,5 @@ package com.github.yvasyliev.service.telegram.commands; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Message; @@ -16,12 +15,12 @@ public class Start extends Command { @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { - if (redTelBot.isAdmin(message.getFrom())) { + if (redditTelegramForwarderBot.isAdmin(message.getFrom())) { reply( message, "responses/admin/start.md", telegramChannelName, - redTelBot.getMe().getFirstName() + redditTelegramForwarderBot.getMe().getFirstName() ); } else { reply(message, "responses/start.md", telegramChannelName); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java index 371bc71..24fd58e 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -17,6 +17,6 @@ public class Stop extends AdminCommand { @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { context.close(); - reply(message, "responses/stop.md", redTelBot.getBotUsername()); + reply(message, "responses/stop.md", redditTelegramForwarderBot.getBotUsername()); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java index 4ecc25f..facc982 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java @@ -11,7 +11,7 @@ public class SuggestPost extends Command { @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { - redTelBot.addUserCommand(message.getFrom().getId(), "/postsuggested"); + redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/postsuggested"); reply(message, "responses/suggestpost.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java index 10275e0..a7677e2 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java @@ -22,15 +22,15 @@ public class TextAdmin extends Command { @Override public void execute(Message message) throws TelegramApiException, IOException, URISyntaxException { - redTelBot.removeUserCommand(message.getFrom().getId()); + redditTelegramForwarderBot.removeUserCommand(message.getFrom().getId()); var sourceChatId = message.getChatId(); var sourceMessageId = message.getMessageId(); var forwardMessage = ForwardMessage.builder() - .chatId(redTelBot.getAdminId()) + .chatId(redditTelegramForwarderBot.getAdminId()) .fromChatId(sourceChatId) .messageId(sourceMessageId) .build(); - redTelBot.execute(forwardMessage); + redditTelegramForwarderBot.execute(forwardMessage); var replyButton = InlineKeyboardButton.builder() .text("🔙 Reply") .callbackData(objectMapper.writeValueAsString(new ExternalMessageData( @@ -40,11 +40,11 @@ public void execute(Message message) throws TelegramApiException, IOException, U ))) .build(); var sendMessage = SendMessage.builder() - .chatId(redTelBot.getAdminId()) + .chatId(redditTelegramForwarderBot.getAdminId()) .text(responseReader.applyWithException("responses/textadmin/message_to_admin.md")) .replyMarkup(new InlineKeyboardMarkup(List.of(List.of(replyButton)))) .build(); - redTelBot.execute(sendMessage); + redditTelegramForwarderBot.execute(sendMessage); reply(message, "responses/textadmin/message_sent.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java index f28f829..6221201 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java @@ -11,7 +11,7 @@ public class UnblockAuthor extends AdminCommand { @Override public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { - redTelBot.addUserCommand(message.getFrom().getId(), "/removeblockedauthor"); + redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/removeblockedauthor"); reply(message, "responses/unblockauthor.md"); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java index d402d5f..6e9b802 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/GifPostService.java @@ -25,7 +25,7 @@ public Optional applyWithException(@NonNull String chatId, @NonNull Gif .hasSpoiler(post.isHasSpoiler()) .build(); - return redTelBot.execute(sendAnimation); + return redditTelegramForwarderBot.execute(sendAnimation); }, post)); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 4e0071c..7ed6c0a 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -52,7 +52,7 @@ public Optional> applyWithException(@NonNull String chatId, PhotoG var sendMediaGroup = sendMediaGroup(chatId, pages.element(), hasSpoiler, null); sendMediaGroup.getMedias().get(0).setCaption(caption); - var publishedPost = redTelBot.executeDelayed(sendMediaGroup).get(); + var publishedPost = redditTelegramForwarderBot.executeDelayed(sendMediaGroup).get(); var messages = new ArrayList<>(publishedPost); var messageId = publishedPost.get(0).getMessageId(); @@ -68,7 +68,7 @@ public Optional> applyWithException(@NonNull String chatId, PhotoG public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) throws ExecutionException, InterruptedException { var post = extraPhotos.remove(forwardMessageId); return post != null - ? sendDelayed(redTelBot.getChatId(), replyToMessageId, post) + ? sendDelayed(redditTelegramForwarderBot.getChatId(), replyToMessageId, post) : List.of(); } @@ -79,8 +79,8 @@ private List sendDelayed(String chatId, int replyToMessageId, PhotoGrou pages.removeFirst(); for (var page : pages) { messages.addAll(page.size() > 1 - ? redTelBot.executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)).get() - : List.of(redTelBot.executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId)).get()) + ? redditTelegramForwarderBot.executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)).get() + : List.of(redditTelegramForwarderBot.executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId)).get()) ); } return messages; diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java index 599341c..921931b 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java @@ -26,7 +26,7 @@ public Optional applyWithException(String chatId, PhotoPost post) throw .caption(post.getText()) .hasSpoiler(post.isHasSpoiler()) .build(); - return Optional.ofNullable(redTelBot.execute(sendPhoto)); + return Optional.ofNullable(redditTelegramForwarderBot.execute(sendPhoto)); } catch (TelegramApiRequestException e) { return Optional.ofNullable(retrySendPhoto(chatId, post, e)); } @@ -44,7 +44,7 @@ private Message retrySendPhoto(String chatId, PhotoPost post, TelegramApiRequest .caption(post.getText()) .hasSpoiler(post.isHasSpoiler()) .build(); - return redTelBot.execute(sendPhoto); + return redditTelegramForwarderBot.execute(sendPhoto); }, post ); @@ -58,7 +58,7 @@ private Message retrySendPhoto(String chatId, PhotoPost post, TelegramApiRequest .document(new InputFile(inputStream, filename)) .caption(post.getText()) .build(); - return redTelBot.execute(sendPhoto); + return redditTelegramForwarderBot.execute(sendPhoto); }, post ); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java index dde7903..1d84953 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PollPostService.java @@ -19,6 +19,6 @@ public Optional applyWithException(String chatId, PollPost post) throws .options(post.getOptions()) .build(); - return Optional.ofNullable(redTelBot.execute(sendPoll)); + return Optional.ofNullable(redditTelegramForwarderBot.execute(sendPoll)); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java index 6d05d97..4308ae6 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PostService.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram.posts; -import com.github.yvasyliev.bots.telegram.RedTelBot; +import com.github.yvasyliev.bots.telegram.RedditTelegramForwarderBot; import com.github.yvasyliev.model.dto.post.MediaPost; import com.github.yvasyliev.model.dto.post.Post; import org.apache.http.client.utils.URIBuilder; @@ -17,7 +17,7 @@ public abstract class PostService implements ThrowingBiFunction> { @Autowired - protected RedTelBot redTelBot; + protected RedditTelegramForwarderBot redditTelegramForwarderBot; protected Message sendWithInputStream(ThrowingBiFunction telegramApiCall, MediaPost post) throws TelegramApiException { var mediaUrl = post.getMediaUrl(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java index 2414edf..49e17d9 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/TextPostService.java @@ -14,6 +14,6 @@ public class TextPostService extends PostService { @Override public Optional applyWithException(String chatId, TextPost post) throws TelegramApiException { - return Optional.ofNullable(redTelBot.execute(new SendMessage(chatId, post.getText()))); + return Optional.ofNullable(redditTelegramForwarderBot.execute(new SendMessage(chatId, post.getText()))); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java index 9040047..bfc2e09 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/VideoPostService.java @@ -23,7 +23,7 @@ public Optional applyWithException(String chatId, VideoPost post) throw .supportsStreaming(true) .build(); - return redTelBot.execute(sendVideo); + return redditTelegramForwarderBot.execute(sendVideo); }, post)); } } From 99313a2fcbff199f3a2de89064bb3996af86081d Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 17:38:05 +0200 Subject: [PATCH 54/93] toString() methods added --- .../com/github/yvasyliev/model/dto/post/GifPost.java | 5 +++++ .../github/yvasyliev/model/dto/post/MediaPost.java | 7 +++++++ .../yvasyliev/model/dto/post/PhotoGroupPost.java | 7 +++++++ .../github/yvasyliev/model/dto/post/PhotoPost.java | 5 +++++ .../com/github/yvasyliev/model/dto/post/PollPost.java | 7 +++++++ .../com/github/yvasyliev/model/dto/post/Post.java | 11 +++++++++++ .../yvasyliev/model/dto/post/SpoilerablePost.java | 7 +++++++ .../com/github/yvasyliev/model/dto/post/TextPost.java | 5 +++++ .../github/yvasyliev/model/dto/post/VideoPost.java | 5 +++++ .../yvasyliev/model/entities/BlockedAuthor.java | 7 +++++++ .../entities/RedditTelegramForwarderProperty.java | 8 ++++++++ 11 files changed, 74 insertions(+) diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java index cca7d22..d7fe208 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/GifPost.java @@ -5,4 +5,9 @@ public class GifPost extends MediaPost { public String getType() { return Type.GIF; } + + @Override + public String toString() { + return "GifPost{} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java index 211e528..82e79d1 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/MediaPost.java @@ -10,4 +10,11 @@ public String getMediaUrl() { public void setMediaUrl(String mediaUrl) { this.mediaUrl = mediaUrl; } + + @Override + public String toString() { + return "MediaPost{" + + "mediaUrl='" + mediaUrl + '\'' + + "} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java index c090818..f780c7c 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoGroupPost.java @@ -17,4 +17,11 @@ public void setPhotoUrlsPages(Queue> photoUrlsPages) { public String getType() { return Type.PHOTO_GROUP; } + + @Override + public String toString() { + return "PhotoGroupPost{" + + "photoUrlsPages=" + photoUrlsPages + + "} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java index 55ad7aa..2380d85 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PhotoPost.java @@ -5,4 +5,9 @@ public class PhotoPost extends MediaPost { public String getType() { return Type.PHOTO; } + + @Override + public String toString() { + return "PhotoPost{} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java index 7351575..56f947b 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/PollPost.java @@ -17,4 +17,11 @@ public void setOptions(List options) { public String getType() { return Type.POLL; } + + @Override + public String toString() { + return "PollPost{" + + "options=" + options + + "} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/Post.java b/src/main/java/com/github/yvasyliev/model/dto/post/Post.java index b0d954b..bcabc15 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/Post.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/Post.java @@ -54,6 +54,17 @@ public int compareTo(Post post) { return Integer.compare(created, post.created); } + @Override + public String toString() { + return "Post{" + + "created=" + created + + ", author='" + author + '\'' + + ", approved=" + approved + + ", postUrl='" + postUrl + '\'' + + ", text='" + text + '\'' + + '}'; + } + public interface Type { String GIF = "GIF"; String PHOTO_GROUP = "PHOTO_GROUP"; diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java b/src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java index b7edd49..71df181 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/SpoilerablePost.java @@ -11,4 +11,11 @@ public boolean isHasSpoiler() { public void setHasSpoiler(boolean hasSpoiler) { this.hasSpoiler = hasSpoiler; } + + @Override + public String toString() { + return "SpoilerablePost{" + + "hasSpoiler=" + hasSpoiler + + "} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java index b02465b..b5cd4a6 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/TextPost.java @@ -5,4 +5,9 @@ public class TextPost extends Post { public String getType() { return Type.TEXT; } + + @Override + public String toString() { + return "TextPost{} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java b/src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java index 7cbfea6..37477bb 100644 --- a/src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java +++ b/src/main/java/com/github/yvasyliev/model/dto/post/VideoPost.java @@ -5,4 +5,9 @@ public class VideoPost extends MediaPost { public String getType() { return Type.VIDEO; } + + @Override + public String toString() { + return "VideoPost{} " + super.toString(); + } } diff --git a/src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java b/src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java index bdc5539..ff0f9d7 100644 --- a/src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/model/entities/BlockedAuthor.java @@ -22,4 +22,11 @@ public String getUsername() { public void setUsername(String username) { this.username = username; } + + @Override + public String toString() { + return "BlockedAuthor{" + + "username='" + username + '\'' + + '}'; + } } diff --git a/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java b/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java index dcc7ae7..1075310 100644 --- a/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java +++ b/src/main/java/com/github/yvasyliev/model/entities/RedditTelegramForwarderProperty.java @@ -38,4 +38,12 @@ public String getValue() { public void setValue(String value) { this.value = value; } + + @Override + public String toString() { + return "RedditTelegramForwarderProperty{" + + "name=" + name + + ", value='" + value + '\'' + + '}'; + } } From b9c21cf6edd237683ad8293599b2bb11a13b9ab5 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 19:59:13 +0200 Subject: [PATCH 55/93] optimized postUrl extraction --- .../yvasyliev/service/deserializers/PostDeserializer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index d83df16..44d0eaf 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -29,7 +29,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var jsonPost = jsonParser.readValueAs(JsonNode.class); var author = jsonPost.get("author").textValue(); var created = jsonPost.get("created").intValue(); - var postUrl = jsonPost.has("url_overridden_by_dest") ? jsonPost.get("url_overridden_by_dest").textValue() : jsonPost.get("url").textValue(); // TODO: 11/8/2023 simplify + var postUrl = jsonPost.path("url_overridden_by_dest").asText(jsonPost.get("url").textValue()); jsonPost = extractRootPost(jsonPost); for (var postMapper : postMappers) { From 8cf2bb0751be2431185c8b6efd6d79f98cb964ce Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 20:20:29 +0200 Subject: [PATCH 56/93] renamed environment variables --- .../RedditAccessTokenRequestFactoryBean.java | 11 +++++------ src/main/resources/application.properties | 3 +++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java b/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java index 0c41f65..cfed457 100644 --- a/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java +++ b/src/main/java/com/github/yvasyliev/service/factories/RedditAccessTokenRequestFactoryBean.java @@ -1,7 +1,6 @@ package com.github.yvasyliev.service.factories; import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -15,19 +14,19 @@ @Component public class RedditAccessTokenRequestFactoryBean implements FactoryBean { - @Value("${REDDIT_CLIENT_ID}") + @Value("${reddit.client.id}") private String redditClientId; - @Value("${REDDIT_CLIENT_SECRET}") + @Value("${reddit.client.secret}") private String redditClientSecret; - @Value("${REDDIT_USERNAME}") + @Value("${reddit.username}") private String redditUsername; - @Value("${REDDIT_PASSWORD}") + @Value("${reddit.password}") private String redditPassword; - @Autowired + @Value("java:${project.artifactId}:${project.version} (by /u/${reddit.username})") private String userAgent; @Override diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7de6fbd..4937df8 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,3 +1,6 @@ +project.artifactId=@project.artifactId@ +project.version=@project.version@ + spring.datasource.driver-class-name=org.sqlite.JDBC spring.datasource.url=jdbc:sqlite:data.db From 7258e3098a950416910a606081ff8b85111932cd Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 20:41:14 +0200 Subject: [PATCH 57/93] refactored RedditVideoDownloader --- .../service/reddit/RedditVideoDownloader.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java index 9bc891a..aaeb3ef 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/RedditVideoDownloader.java @@ -6,20 +6,20 @@ import org.springframework.util.function.ThrowingFunction; import java.io.IOException; +import java.util.Optional; -// TODO: 11/7/2023 remove Jsoup @Service public class RedditVideoDownloader implements ThrowingFunction { @Override public String applyWithException(String redditPostUrl) throws IOException { var url = "https://rapidsave.com/info?url=%s".formatted(redditPostUrl); - var element = Jsoup.connect(url) - .get() - .select("div.download-info a") - .first(); - if (element == null) { - throw new VideoUrlParseException("Failed to parse video URL: %s".formatted(url)); - } - return element.attr("href"); + return Optional.ofNullable(Jsoup + .connect(url) + .get() + .select("div.download-info a") + .first() + ) + .map(element -> element.attr("href")) + .orElseThrow(() -> new VideoUrlParseException("Failed to parse video URL: %s".formatted(url))); } } From f791b51efd22421dbc2cfc02b39b2c684529f9f6 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Wed, 8 Nov 2023 20:55:42 +0200 Subject: [PATCH 58/93] renamed env variables --- src/main/java/com/github/yvasyliev/Application.java | 5 ----- .../yvasyliev/service/reddit/SubredditNewSupplier.java | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/Application.java index b22c4aa..25a5c23 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/Application.java @@ -70,11 +70,6 @@ public Module module(JsonDeserializer postJsonDeserializer) { return module; } - @Bean - public String userAgent(@Value("${REDDIT_USERNAME}") String redditUsername) { - return "java:reddit-telegram-repeater:2.0.0 (by /u/%s)".formatted(redditUsername); - } - @Bean public HttpClient httpClient() { return HttpClient.newHttpClient(); diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java index c20f396..c2f4480 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java @@ -16,10 +16,10 @@ @Service public class SubredditNewSupplier implements ThrowingSupplier { - @Value("${SUBREDDIT}") + @Value("${reddit.subreddit}") private String subreddit; - @Autowired + @Value("java:${project.artifactId}:${project.version} (by /u/${reddit.username})") private String userAgent; @Autowired From 37ad6377f2e0659a8f020f46a6c68364e29d3e00 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 09:58:26 +0200 Subject: [PATCH 59/93] removed SubredditPostSupplier.java --- .../service/reddit/SubredditNewSupplier.java | 57 ++++++++++++-- .../service/reddit/SubredditPostSupplier.java | 76 ------------------- .../telegram/ScheduledPostManager.java | 6 +- 3 files changed, 52 insertions(+), 87 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java index c2f4480..63b4a6a 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java @@ -1,8 +1,13 @@ package com.github.yvasyliev.service.reddit; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.yvasyliev.model.dto.RedditAccessToken; +import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.service.data.RedditTelegramForwarderPropertyService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.lang.NonNull; @@ -13,17 +18,18 @@ import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; +import java.util.List; +import java.util.Objects; +import java.util.Spliterator; +import java.util.Spliterators; +import java.util.stream.StreamSupport; @Service -public class SubredditNewSupplier implements ThrowingSupplier { - @Value("${reddit.subreddit}") - private String subreddit; - - @Value("java:${project.artifactId}:${project.version} (by /u/${reddit.username})") - private String userAgent; +public class SubredditNewSupplier implements ThrowingSupplier> { + private static final Logger LOGGER = LoggerFactory.getLogger(SubredditNewSupplier.class); @Autowired - private HttpClient httpClient; + private RedditTelegramForwarderPropertyService propertyService; @Autowired private ObjectMapper objectMapper; @@ -31,9 +37,44 @@ public class SubredditNewSupplier implements ThrowingSupplier { @Autowired private ThrowingSupplier redditAccessTokenSupplier; + @Value("${reddit.subreddit}") + private String subreddit; + + @Value("java:${project.artifactId}:${project.version} (by /u/${reddit.username})") + private String userAgent; + + @Autowired + private HttpClient httpClient; + @Override @NonNull - public JsonNode getWithException() throws Exception { + public List getWithException() throws Exception { + var subredditPosts = fetchNewPosts(); + var children = subredditPosts.withArray("/data/children").elements(); + var lastCreated = propertyService.findLastCreated().orElse(0); + return StreamSupport + .stream(Spliterators.spliteratorUnknownSize(children, Spliterator.ORDERED), false) + .map(child -> child.get("data")) + .filter(data -> data.get("created").intValue() > lastCreated) + .map(data -> { + try { + return objectMapper.treeToValue(data, Post.class); + } catch (JsonProcessingException e) { + LOGGER.error( + "Failed to deserialize post. Created: {}, URL: {}", + data.get("created").intValue(), + data.get("url").textValue(), + e + ); + return null; + } + }) + .filter(Objects::nonNull) + .sorted() + .toList(); + } + + private JsonNode fetchNewPosts() throws Exception { var redditAccessToken = redditAccessTokenSupplier.getWithException(); var authorization = "Bearer %s".formatted(redditAccessToken.token()); var api = "https://oauth.reddit.com/r/%s/new?raw_json=1".formatted(subreddit); diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java deleted file mode 100644 index 3a8ac94..0000000 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditPostSupplier.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.github.yvasyliev.service.reddit; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.yvasyliev.model.dto.post.Post; -import com.github.yvasyliev.service.data.RedditTelegramForwarderPropertyService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.lang.NonNull; -import org.springframework.stereotype.Service; -import org.springframework.util.function.ThrowingSupplier; - -import java.time.Instant; -import java.time.temporal.ChronoUnit; -import java.util.List; -import java.util.Objects; -import java.util.Spliterator; -import java.util.Spliterators; -import java.util.stream.StreamSupport; - -@Service -public class SubredditPostSupplier implements ThrowingSupplier> { - private static final Logger LOGGER = LoggerFactory.getLogger(SubredditPostSupplier.class); - - @Autowired - private ThrowingSupplier subredditNewSupplier; - - @Value("30") - private int delayMinutes; - - @Autowired - private RedditTelegramForwarderPropertyService propertyService; - - @Autowired - private ObjectMapper objectMapper; - - @Override - @NonNull - public List getWithException() throws Exception { - var subredditPosts = subredditNewSupplier.getWithException(); - var children = subredditPosts - .get("data") - .get("children") - .elements(); - var lastCreated = propertyService.findLastCreated().orElse(0); - return StreamSupport - .stream(Spliterators.spliteratorUnknownSize(children, Spliterator.ORDERED), false) - .map(child -> child.get("data")) - .filter(data -> { - var created = data.get("created").intValue(); - var createdUtc = Instant.ofEpochMilli(created * 1000L); - var deadline = Instant.now().minus(delayMinutes, ChronoUnit.MINUTES); - return created > lastCreated - && createdUtc.isBefore(deadline); - }) - .map(data -> { - try { - return objectMapper.treeToValue(data, Post.class); - } catch (JsonProcessingException e) { - LOGGER.error( - "Failed to deserialize post. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url").textValue(), - e - ); - return null; - } - }) - .filter(Objects::nonNull) - .sorted() - .toList(); - } -} diff --git a/src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java index 7d018c3..a7167bd 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.service.telegram; -import com.github.yvasyliev.service.reddit.SubredditPostSupplier; +import com.github.yvasyliev.service.reddit.SubredditNewSupplier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -19,14 +19,14 @@ public class ScheduledPostManager extends PostManager { private AtomicBoolean isPosting; @Autowired - private SubredditPostSupplier subredditPostSupplier; + private SubredditNewSupplier subredditNewSupplier; @Scheduled(fixedDelayString = "${telegram.schedule.posting.delay.in.minutes:1}", timeUnit = TimeUnit.MINUTES) public void shareNewPosts() { if (isPosting.get()) { try { - var newPosts = subredditPostSupplier.getWithException(); + var newPosts = subredditNewSupplier.getWithException(); publishPosts(newPosts); } catch (Exception e) { LOGGER.error("Failed to find new posts.", e); From b1687c011a36b4247e9bbf85141621c73d7bc985 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 10:07:33 +0200 Subject: [PATCH 60/93] Command#execute -> protected --- .../yvasyliev/service/telegram/commands/AddBlockedAuthor.java | 2 +- .../github/yvasyliev/service/telegram/commands/BlockAuthor.java | 2 +- .../com/github/yvasyliev/service/telegram/commands/Cancel.java | 2 +- .../com/github/yvasyliev/service/telegram/commands/Command.java | 2 +- .../yvasyliev/service/telegram/commands/ContactAdmin.java | 2 +- .../github/yvasyliev/service/telegram/commands/GetBlocked.java | 2 +- .../yvasyliev/service/telegram/commands/PausePublishing.java | 2 +- .../yvasyliev/service/telegram/commands/PostSuggested.java | 2 +- .../service/telegram/commands/RemoveBlockedAuthor.java | 2 +- .../github/yvasyliev/service/telegram/commands/ReplySent.java | 2 +- .../yvasyliev/service/telegram/commands/ResumePublishing.java | 2 +- .../com/github/yvasyliev/service/telegram/commands/Start.java | 2 +- .../com/github/yvasyliev/service/telegram/commands/Stop.java | 2 +- .../github/yvasyliev/service/telegram/commands/SuggestPost.java | 2 +- .../github/yvasyliev/service/telegram/commands/TextAdmin.java | 2 +- .../yvasyliev/service/telegram/commands/UnblockAuthor.java | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java index 5a7b790..fa1a17a 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/AddBlockedAuthor.java @@ -23,7 +23,7 @@ public class AddBlockedAuthor extends AdminCommand { private MarkdownV2Escaper markdownV2Escaper; @Override - public void execute(Message message) throws IOException, TelegramApiException, URISyntaxException { + protected void execute(Message message) throws IOException, TelegramApiException, URISyntaxException { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java index 0e7d7b8..e8dc1cb 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/BlockAuthor.java @@ -10,7 +10,7 @@ @Service("/blockauthor") public class BlockAuthor extends AdminCommand { @Override - public void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { + protected void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/addblockedauthor"); reply(message, "responses/blockauthor.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java index a00aa74..006e271 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Cancel.java @@ -10,7 +10,7 @@ @Service("/cancel") public class Cancel extends Command { @Override - public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + protected void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { redditTelegramForwarderBot.removeUserCommand(message.getFrom().getId()); reply(message, "responses/cancel.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java index 268c199..259d1d4 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Command.java @@ -26,7 +26,7 @@ public void acceptWithException(Message message) throws Exception { } } - abstract void execute(Message message) throws Exception; + protected abstract void execute(Message message) throws Exception; protected boolean hasPermission(Message message) { return true; diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java index 13d7488..2c4148a 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ContactAdmin.java @@ -6,7 +6,7 @@ @Service("/contactadmin") public class ContactAdmin extends Command { @Override - public void execute(Message message) throws Exception { + protected void execute(Message message) throws Exception { redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/textadmin"); reply(message, "responses/contactadmin.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java index 9e39a82..68a85ae 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/GetBlocked.java @@ -13,7 +13,7 @@ public class GetBlocked extends AdminCommand { private BlockedAuthorRepository blockedAuthorRepository; @Override - public void execute(Message message) throws Exception { + protected void execute(Message message) throws Exception { var blockedAuthorTemplate = responseReader.applyWithException("responses/getblocked/blocked_author.md"); var blockedAuthors = blockedAuthorRepository .findAll() diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java index 40d5eb9..85b2a1d 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java @@ -17,7 +17,7 @@ public class PausePublishing extends AdminCommand { private ScheduledPostManager postManager; @Override - public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + protected void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.pausePosting(); redditTelegramForwarderBot.execute(new SendMessage( message.getChatId().toString(), diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java index ede316b..e199d23 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PostSuggested.java @@ -22,7 +22,7 @@ public class PostSuggested extends Command { private ObjectMapper objectMapper; @Override - public void execute(Message message) throws TelegramApiException, IOException, URISyntaxException { + protected void execute(Message message) throws TelegramApiException, IOException, URISyntaxException { var sourceChatId = message.getChatId().toString(); var sourceMessageId = message.getMessageId(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java index bcfcc71..880486f 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/RemoveBlockedAuthor.java @@ -20,7 +20,7 @@ public class RemoveBlockedAuthor extends AdminCommand { private BlockedAuthorService blockedAuthorService; @Override - public void execute(Message message) throws Exception { + protected void execute(Message message) throws Exception { var optionalUsername = usernameParser.apply(message); if (optionalUsername.isPresent()) { var username = optionalUsername.get(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java index b8b6354..1e7f493 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ReplySent.java @@ -17,7 +17,7 @@ public class ReplySent extends AdminCommand { private MarkdownV2Escaper markdownV2Escaper; @Override - public void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { + protected void execute(Message message) throws URISyntaxException, IOException, TelegramApiException { if (message.hasText()) { var userId = message.getFrom().getId(); redditTelegramForwarderBot.removeUserCommand(userId); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java index 6b2ce9e..8d49faa 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java @@ -17,7 +17,7 @@ public class ResumePublishing extends AdminCommand { private ScheduledPostManager postManager; @Override - public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + protected void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { postManager.resumePosting(); redditTelegramForwarderBot.execute(new SendMessage( message.getChatId().toString(), diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java index 573dd93..80d0c4a 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Start.java @@ -14,7 +14,7 @@ public class Start extends Command { private String telegramChannelName; @Override - public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + protected void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { if (redditTelegramForwarderBot.isAdmin(message.getFrom())) { reply( message, diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java index 24fd58e..df42006 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/Stop.java @@ -15,7 +15,7 @@ public class Stop extends AdminCommand { private ConfigurableApplicationContext context; @Override - public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + protected void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { context.close(); reply(message, "responses/stop.md", redditTelegramForwarderBot.getBotUsername()); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java index facc982..0e865ed 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/SuggestPost.java @@ -10,7 +10,7 @@ @Service("/suggestpost") public class SuggestPost extends Command { @Override - public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + protected void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/postsuggested"); reply(message, "responses/suggestpost.md"); } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java index a7677e2..ef3d39c 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/TextAdmin.java @@ -21,7 +21,7 @@ public class TextAdmin extends Command { private ObjectMapper objectMapper; @Override - public void execute(Message message) throws TelegramApiException, IOException, URISyntaxException { + protected void execute(Message message) throws TelegramApiException, IOException, URISyntaxException { redditTelegramForwarderBot.removeUserCommand(message.getFrom().getId()); var sourceChatId = message.getChatId(); var sourceMessageId = message.getMessageId(); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java index 6221201..85c0afd 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/UnblockAuthor.java @@ -10,7 +10,7 @@ @Service("/unblockauthor") public class UnblockAuthor extends AdminCommand { @Override - public void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { + protected void execute(Message message) throws TelegramApiException, URISyntaxException, IOException { redditTelegramForwarderBot.addUserCommand(message.getFrom().getId(), "/removeblockedauthor"); reply(message, "responses/unblockauthor.md"); } From e661ded2b08cb988ee1e16d99a3c8c114e19ccb6 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 10:08:08 +0200 Subject: [PATCH 61/93] UsernameParser -> @Component --- .../yvasyliev/service/telegram/factory/UsernameParser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java index f97c85e..573ad14 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java @@ -1,13 +1,13 @@ package com.github.yvasyliev.service.telegram.factory; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.api.objects.Message; import java.util.Optional; import java.util.function.Function; import java.util.regex.Pattern; -@Service +@Component public class UsernameParser implements Function> { @Override public Optional apply(Message message) { From 29f0d1241dd6aefb6025f73c5202286f7b0cfc23 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 10:14:32 +0200 Subject: [PATCH 62/93] optimized UsernameParser --- .../telegram/factory/UsernameParser.java | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java index 573ad14..3b8a87b 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/factory/UsernameParser.java @@ -11,28 +11,27 @@ public class UsernameParser implements Function> { @Override public Optional apply(Message message) { - if (!message.hasText()) { - return Optional.empty(); - } + return Optional + .ofNullable(message.getText()) + .map(String::trim) + .map(username -> { + var matcher = Pattern + .compile("https://www\\.reddit\\.com/user/([\\w-]+)") + .matcher(username); + if (matcher.find()) { + return matcher.group(1); + } - var username = message.getText().trim(); + matcher = Pattern + .compile("u/([\\w-]+)") + .matcher(username); + if (matcher.matches()) { + return matcher.group(1); + } - var matcher = Pattern - .compile("https://www\\.reddit\\.com/user/([\\w-]+)") - .matcher(username); - if (matcher.find()) { - username = matcher.group(1); - } - - matcher = Pattern - .compile("u/([\\w-]+)") - .matcher(username); - if (matcher.matches()) { - username = matcher.group(1); - } - - return username.matches("[\\w-]+") - ? Optional.of(username) - : Optional.empty(); + return username.matches("[\\w-]+") + ? username + : null; + }); } } From 4aee4a6f75898d95a21f977de957863000e6f9e3 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 10:31:52 +0200 Subject: [PATCH 63/93] created PhotoPostService#sendPhoto --- .../service/telegram/posts/PhotoPostService.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java index 921931b..727f8bf 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoPostService.java @@ -19,6 +19,10 @@ public class PhotoPostService extends PostService { @Override public Optional applyWithException(String chatId, PhotoPost post) throws TelegramApiException { + return Optional.ofNullable(sendPhoto(chatId, post)); + } + + public Message sendPhoto(String chatId, PhotoPost post) throws TelegramApiException { try { var sendPhoto = SendPhoto.builder() .chatId(chatId) @@ -26,9 +30,9 @@ public Optional applyWithException(String chatId, PhotoPost post) throw .caption(post.getText()) .hasSpoiler(post.isHasSpoiler()) .build(); - return Optional.ofNullable(redditTelegramForwarderBot.execute(sendPhoto)); + return redditTelegramForwarderBot.execute(sendPhoto); } catch (TelegramApiRequestException e) { - return Optional.ofNullable(retrySendPhoto(chatId, post, e)); + return retrySendPhoto(chatId, post, e); } } From 2abd48ed1b9a529a144bcc05315b97f8be623d54 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 10:33:14 +0200 Subject: [PATCH 64/93] BotResponseReader -> @Component --- .../yvasyliev/service/telegram/readers/BotResponseReader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java index d844613..e0ca832 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java @@ -1,14 +1,14 @@ package com.github.yvasyliev.service.telegram.readers; import org.springframework.core.io.ClassPathResource; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import org.springframework.util.function.ThrowingFunction; import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Files; -@Service +@Component public class BotResponseReader implements ThrowingFunction { @Override public String applyWithException(String file) throws URISyntaxException, IOException { From 1890fbb6a8bd0c64114d91e10b6ed912e382ab33 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 10:34:33 +0200 Subject: [PATCH 65/93] removed ChatIdFactory.java --- .../service/telegram/ChatIdFactory.java | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java diff --git a/src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java b/src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java deleted file mode 100644 index 4ce6c46..0000000 --- a/src/main/java/com/github/yvasyliev/service/telegram/ChatIdFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.github.yvasyliev.service.telegram; - -import com.github.yvasyliev.model.dto.post.Post; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.util.function.Function; - -@Component -public class ChatIdFactory implements Function { - @Value("${telegram.admin.id}") - private String adminId; - - @Value("${telegram.channel.id}") - private String channelId; - - @Override - public String apply(Post post) { - return post.isApproved() ? channelId : adminId; - } -} From 74865b9ebd982a8d9246ac5f2b9dd99204fb78f2 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 10:49:54 +0200 Subject: [PATCH 66/93] PhotoGroupPostService#onNewChannelPostEvent moved from PostManager --- .../service/telegram/PostManager.java | 18 ------------- .../telegram/posts/PhotoGroupPostService.java | 27 +++++++++++++++---- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 388685d..3c75abd 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -5,15 +5,12 @@ import com.github.yvasyliev.bots.telegram.RedditTelegramForwarderBot; import com.github.yvasyliev.model.dto.RedditPostDecisionData; import com.github.yvasyliev.model.dto.post.Post; -import com.github.yvasyliev.model.events.NewChannelPostEvent; import com.github.yvasyliev.service.data.RedditTelegramForwarderPropertyService; -import com.github.yvasyliev.service.telegram.posts.PhotoGroupPostService; import com.github.yvasyliev.service.telegram.posts.PostService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; -import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; @@ -23,7 +20,6 @@ import java.util.List; import java.util.Map; -import java.util.concurrent.ExecutionException; @Service public class PostManager { @@ -44,9 +40,6 @@ public class PostManager { @Autowired private RedditTelegramForwarderPropertyService propertyService; - @Autowired - private PhotoGroupPostService photoGroupPostService; - public void publishPosts(List posts) { posts.forEach(this::publishPost); } @@ -76,17 +69,6 @@ public void publishPost(T post, String postServiceName) throws } } - // TODO: 11/8/2023 Move to PhotoGroupPostService - @EventListener - public void onNewChannelPostEvent(NewChannelPostEvent newChannelPostEvent) { - var channelPost = newChannelPostEvent.getChannelPost(); - try { - photoGroupPostService.sendExtraPhotos(channelPost.messageId(), channelPost.forwardFromMessageId()); - } catch (ExecutionException | InterruptedException e) { - LOGGER.error("Failed to send extra photos.", e); - } - } - public void publishPostCandidate(int created) { var post = rejectPostCandidate(created); post.setApproved(true); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 7ed6c0a..fe2eaa0 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -2,8 +2,12 @@ import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; +import com.github.yvasyliev.model.events.NewChannelPostEvent; import com.github.yvasyliev.service.telegram.readers.BotResponseReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.event.EventListener; import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.ParseMode; @@ -28,6 +32,8 @@ @Service(Post.Type.PHOTO_GROUP) public class PhotoGroupPostService extends PostService> { + private static final Logger LOGGER = LoggerFactory.getLogger(PhotoGroupPostService.class); + @Autowired private BotResponseReader responseReader; @@ -65,11 +71,22 @@ public Optional> applyWithException(@NonNull String chatId, PhotoG return Optional.of(messages); } - public List sendExtraPhotos(int replyToMessageId, int forwardMessageId) throws ExecutionException, InterruptedException { - var post = extraPhotos.remove(forwardMessageId); - return post != null - ? sendDelayed(redditTelegramForwarderBot.getChatId(), replyToMessageId, post) - : List.of(); + @EventListener + public void onNewChannelPostEvent(NewChannelPostEvent newChannelPostEvent) { + var channelPost = newChannelPostEvent.getChannelPost(); + Optional + .ofNullable(extraPhotos.remove(channelPost.forwardFromMessageId())) + .ifPresent(post -> { + try { + sendDelayed( + redditTelegramForwarderBot.getChatId(), + channelPost.messageId(), + post + ); + } catch (ExecutionException | InterruptedException e) { + LOGGER.error("Failed to send extra photos.", e); + } + }); } private List sendDelayed(String chatId, int replyToMessageId, PhotoGroupPost post) throws ExecutionException, InterruptedException { From d27e405f8ecad53d76bd62198f7616b5edf90647 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 11:04:05 +0200 Subject: [PATCH 67/93] optimized Application --- .../com/github/yvasyliev/Application.java | 48 ++----------------- .../telegram/RedditTelegramForwarderBot.java | 3 ++ .../service/telegram/PostManager.java | 2 + .../telegram/posts/PhotoGroupPostService.java | 2 + 4 files changed, 11 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/Application.java index 25a5c23..50fc16b 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/Application.java @@ -1,11 +1,8 @@ package com.github.yvasyliev; import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; -import com.github.yvasyliev.model.dto.ExternalMessageData; -import com.github.yvasyliev.model.dto.post.PhotoGroupPost; import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.telegram.commands.Start; import org.springframework.beans.factory.annotation.Value; @@ -17,10 +14,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Scope; import org.springframework.scheduling.annotation.EnableScheduling; -import org.telegram.telegrambots.meta.TelegramBotsApi; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.starter.TelegramBotStarterConfiguration; -import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; import java.net.http.HttpClient; import java.util.Collections; @@ -51,23 +45,14 @@ public Start help(Start start) { return start; } - @Bean - public TelegramBotsApi telegramBotsApi() throws TelegramApiException { - return new TelegramBotsApi(DefaultBotSession.class); - } - @Bean public ObjectMapper objectMapper(JsonDeserializer postJsonDeserializer) { - var mapper = new ObjectMapper(); - mapper.registerModule(module(postJsonDeserializer)); - return mapper; - } - - @Bean - public Module module(JsonDeserializer postJsonDeserializer) { var module = new SimpleModule(); module.addDeserializer(Post.class, postJsonDeserializer); - return module; + + var mapper = new ObjectMapper(); + mapper.registerModule(module); + return mapper; } @Bean @@ -85,29 +70,4 @@ protected boolean removeEldestEntry(Map.Entry eldest) { } }); } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map integerPostMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map integerPhotoGroupPostMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map longStringMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - - @Bean - @Scope(BeanDefinition.SCOPE_PROTOTYPE) - public Map longExternalMessageDataMap(@Value("16") int maxSize) { - return synchronizedFixedSizeMap(maxSize); - } - } diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java index ccf8815..362336a 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java @@ -13,6 +13,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; @@ -45,9 +46,11 @@ public class RedditTelegramForwarderBot extends TelegramLongPollingBot { private BotSession botSession; @Autowired + @Qualifier("synchronizedFixedSizeMap") private Map userCommands; @Autowired + @Qualifier("synchronizedFixedSizeMap") private Map awaitingReplies; @Autowired diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 3c75abd..85031d7 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -10,6 +10,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; @@ -35,6 +36,7 @@ public class PostManager { private ObjectMapper objectMapper; @Autowired + @Qualifier("synchronizedFixedSizeMap") private Map postCandidates; @Autowired diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index fe2eaa0..8c061f7 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.event.EventListener; import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; @@ -38,6 +39,7 @@ public class PhotoGroupPostService extends PostService extraPhotos; @Autowired From 06c3d1f68257f532bdb4af033272e05b8bfa8cbf Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 15:02:44 +0200 Subject: [PATCH 68/93] created reddit.authors.blocked.by.default property --- .../service/deserializers/PostDeserializer.java | 6 +++++- .../yvasyliev/service/telegram/PostManager.java | 12 +++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java index 44d0eaf..4b2e5f5 100644 --- a/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java +++ b/src/main/java/com/github/yvasyliev/service/deserializers/PostDeserializer.java @@ -9,6 +9,7 @@ import com.github.yvasyliev.model.dto.post.Post; import com.github.yvasyliev.service.data.BlockedAuthorService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.function.ThrowingFunction; @@ -24,6 +25,9 @@ public class PostDeserializer extends JsonDeserializer { @Autowired private BlockedAuthorService blockedAuthorService; + @Value("${reddit.authors.blocked.by.default:false}") + private boolean authorsBlockedByDefault; + @Override public Post deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { var jsonPost = jsonParser.readValueAs(JsonNode.class); @@ -37,7 +41,7 @@ public Post deserialize(JsonParser jsonParser, DeserializationContext deserializ var optionalPost = postMapper.applyWithException(jsonPost).map(post -> { post.setAuthor(author); post.setCreated(created); - post.setApproved(!blockedAuthorService.isBlocked(author)); + post.setApproved(!authorsBlockedByDefault && !blockedAuthorService.isBlocked(author)); post.setPostUrl(postUrl); return post; }); diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 85031d7..0e8a571 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -12,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; @@ -21,8 +20,8 @@ import java.util.List; import java.util.Map; +import java.util.Optional; -@Service public class PostManager { private static final Logger LOGGER = LoggerFactory.getLogger(PostManager.class); @@ -72,9 +71,12 @@ public void publishPost(T post, String postServiceName) throws } public void publishPostCandidate(int created) { - var post = rejectPostCandidate(created); - post.setApproved(true); - publishPost(post); + Optional + .ofNullable(rejectPostCandidate(created)) + .ifPresent(post -> { + post.setApproved(true); + publishPost(post); + }); } public Post rejectPostCandidate(int created) { From c01178e7f2540908e7bdc78992422db53025219d Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 15:17:58 +0200 Subject: [PATCH 69/93] sending callback query answer --- .../yvasyliev/service/telegram/callbacks/ApprovePost.java | 6 ++++++ .../service/telegram/callbacks/ApproveRedditPost.java | 6 ++++++ .../yvasyliev/service/telegram/callbacks/RejectPost.java | 6 ++++++ .../service/telegram/callbacks/RejectRedditPost.java | 6 ++++++ .../github/yvasyliev/service/telegram/callbacks/Reply.java | 5 +++++ 5 files changed, 29 insertions(+) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java index 3040122..5db2600 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApprovePost.java @@ -2,6 +2,7 @@ import com.github.yvasyliev.model.dto.ExternalMessageData; import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.AnswerCallbackQuery; import org.telegram.telegrambots.meta.api.methods.ForwardMessage; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; @@ -20,6 +21,11 @@ public void acceptWithException(CallbackQuery callbackQuery) throws TelegramApiE var chatId = message.getChatId(); var messageId = message.getMessageId(); var messageData = objectMapper.readValue(callbackQuery.getData(), ExternalMessageData.class); + var answerCallbackQuery = AnswerCallbackQuery.builder() + .callbackQueryId(callbackQuery.getId()) + .text("Approving post...") + .build(); + redditTelegramForwarderBot.execute(answerCallbackQuery); redditTelegramForwarderBot.execute(new ForwardMessage( redditTelegramForwarderBot.getChannelId(), messageData.fromChatId(), diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java index 8d9bc51..2cb029a 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/ApproveRedditPost.java @@ -4,6 +4,7 @@ import com.github.yvasyliev.service.telegram.PostManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.AnswerCallbackQuery; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; @@ -24,6 +25,11 @@ public void acceptWithException(CallbackQuery callbackQuery) throws IOException, var chatId = message.getChatId(); var messageId = message.getMessageId(); var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); + var answerCallbackQuery = AnswerCallbackQuery.builder() + .callbackQueryId(callbackQuery.getId()) + .text("Approving post...") + .build(); + redditTelegramForwarderBot.execute(answerCallbackQuery); postManager.publishPostCandidate(data.created()); redditTelegramForwarderBot.execute(new EditMessageReplyMarkup( chatId.toString(), diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java index ba323ba..1bd32d7 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectPost.java @@ -1,6 +1,7 @@ package com.github.yvasyliev.service.telegram.callbacks; import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.AnswerCallbackQuery; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; @@ -13,6 +14,11 @@ public void acceptWithException(CallbackQuery callbackQuery) throws Exception { var message = callbackQuery.getMessage(); var chatId = message.getChatId(); var messageId = message.getMessageId(); + var answerCallbackQuery = AnswerCallbackQuery.builder() + .callbackQueryId(callbackQuery.getId()) + .text("Rejecting post...") + .build(); + redditTelegramForwarderBot.execute(answerCallbackQuery); redditTelegramForwarderBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java index 98898f6..826e4cd 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/RejectRedditPost.java @@ -4,6 +4,7 @@ import com.github.yvasyliev.service.telegram.PostManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.AnswerCallbackQuery; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageReplyMarkup; import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText; @@ -21,6 +22,11 @@ public void acceptWithException(CallbackQuery callbackQuery) throws Exception { var messageId = message.getMessageId(); var data = objectMapper.readValue(callbackQuery.getData(), RedditPostDecisionData.class); postManager.rejectPostCandidate(data.created()); + var answerCallbackQuery = AnswerCallbackQuery.builder() + .callbackQueryId(callbackQuery.getId()) + .text("Rejecting post...") + .build(); + redditTelegramForwarderBot.execute(answerCallbackQuery); redditTelegramForwarderBot.execute(new EditMessageReplyMarkup( chatId.toString(), messageId, diff --git a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java index fef25f3..569d550 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/callbacks/Reply.java @@ -4,6 +4,7 @@ import com.github.yvasyliev.service.telegram.readers.BotResponseReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.AnswerCallbackQuery; import org.telegram.telegrambots.meta.api.methods.ParseMode; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.CallbackQuery; @@ -23,6 +24,10 @@ public void acceptWithException(CallbackQuery callbackQuery) throws IOException, var userId = callbackQuery.getFrom().getId(); redditTelegramForwarderBot.addUserCommand(userId, "/replysent"); redditTelegramForwarderBot.addAwaitingReply(userId, messageData); + var answerCallbackQuery = AnswerCallbackQuery.builder() + .callbackQueryId(callbackQuery.getId()) + .build(); + redditTelegramForwarderBot.execute(answerCallbackQuery); var sendMessage = SendMessage.builder() .chatId(userId) .text(responseReader.applyWithException("responses/reply.md")) From a208b012c605efc30b89a7995016cd2d3d2dda45 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 15:23:25 +0200 Subject: [PATCH 70/93] renamed commands --- .../commands/{PausePublishing.java => PausePosting.java} | 7 +++---- .../commands/{ResumePublishing.java => ResumePosting.java} | 7 +++---- src/main/resources/responses/admin/start.md | 4 ++-- .../responses/{pausepublishing.md => pauseposting.md} | 0 .../resources/responses/postsuggested/post_suggested.md | 2 +- src/main/resources/responses/postsuggested/suggest_post.md | 2 +- .../responses/{resumepublishing.md => resumeposting.md} | 0 7 files changed, 10 insertions(+), 12 deletions(-) rename src/main/java/com/github/yvasyliev/service/telegram/commands/{PausePublishing.java => PausePosting.java} (86%) rename src/main/java/com/github/yvasyliev/service/telegram/commands/{ResumePublishing.java => ResumePosting.java} (86%) rename src/main/resources/responses/{pausepublishing.md => pauseposting.md} (100%) rename src/main/resources/responses/{resumepublishing.md => resumeposting.md} (100%) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePosting.java similarity index 86% rename from src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java rename to src/main/java/com/github/yvasyliev/service/telegram/commands/PausePosting.java index 85b2a1d..addfc8c 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/PausePosting.java @@ -10,9 +10,8 @@ import java.io.IOException; import java.net.URISyntaxException; -// TODO: 11/8/2023 rename to pauseposting -@Service("/pausepublishing") -public class PausePublishing extends AdminCommand { +@Service("/pauseposting") +public class PausePosting extends AdminCommand { @Autowired private ScheduledPostManager postManager; @@ -21,7 +20,7 @@ protected void execute(Message message) throws TelegramApiException, URISyntaxEx postManager.pausePosting(); redditTelegramForwarderBot.execute(new SendMessage( message.getChatId().toString(), - responseReader.applyWithException("responses/pausepublishing.md") + responseReader.applyWithException("responses/pauseposting.md") )); } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePosting.java similarity index 86% rename from src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java rename to src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePosting.java index 8d49faa..82abe50 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePublishing.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/commands/ResumePosting.java @@ -10,9 +10,8 @@ import java.io.IOException; import java.net.URISyntaxException; -// TODO: 11/8/2023 rename to resumeposting -@Service("/resumepublishing") -public class ResumePublishing extends AdminCommand { +@Service("/resumeposting") +public class ResumePosting extends AdminCommand { @Autowired private ScheduledPostManager postManager; @@ -21,7 +20,7 @@ protected void execute(Message message) throws TelegramApiException, URISyntaxEx postManager.resumePosting(); redditTelegramForwarderBot.execute(new SendMessage( message.getChatId().toString(), - responseReader.applyWithException("responses/resumepublishing.md") + responseReader.applyWithException("responses/resumeposting.md") )); } } diff --git a/src/main/resources/responses/admin/start.md b/src/main/resources/responses/admin/start.md index 67fe310..7bb779d 100644 --- a/src/main/resources/responses/admin/start.md +++ b/src/main/resources/responses/admin/start.md @@ -11,7 +11,7 @@ Use these command to control me: *Admin commands* /blockauthor - block Reddit author /getblocked - show blocked Reddit authors -/pausepublishing - pause fetching posts from subreddit -/resumepublishing - resume fetching posts from subreddit +/pauseposting - pause fetching posts from subreddit +/resumeposting - resume fetching posts from subreddit /stop - stop %s /unblockauthor - unblock Reddit author \ No newline at end of file diff --git a/src/main/resources/responses/pausepublishing.md b/src/main/resources/responses/pauseposting.md similarity index 100% rename from src/main/resources/responses/pausepublishing.md rename to src/main/resources/responses/pauseposting.md diff --git a/src/main/resources/responses/postsuggested/post_suggested.md b/src/main/resources/responses/postsuggested/post_suggested.md index 32547c4..0147afa 100644 --- a/src/main/resources/responses/postsuggested/post_suggested.md +++ b/src/main/resources/responses/postsuggested/post_suggested.md @@ -1,2 +1,2 @@ -✍️ Your post has been sent to moderation. +🔍️ Your post has been sent to moderation. Once it's approved, you'll see it in the channel. 😎 \ No newline at end of file diff --git a/src/main/resources/responses/postsuggested/suggest_post.md b/src/main/resources/responses/postsuggested/suggest_post.md index 5403580..31666b2 100644 --- a/src/main/resources/responses/postsuggested/suggest_post.md +++ b/src/main/resources/responses/postsuggested/suggest_post.md @@ -1 +1 @@ -👆 Shall I publish the post above? \ No newline at end of file +👆 Shall I approve the post above? \ No newline at end of file diff --git a/src/main/resources/responses/resumepublishing.md b/src/main/resources/responses/resumeposting.md similarity index 100% rename from src/main/resources/responses/resumepublishing.md rename to src/main/resources/responses/resumeposting.md From f9b6354e76506225566082ed4dfcabcdaa5e534f Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 16:30:01 +0200 Subject: [PATCH 71/93] build with spring-boot-maven-plugin --- pom.xml | 75 +++++++++++++++------------------------------------------ 1 file changed, 19 insertions(+), 56 deletions(-) diff --git a/pom.xml b/pom.xml index 2a42683..1968c9e 100644 --- a/pom.xml +++ b/pom.xml @@ -23,62 +23,8 @@ - org.apache.maven.plugins - maven-shade-plugin - 3.4.1 - - - io.github.edwgiz - log4j-maven-shade-plugin-extensions - 2.20.0 - - - - - - - shade - - package - - false - true - - - *:* - - module-info.class - META-INF/*.markdown - META-INF/DEPENDENCIES - META-INF/*.handlers - META-INF/*.schemas - META-INF/*.tooling - META-INF/versions/*/module-info.class - META-INF/spring/*.factories - META-INF/*.MF - - - - - - - - - - com.github.yvasyliev.Application - - true - - - - - - + org.springframework.boot + spring-boot-maven-plugin @@ -93,6 +39,11 @@ org.springframework.boot spring-boot-starter-logging + + + org.yaml + snakeyaml + @@ -127,6 +78,18 @@ org.springframework.boot spring-boot-starter-test test + + + + org.mockito + mockito-core + + + + org.mockito + mockito-junit-jupiter + + From ff284012036ad7a4f6ab71f1768c1f593d4de787 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 16:44:52 +0200 Subject: [PATCH 72/93] rearrange code --- .../telegram/RedditTelegramForwarderBot.java | 76 +++++++++---------- .../service/telegram/PostManager.java | 26 +++---- .../telegram/posts/PhotoGroupPostService.java | 64 ++++++++-------- 3 files changed, 83 insertions(+), 83 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java index 362336a..7840fdb 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java @@ -81,6 +81,11 @@ public void setBotSession(BotSession botSession) { LOGGER.info("{} started long polling.", getBotUsername()); } + @Override + public String getBotUsername() { + return botUsername; + } + @PreDestroy public void stopPolling() { botSession.stop(); @@ -107,10 +112,37 @@ public void onMessageReceived(Message message) { } } + public void onCallbackQueryReceived(CallbackQuery callbackQuery) { + var message = callbackQuery.getMessage(); + if (message.isUserMessage() && isAdmin(callbackQuery.getFrom())) { + try { + var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); + context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); + } catch (JsonProcessingException e) { + LOGGER.error("Failed to parse callback data {}", callbackQuery.getData(), e); + } catch (Exception e) { + LOGGER.error("Failed to handle callback", e); + } + } + } + public void onUserMessageReceived(Message message) { getCommand(message).ifPresent(command -> onCommandReceived(command, message)); } + public boolean isAdmin(User user) { + return user.getId().toString().equals(getAdminId()); + } + + private Optional getCommand(Message message) { + var userId = message.getFrom().getId(); + if (message.isCommand()) { + return Optional.ofNullable(removeUserCommand(userId)) + .or(() -> Optional.of(message.getText().trim())); + } + return Optional.ofNullable(userCommands.get(userId)); + } + public void onCommandReceived(String command, Message message) { if (context.containsBean(command)) { try { @@ -123,28 +155,18 @@ public void onCommandReceived(String command, Message message) { } } - public void onCallbackQueryReceived(CallbackQuery callbackQuery) { - var message = callbackQuery.getMessage(); - if (message.isUserMessage() && isAdmin(callbackQuery.getFrom())) { - try { - var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); - context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); - } catch (JsonProcessingException e) { - LOGGER.error("Failed to parse callback data {}", callbackQuery.getData(), e); - } catch (Exception e) { - LOGGER.error("Failed to handle callback", e); - } - } - } - - public String addUserCommand(long userId, String command) { - return userCommands.put(userId, command); + public String getAdminId() { + return adminId; } public String removeUserCommand(long userId) { return userCommands.remove(userId); } + public String addUserCommand(long userId, String command) { + return userCommands.put(userId, command); + } + public ExternalMessageData addAwaitingReply(Long userId, ExternalMessageData messageData) { return awaitingReplies.put(userId, messageData); } @@ -153,10 +175,6 @@ public ExternalMessageData getAwaitingReply(Long userId) { return awaitingReplies.remove(userId); } - public boolean isAdmin(User user) { - return user.getId().toString().equals(getAdminId()); - } - public CompletableFuture> executeDelayed(SendMediaGroup sendMediaGroup) { return delayedBlockingExecutor.submit(() -> execute(sendMediaGroup)); } @@ -165,15 +183,6 @@ public CompletableFuture executeDelayed(SendPhoto sendPhoto) { return delayedBlockingExecutor.submit(() -> execute(sendPhoto)); } - private Optional getCommand(Message message) { - var userId = message.getFrom().getId(); - if (message.isCommand()) { - return Optional.ofNullable(removeUserCommand(userId)) - .or(() -> Optional.of(message.getText().trim())); - } - return Optional.ofNullable(userCommands.get(userId)); - } - public String getChatId() { return chatId; } @@ -181,13 +190,4 @@ public String getChatId() { public String getChannelId() { return channelId; } - - public String getAdminId() { - return adminId; - } - - @Override - public String getBotUsername() { - return botUsername; - } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java index 0e8a571..35fb3bb 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/PostManager.java @@ -70,19 +70,6 @@ public void publishPost(T post, String postServiceName) throws } } - public void publishPostCandidate(int created) { - Optional - .ofNullable(rejectPostCandidate(created)) - .ifPresent(post -> { - post.setApproved(true); - publishPost(post); - }); - } - - public Post rejectPostCandidate(int created) { - return postCandidates.remove(created); - } - private Message askApprove(String chatId, int created) throws TelegramApiException, JsonProcessingException { var approveButton = InlineKeyboardButton.builder() .text("✅ Approve") @@ -110,4 +97,17 @@ private Message askApprove(String chatId, int created) throws TelegramApiExcepti .build(); return redditTelegramForwarderBot.execute(sendMessage); } + + public void publishPostCandidate(int created) { + Optional + .ofNullable(rejectPostCandidate(created)) + .ifPresent(post -> { + post.setApproved(true); + publishPost(post); + }); + } + + public Post rejectPostCandidate(int created) { + return postCandidates.remove(created); + } } diff --git a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java index 8c061f7..677e7a1 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/posts/PhotoGroupPostService.java @@ -73,38 +73,6 @@ public Optional> applyWithException(@NonNull String chatId, PhotoG return Optional.of(messages); } - @EventListener - public void onNewChannelPostEvent(NewChannelPostEvent newChannelPostEvent) { - var channelPost = newChannelPostEvent.getChannelPost(); - Optional - .ofNullable(extraPhotos.remove(channelPost.forwardFromMessageId())) - .ifPresent(post -> { - try { - sendDelayed( - redditTelegramForwarderBot.getChatId(), - channelPost.messageId(), - post - ); - } catch (ExecutionException | InterruptedException e) { - LOGGER.error("Failed to send extra photos.", e); - } - }); - } - - private List sendDelayed(String chatId, int replyToMessageId, PhotoGroupPost post) throws ExecutionException, InterruptedException { - var pages = new ArrayDeque<>(post.getPhotoUrlsPages()); - var hasSpoiler = post.isHasSpoiler(); - var messages = new ArrayList(); - pages.removeFirst(); - for (var page : pages) { - messages.addAll(page.size() > 1 - ? redditTelegramForwarderBot.executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)).get() - : List.of(redditTelegramForwarderBot.executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId)).get()) - ); - } - return messages; - } - private SendMediaGroup sendMediaGroup(String chatId, Queue page, boolean hasSpoiler, Integer replyToMessageId) { var inputMediaPhotos = page .stream() @@ -124,6 +92,20 @@ private SendMediaGroup sendMediaGroup(String chatId, Queue page, boolean .build(); } + private List sendDelayed(String chatId, int replyToMessageId, PhotoGroupPost post) throws ExecutionException, InterruptedException { + var pages = new ArrayDeque<>(post.getPhotoUrlsPages()); + var hasSpoiler = post.isHasSpoiler(); + var messages = new ArrayList(); + pages.removeFirst(); + for (var page : pages) { + messages.addAll(page.size() > 1 + ? redditTelegramForwarderBot.executeDelayed(sendMediaGroup(chatId, page, hasSpoiler, replyToMessageId)).get() + : List.of(redditTelegramForwarderBot.executeDelayed(sendPhoto(chatId, page.element(), hasSpoiler, replyToMessageId)).get()) + ); + } + return messages; + } + private SendPhoto sendPhoto(String chatId, String photo, boolean hasSpoiler, Integer replyToMessageId) { return SendPhoto.builder() .chatId(chatId) @@ -132,4 +114,22 @@ private SendPhoto sendPhoto(String chatId, String photo, boolean hasSpoiler, Int .replyToMessageId(replyToMessageId) .build(); } + + @EventListener + public void onNewChannelPostEvent(NewChannelPostEvent newChannelPostEvent) { + var channelPost = newChannelPostEvent.getChannelPost(); + Optional + .ofNullable(extraPhotos.remove(channelPost.forwardFromMessageId())) + .ifPresent(post -> { + try { + sendDelayed( + redditTelegramForwarderBot.getChatId(), + channelPost.messageId(), + post + ); + } catch (ExecutionException | InterruptedException e) { + LOGGER.error("Failed to send extra photos.", e); + } + }); + } } From 624cc053336115bf20fbddee4eaf68e8d47ce715 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 20:47:05 +0200 Subject: [PATCH 73/93] renamed RedditTelegramForwarderApplication --- ...plication.java => RedditTelegramForwarderApplication.java} | 4 ++-- .../com/github/yvasyliev/appenders/TelegramBotAppender.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/main/java/com/github/yvasyliev/{Application.java => RedditTelegramForwarderApplication.java} (93%) diff --git a/src/main/java/com/github/yvasyliev/Application.java b/src/main/java/com/github/yvasyliev/RedditTelegramForwarderApplication.java similarity index 93% rename from src/main/java/com/github/yvasyliev/Application.java rename to src/main/java/com/github/yvasyliev/RedditTelegramForwarderApplication.java index 50fc16b..40392b0 100644 --- a/src/main/java/com/github/yvasyliev/Application.java +++ b/src/main/java/com/github/yvasyliev/RedditTelegramForwarderApplication.java @@ -24,11 +24,11 @@ @SpringBootApplication @EnableScheduling -public class Application extends TelegramBotStarterConfiguration { +public class RedditTelegramForwarderApplication extends TelegramBotStarterConfiguration { private static ApplicationContext context; public static void main(String[] args) { - context = new SpringApplicationBuilder(Application.class) + context = new SpringApplicationBuilder(RedditTelegramForwarderApplication.class) .listeners(new ApplicationPidFileWriter()) .build() .run(args); diff --git a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java index fe97d76..1078ee1 100644 --- a/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java +++ b/src/main/java/com/github/yvasyliev/appenders/TelegramBotAppender.java @@ -1,6 +1,6 @@ package com.github.yvasyliev.appenders; -import com.github.yvasyliev.Application; +import com.github.yvasyliev.RedditTelegramForwarderApplication; import com.github.yvasyliev.bots.telegram.notifier.TelegramNotifier; import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Core; @@ -38,7 +38,7 @@ public static TelegramBotAppender createAppender(@PluginAttribute("name") String @Override public void append(LogEvent event) { - Application.withContext(applicationContext -> { + RedditTelegramForwarderApplication.withContext(applicationContext -> { try { applicationContext .getBean(TelegramNotifier.class) From d215c60214a780b60944fc5af67198189e8b8e5a Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 21:03:59 +0200 Subject: [PATCH 74/93] renamed artifactId --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1968c9e..188c079 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.github.yvasyliev - reddit-telegram-repeater + reddit-telegram-forwarder 2.3.3 From 5356510bd5b6b8879ae09a864f8a7f6a488f0258 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 21:05:43 +0200 Subject: [PATCH 75/93] updated .gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3294f61..8895f77 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,7 @@ /target/ .idea app_data.properties -*.log \ No newline at end of file +*.log +*.db +*.gz +*.pid \ No newline at end of file From 1e23eb443ce6abdb30fdc829ce2d2c8509d2b554 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Thu, 9 Nov 2023 21:17:56 +0200 Subject: [PATCH 76/93] updated log4j2.xml --- src/main/resources/log4j2.xml | 15 +++++++-------- src/test/resources/log4j2.xml | 32 +++++--------------------------- 2 files changed, 12 insertions(+), 35 deletions(-) diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 66d8857..fd2aaf8 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -5,18 +5,18 @@ %d{yyyy-MM-dd HH:mm:ss} %p %m%n - + - + @@ -30,12 +30,11 @@ - - + + - + - \ No newline at end of file diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml index 5375e9b..537d72a 100644 --- a/src/test/resources/log4j2.xml +++ b/src/test/resources/log4j2.xml @@ -4,41 +4,19 @@ - - - %d{yyyy-MM-dd HH:mm:ss} %p %m%n - - - - - - - - - - - - - - - + + + + + - - - - - - \ No newline at end of file From ea0a9c44666cdb136582e709d4f12dc01fe301d5 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sat, 11 Nov 2023 19:53:51 +0200 Subject: [PATCH 77/93] simplified RedditTelegramForwarderPropertyRepository#findLastCreated query --- .../repository/RedditTelegramForwarderPropertyRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java b/src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java index 1d957dd..32e4ffa 100644 --- a/src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java +++ b/src/main/java/com/github/yvasyliev/service/repository/RedditTelegramForwarderPropertyRepository.java @@ -11,7 +11,7 @@ public interface RedditTelegramForwarderPropertyRepository extends JpaRepository { @Query(""" select - cast(r.value as integer) + r.value from RedditTelegramForwarderProperty r where From 51d37361ed2983211b69bc7d0c8fb71dbc8d7d08 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 12 Nov 2023 21:54:31 +0200 Subject: [PATCH 78/93] reading resources as InputStream --- .../telegram/readers/BotResponseReader.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java index e0ca832..16e7491 100644 --- a/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java +++ b/src/main/java/com/github/yvasyliev/service/telegram/readers/BotResponseReader.java @@ -5,16 +5,17 @@ import org.springframework.util.function.ThrowingFunction; import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Files; +import java.nio.charset.StandardCharsets; @Component public class BotResponseReader implements ThrowingFunction { @Override - public String applyWithException(String file) throws URISyntaxException, IOException { - return Files.readString(new ClassPathResource(file).getFile().toPath()) - .replace(".", "\\.") - .replace("!", "\\!") - .replace("-", "\\-"); + public String applyWithException(String file) throws IOException { + try (var inputStream = new ClassPathResource(file).getInputStream()) { + return new String(inputStream.readAllBytes(), StandardCharsets.UTF_8) + .replace(".", "\\.") + .replace("!", "\\!") + .replace("-", "\\-"); + } } } From 883c8399471814ec8e29714b91202ba9c4e33926 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Sun, 12 Nov 2023 23:03:39 +0200 Subject: [PATCH 79/93] optimized logging --- .../telegram/RedditTelegramForwarderBot.java | 31 ++++++++++++++++--- .../service/reddit/SubredditNewSupplier.java | 13 ++++---- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java index 7840fdb..4a59d94 100644 --- a/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java +++ b/src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java @@ -78,7 +78,11 @@ public RedditTelegramForwarderBot(@Value("${telegram.bot.token}") String botToke @AfterBotRegistration public void setBotSession(BotSession botSession) { this.botSession = botSession; - LOGGER.info("{} started long polling.", getBotUsername()); + LOGGER + .atInfo() + .setMessage("{} started long polling.") + .addArgument(this::getBotUsername) + .log(); } @Override @@ -89,12 +93,26 @@ public String getBotUsername() { @PreDestroy public void stopPolling() { botSession.stop(); - LOGGER.info("{} stopped long polling.", getBotUsername()); + LOGGER + .atInfo() + .setMessage("{} stopped long polling.") + .addArgument(this::getBotUsername) + .log(); } @Override public void onUpdateReceived(Update update) { - LOGGER.debug("Update received: {}", update); + LOGGER + .atDebug() + .setMessage("update={}") + .addArgument(() -> { + try { + return objectMapper.writeValueAsString(update); + } catch (JsonProcessingException e) { + return update; + } + }) + .log(); if (update.hasMessage()) { onMessageReceived(update.getMessage()); } else if (update.hasCallbackQuery()) { @@ -119,7 +137,12 @@ public void onCallbackQueryReceived(CallbackQuery callbackQuery) { var callbackData = objectMapper.readValue(callbackQuery.getData(), CallbackData.class); context.getBean(callbackData.action(), Callback.class).acceptWithException(callbackQuery); } catch (JsonProcessingException e) { - LOGGER.error("Failed to parse callback data {}", callbackQuery.getData(), e); + LOGGER + .atError() + .setMessage("Failed to parse callback data {}") + .addArgument(callbackQuery::getData) + .setCause(e) + .log(); } catch (Exception e) { LOGGER.error("Failed to handle callback", e); } diff --git a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java index 63b4a6a..c78d7c0 100644 --- a/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java +++ b/src/main/java/com/github/yvasyliev/service/reddit/SubredditNewSupplier.java @@ -60,12 +60,13 @@ public List getWithException() throws Exception { try { return objectMapper.treeToValue(data, Post.class); } catch (JsonProcessingException e) { - LOGGER.error( - "Failed to deserialize post. Created: {}, URL: {}", - data.get("created").intValue(), - data.get("url").textValue(), - e - ); + LOGGER + .atError() + .setMessage("Failed to deserialize post. Created: {}, URL: {}") + .addArgument(() -> data.get("created")) + .addArgument(() -> data.get("url")) + .setCause(e) + .log(); return null; } }) From 4ff379a3af7c65e770b45fb8deff232b899e1f3a Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 13 Nov 2023 10:18:59 +0200 Subject: [PATCH 80/93] importing TelegramBotStarterConfiguration --- .../github/yvasyliev/RedditTelegramForwarderApplication.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/yvasyliev/RedditTelegramForwarderApplication.java b/src/main/java/com/github/yvasyliev/RedditTelegramForwarderApplication.java index 40392b0..31fd3fe 100644 --- a/src/main/java/com/github/yvasyliev/RedditTelegramForwarderApplication.java +++ b/src/main/java/com/github/yvasyliev/RedditTelegramForwarderApplication.java @@ -12,6 +12,7 @@ import org.springframework.boot.context.ApplicationPidFileWriter; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Scope; import org.springframework.scheduling.annotation.EnableScheduling; import org.telegram.telegrambots.starter.TelegramBotStarterConfiguration; @@ -24,7 +25,8 @@ @SpringBootApplication @EnableScheduling -public class RedditTelegramForwarderApplication extends TelegramBotStarterConfiguration { +@Import(TelegramBotStarterConfiguration.class) +public class RedditTelegramForwarderApplication { private static ApplicationContext context; public static void main(String[] args) { From 0e5552174b2a9afd6575f715937713bf95e6ab7f Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 13 Nov 2023 15:19:53 +0200 Subject: [PATCH 81/93] update README.md --- README.md | 139 +++++++++++++++------ assests/create-reddit-app.gif | Bin 0 -> 1862674 bytes assests/reddit-telegram-forwarder-logo.png | Bin 0 -> 314287 bytes 3 files changed, 103 insertions(+), 36 deletions(-) create mode 100644 assests/create-reddit-app.gif create mode 100644 assests/reddit-telegram-forwarder-logo.png diff --git a/README.md b/README.md index 9422829..0ffd835 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,117 @@ -# Reddit-Telegram Repeater +![reddit-telegram-forwarder-logo](assests/reddit-telegram-forwarder-logo.png) -Repeats Subreddit posts to Telegram. +

Console Java application to forward Reddit posts to Telegram channel.

+ +# Reddit-Telegram Forwarder + +Spring Boot-based Java application to forward Reddit posts to Telegram channel. # Requirements - `Java 17` - `Maven` -- Reddit profile -- Telegram profile +- [Reddit](https://www.reddit.com/login/) profile +- [Telegram](https://web.telegram.org/a/) profile - Telegram channel +- A chat connected to your Telegram channel # Quickstart 1. Go to https://www.reddit.com/prefs/apps and create an app. * Application type must be `script`. -2. Build this project: - ```shell - git clone https://github.com/yvasyliev/reddit-telegram-repeater.git - mvn clean package - cd target - ``` -3. Run the app: + ![create-reddit-app](assests/create-reddit-app.gif) +2. Create Telegram Bot. You'll need a bot token. + * [How Do I Create a Bot?](https://core.telegram.org/bots#how--o-i-create-a-bot) +3. Get the app. + * Clone and build the project: + ```shell + git clone https://github.com/yvasyliev/reddit-telegram-repeater.git + mvn clean package -Dmaven.test.skip + cd target + ``` + * Or download executable JAR from the [latest release](releases). +4. Run the app: ```shell - java \ - -DBOT_TOKEN=${BOT_TOKEN} \ - -DBOT_USERNAME=${BOT_USERNAME} \ - -DCHANNEL_ID=${CHANNEL_ID} \ - -DDEVELOPER_ID=${DEVELOPER_ID} \ - -DREDDIT_CLIENT_ID=${REDDIT_CLIENT_ID} \ - -DREDDIT_CLIENT_SECRET=${REDDIT_CLIENT_SECRET} \ - -DREDDIT_PASSWORD=${REDDIT_PASSWORD} \ - -DREDDIT_USERNAME=${REDDIT_USERNAME} \ - -DSUBREDDIT=${SUBREDDIT} \ - -jar reddit-telegram-repeater-${version}-jar-with-dependencies.jar + java -jar reddit-telegram-forwarder-${version}.jar \ + --reddit.client.id=${REDDIT_CLIENT_ID} \ + --reddit.client.secret=${REDDIT_CLIENT_SECRET} \ + --reddit.password=${REDDIT_PASSWORD} \ + --reddit.subreddit=${SUBBREDDIT_NAME} \ + --reddit.username=${REDDIT_USERNAME} \ + --telegram.admin.id=${TELEGRAM_ADMIN_ID} \ + --telegram.bot.token=${TELEGRAM_BOT_TOKEN} \ + --telegram.bot.username=${TELEGRAM_BOT_USERNAME} \ + --telegram.channel.id=${TELEGRAM_CHANNEL_ID} \ + --telegram.channel.name=${TELEGRAM_CHANNEL_NAME} \ + --telegram.chat.id=${TELEGRAM_CHAT_ID} ``` - * The application relies on environment variables to extract subreddit data and repeat it to Telegram: - - | Variable | Required | Default value | Description | Example | - |:-----------------------:|:--------:|:-------------:|:--------------------------------------------------------------------|:-------------------------------------------------| - | `BOT_TOKEN` | `true` | - | Telegram bot token | `4336854599:BBFqVLRq9ixVdxORFWQgaSywzCfRo5-tBus` | - | `BOT_USERNAME` | `true` | - | Telegram bot username | `SubredditResenderBot` | - | `CHANNEL_ID` | `true` | - | Telegram channel ID. Subreddit posts will be sent here. | `-1001572613876` | - | `DEVELOPER_ID` | `true` | - | Telegram profile ID. Bot will error logs messages directly to user. | `280538130` | - | `REDDIT_CLIENT_ID` | `true` | - | Reddit `client_id` | `pW134F0XNuueG4W78x9uGA` | - | `DREDDIT_CLIENT_SECRET` | `true` | - | Reddit client `secret` | `fsdT6VkTgf1WMfSW6Pd5t4DRvfVueB` | - | `DREDDIT_PASSWORD` | `true` | - | Reddit profile password | `ETD1fqx%cfk6odj#boj` | - | `DREDDIT_USERNAME` | `true` | - | Reddit profile username | `RedditProfileUsername000` | - | `SUBREDDIT` | `true` | - | Subreddit name | `SubredditName` | - | `SKIP_AUTHORS` | `false` | - | Post authors to be ignored; comma-separated values | `user1,user2,user3` | + * Don't forget to replace `${...}` placeholders with correct values. + +# How it works + +This a console application built with `Spring Boot` (not Web!). +There is a +method [ScheduledPostManager#shareNewPosts](src/main/java/com/github/yvasyliev/service/telegram/ScheduledPostManager.java#L26) +annotated with `@Scheduled`. +This method retrieves subreddit new posts using [Reddit API](https://www.reddit.com/dev/api/) and forwards them to +Telegram channel using [Telegram Bots API](https://core.telegram.org/bots/api). +By default, `shareNewPosts()` is invoked once per minute, and it can be configured by environment variables (see [Application variables](#application-variables)). + +If post author is in block list or the post is marked as NSFW, the post will be sent to admin for validation. Admin can +either accept or reject posts. + +Block list is stored in `SQLite` database. All database configs and management are handled automatically +by `Spring Boot Data`. +No user actions required. + +Additionally, this application runs +a [Long Polling Bot](src/main/java/com/github/yvasyliev/bots/telegram/RedditTelegramForwarderBot.java) that helps you +with application management. +The bot can accept suggested user posts (see [Bot commands](#bot-commands)). + +# Application variables + +As you noticed, the application relies on a set of variables. +Since it's a `Spring Boot` project, these variables can be passed as command line arguments (see [Quickstart](#quickstart)), defined in [application.properties](src/main/resources/application.properties) or set +globally as environment variables (see [Spring Boot Docs](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config) +for more details). + +| Variable | Required | Default value | Description | Example | +|:--------------------------------------------:|:--------:|:-------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------| +| `delayed.blocking.executor.delay.in.seconds` | `false` | `20` | Delay in seconds used to postpone sending messages in order to avoid "too many requests" errors in Telegram. | `20` | +| `reddit.authors.blocked.by.default` | `false` | `false` | `true` - check Reddit autor against Block list. `false` - ignore Block list and ask admin to validate every post. | `true` | +| `reddit.client.id` | `true` | - | Reddit `client_id`. | `pW134F0XNuueG4W78x9uGA` | +| `reddit.client.secret` | `true` | - | Reddit client `secret`. | `fsdT6VkTgf1WMfSW6Pd5t4DRvfVueB` | +| `reddit.password` | `true` | - | Reddit profile password. | `ETD1fqx%cfk6odj#boj` | +| `reddit.subreddit` | `true` | - | Subreddit name without `r/` prefix. | `cats` | +| `reddit.username` | `true` | - | Reddit profile username. | `RedditProfileUsername000` | +| `telegram.admin.id` | `true` | - | Telegram user ID (Telegram channel admin ID). Bot will send error logs directly to user.
  • [How to find your User ID in Telegram?](https://www.google.com/search?q=How+to+find+your+User+ID+in+Telegram%3F)
| `280538130` | +| `telegram.bot.username` | `true` | - | Telegram bot username. | `SubredditForwarderBot` | +| `telegram.bot.token` | `true` | - | Telegram bot token. | `4336854599:BBFqVLRq9ixVdxORFWQgaSywzCfRo5-tBus` | +| `telegram.channel.id` | `true` | - | Telegram channel ID. Subreddit posts will be sent to this channel.
  • [How to get the channel ID](https://gist.github.com/mraaroncruz/e76d19f7d61d59419002db54030ebe35#new-improved-next-steps)
| `-1001572613876` | +| `telegram.channel.name` | `true` | - | The name of the Telegram channel. | `Subreddit posts channel` | +| `telegram.chat.id` | `true` | - | The ID of the chat where users can leave comments under posts. Bot will send additional photos to this chat if orginal subreddit post contains more than 10 images.
  • [How to get chat ID](https://stackoverflow.com/a/69302407/21234935)
| `-1003810089009` | +| `telegram.schedule.posting.delay.in.minutes` | `false` | `1` | How often (in minutes) the application should scan subreddit for new posts. | `5` | +| `telegram.schedule.posting.enabled` | `false` | `true` | Should application start forwarding right after startup or not. Can be paused/resumed via [Bot commands](#bot-commands). | `false` | + +# Bot commands + +There are two types of commands: + +- `user` - available for all users; +- `admin` - available for admin only. + +| Command | Type | Description | +|:----------------:|:-------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `/blockauthor` | `admin` | Add Reddit user to Block list. | +| `/cancel` | `user` | Cancel current command. | +| `/contactadmin` | `user` | Send message to admin. | +| `/done` | `user` | Same as `/cancel`. | +| `/getblocked` | `admin` | Show block list. | +| `/help` | `user` | Show list of commands. | +| `/pauseposting` | `admin` | Pause posts forwarding. | +| `/resumeposting` | `admin` | Resume posts forwarding. | +| `/start` | `user` | Same as `/help`. | +| `/stop` | `admin` | Completely stop the application.
  • You can start it again by executing `java -jar ...`.
  • It takes up to ~30 seconds to stop all the processes.
  • Some exceptions can be thrown because of interrupted threads or closed application context. It's fine to ignore them.
| +| `/suggestpost` | `user` | Suggest a post to channel. The post will be sent to admin for validation. | +| `/unblockauthor` | `admin` | Remove Reddit user from block list. | \ No newline at end of file diff --git a/assests/create-reddit-app.gif b/assests/create-reddit-app.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb8e14e96861b190d156332015b7062140f3144e GIT binary patch literal 1862674 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

x= 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

Fwr-GAQp?3;F7RdQ4iwboKa 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

==U_a}hB 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%0D54dZfL31OK32-; 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�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 ^u24DCwrheAH!u#nN(Ciyix~d4< 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

  • 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 z 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 ~9;>J~mW+n*^fesw7pGRQ6UG9k?iZX-# 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 Zk^Xmf!~aq7KYXPBt>XW@>VG{@`hUf3Ap!sZ literal 0 HcmV?d00001 diff --git a/assests/reddit-telegram-forwarder-logo.png b/assests/reddit-telegram-forwarder-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ec009b050a1fbc51d9ead12ff0ec7449c25eeaa0 GIT binary patch literal 314287 zcmZ6yWmH{Vuq?W93GQqpxVt+9cXto&1P`vk*?4fb;O-FI-Ccsa1Wm9DOl0{6N;e zKHn|T*~#(6VQqegf71~L$7h;c#F0!;E=LitK5>xd*f~j$qUq#meY$-OHmImE!r9qH z%%q=x;u7t4=X!g4o}%t6m>1{RQXC7h^ZHugzDR000RRl7Zy#V^3j|$XzX{_kB_{^6 z{{bG243c95Tpj=*0!WE|QvJGo(ymi^GMGqlTTbM3?tSJ`BA+NtQ>;zyB6FnP=mE6r zOs@WAIk9+=2KM6To@~I~2{69zy6Cik@XoSpWh5;ot3T2&;Aw1U#T`L5VG8VmWeGqq zV`0VqHqC8*F3W;bZB%aWUCq$@^6YDDfoKNJO6rV?8QNNRSG4yms`@g3)`85GKUzC+%zb0A z=lottM(MMdai@!aAi#*UPaoV(Ib8)G)+4xAd}?nZ`8hWBF}Bu8U47}8i}Ep=rl$7J zjW>|b+zA9H@>RXF_L_gP!&fvvjZW%^&iei|rz)Tr$$H|xx(iU1V0hfl+x%{_ZxHG1 zez_E7d{knAyAS)#{!HWAR0U?oeLh+F^a^Zm-3J=gg-Ho?SGSv__8F`2DLNEjgrbFG zSwwWNaIpcr$bugXTB5yerOs79EIeY|n7Hor+M8Zz@Cvq-U454SQ*r0S^Sil(QLy;I z)h0cM-R;G0B@BOYq>&I>qsiFu#${St8JjF~*Z@ysB-65STmp^G zoRh&udqL|pFuz`e0JKNSdwaDe%fZ6Nj{T@HFf9+JOngRmilgrvM= zVSCzZMKNT2(PSxsD#oU^CqEk)9N_Y&xc3>Py7|S{Gd?DfRU@-}^`i?T{+mM))33UX ztDMOl9@{vXBSI#%<@s@A!q_AW;z8myUL7*MzPqbo8CHwNOBZ$3Q=vv?Cl33>TCQh5 zKtq6D$K;{B2%e%^dU>0K#y|SdMntrm5s;Hb(%`rA_G=Iz!fkxR3_L%W0bv47VEKUV zg_G<+HvgrX)wJaj{t`PR0qUv0xgBoi*AC4;=pny5k#=)i?9O$OxNQceMVOD7_n7|X zqI($c!KPgQg0PC=`KUM!`2zPW)9Kp<+vk^=+b$eB!(D$DKZZ2c9jNltx_zHc$0SzC zQIdjeNGy&l;05wUkL#IsdzV~fu^{ZnXSTEFgmva zusu5*HW&D|PAbBjwD~DHrZyi0lB)K!vUuYoxm8Q7LFX+GrHP*PSr4GD?O)yv3qY>~ zH&*CWx+e#!i}^w=gaf2=RuTfb^JLZ)QU@yJW5wkwG^Y*>;ch73T9+d74UzHVvM0Ph zDcrwL=6p|VD6H1qNdAz&r8x10fu#B3`6Q_^3s)e_K-|2(WSr-G>L!K040C-dI6>Om43PB@$3_SW0EMX{6JHLK)(#50?%~rHucwwP76BBR$A81m zA!wx@l#q^4R0&Y~<$x`e*KRsxD~A@7;$F)m;*l5XiF zqiq~E=$*Ze`4&V;=7=*NRBn(^91}HR`CKw{C_fNUjLu~yhe1Mz=gyBonJL2Ss(p4J zf^3UJ$X2@>jiD7`N!YG)sfjl}f)kycj40VK07+p(fwjqmU{&8xBB{5{!dhAKaP(DEEFV$EQ7TVJ{3jy@rQB#WA|w~2DgLT`g| zG)}LjY9&Y7-9j?G&(Wjv3u9kA@%(DLB$?XASRN4y{h@3iU?QjaPK@C`JO$Y(rk`OE z2JBPouzEX}@)P*Q9?=^_b+G^Hz~MV67TNP&@E569Cp;7awQD)G7Owbzm?~NXCzc8# z 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

    pkv+ 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≀G;)5q}v$c#aG^jYU>t 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 snEv!o7s^aOwSD$q@yNd}Lfp Date: Mon, 13 Nov 2023 15:28:01 +0200 Subject: [PATCH 82/93] updated jar name --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0ffd835..0af84cb 100644 --- a/README.md +++ b/README.md @@ -29,10 +29,10 @@ Spring Boot-based Java application to forward Reddit posts to Telegram channel. mvn clean package -Dmaven.test.skip cd target ``` - * Or download executable JAR from the [latest release](releases). + * Or download executable JAR from the [latest release](https://github.com/yvasyliev/reddit-telegram-forwarder/releases/latest/download/reddit-telegram-forwarder-2.3.3.jar). 4. Run the app: ```shell - java -jar reddit-telegram-forwarder-${version}.jar \ + java -jar reddit-telegram-forwarder-2.3.3.jar \ --reddit.client.id=${REDDIT_CLIENT_ID} \ --reddit.client.secret=${REDDIT_CLIENT_SECRET} \ --reddit.password=${REDDIT_PASSWORD} \ From 3481060ba6332793229431229295f0e85609ec78 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Mon, 13 Nov 2023 17:30:55 +0200 Subject: [PATCH 83/93] updated links --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0af84cb..5e3100b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Spring Boot-based Java application to forward Reddit posts to Telegram channel. mvn clean package -Dmaven.test.skip cd target ``` - * Or download executable JAR from the [latest release](https://github.com/yvasyliev/reddit-telegram-forwarder/releases/latest/download/reddit-telegram-forwarder-2.3.3.jar). + * Or download [executable JAR](https://github.com/yvasyliev/reddit-telegram-forwarder/releases/latest/download/reddit-telegram-forwarder-2.3.3.jar) from the [latest release](https://github.com/yvasyliev/reddit-telegram-forwarder/releases/latest). 4. Run the app: ```shell java -jar reddit-telegram-forwarder-2.3.3.jar \ From d9bd92b4af9d24c53075adb6776c3af10e571f65 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 11:27:20 +0200 Subject: [PATCH 84/93] Update build-maven-project.yml --- .github/workflows/build-maven-project.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-maven-project.yml b/.github/workflows/build-maven-project.yml index 8b2457d..25445c7 100644 --- a/.github/workflows/build-maven-project.yml +++ b/.github/workflows/build-maven-project.yml @@ -5,6 +5,7 @@ on: [ push, pull_request ] jobs: build: runs-on: ubuntu-latest + environment: Test steps: - name: Checkout uses: actions/checkout@v3 @@ -15,4 +16,18 @@ jobs: distribution: 'corretto' cache: maven - name: Build with Maven - run: mvn package \ No newline at end of file + env: + reddit.subreddit: ${{ secrets.REDDIT_SUBREDDIT }} + reddit.client.id: ${{ secrets.REDDIT_CLIENT_ID }} + reddit.client.secret: ${{ secrets.REDDIT_CLIENT_SECRET }} + reddit.password: ${{ secrets.REDDIT_PASSWORD }} + reddit.username: ${{ secrets.REDDIT_USERNAME }} + spring.jpa.hibernate.ddl-auto: ${{ vars.SPRING_JPA_HIBERNATE_DDL_AUTO }} + telegram.admin.id: ${{ secrets.TELEGRAM_ADMIN_ID }} + telegram.bot.token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + telegram.bot.username: ${{ secrets.TELEGRAM_BOT_USERNAME }} + telegram.channel.id: ${{ secrets.TELEGRAM_CHANNEL_ID }} + telegram.channel.name: ${{ secrets.TELEGRAM_CHANNEL_NAME }} + telegram.chat.id: ${{ secrets.TELEGRAM_CHAT_ID }} + telegram.schedule.posting.enabled: ${{ vars.TELEGRAM_SCHEDULE_POSTING_ENABLED }} + run: mvn package From 6f22468ca3d80cd6944fe144329245ce062b9a29 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 11:59:01 +0200 Subject: [PATCH 85/93] Update build-maven-project.yml --- .github/workflows/build-maven-project.yml | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-maven-project.yml b/.github/workflows/build-maven-project.yml index 25445c7..8f7c2c2 100644 --- a/.github/workflows/build-maven-project.yml +++ b/.github/workflows/build-maven-project.yml @@ -17,17 +17,17 @@ jobs: cache: maven - name: Build with Maven env: - reddit.subreddit: ${{ secrets.REDDIT_SUBREDDIT }} - reddit.client.id: ${{ secrets.REDDIT_CLIENT_ID }} - reddit.client.secret: ${{ secrets.REDDIT_CLIENT_SECRET }} - reddit.password: ${{ secrets.REDDIT_PASSWORD }} - reddit.username: ${{ secrets.REDDIT_USERNAME }} - spring.jpa.hibernate.ddl-auto: ${{ vars.SPRING_JPA_HIBERNATE_DDL_AUTO }} - telegram.admin.id: ${{ secrets.TELEGRAM_ADMIN_ID }} - telegram.bot.token: ${{ secrets.TELEGRAM_BOT_TOKEN }} - telegram.bot.username: ${{ secrets.TELEGRAM_BOT_USERNAME }} - telegram.channel.id: ${{ secrets.TELEGRAM_CHANNEL_ID }} - telegram.channel.name: ${{ secrets.TELEGRAM_CHANNEL_NAME }} - telegram.chat.id: ${{ secrets.TELEGRAM_CHAT_ID }} - telegram.schedule.posting.enabled: ${{ vars.TELEGRAM_SCHEDULE_POSTING_ENABLED }} + REDDIT_SUBREDDIT: ${{ secrets.REDDIT_SUBREDDIT }} + REDDIT_CLIENT_ID: ${{ secrets.REDDIT_CLIENT_ID }} + REDDIT_CLIENT_SECRET: ${{ secrets.REDDIT_CLIENT_SECRET }} + REDDIT_PASSWORD: ${{ secrets.REDDIT_PASSWORD }} + REDDIT_USERNAME: ${{ secrets.REDDIT_USERNAME }} + SPRING_JPA_HIBERNATE_DDL_AUTO: ${{ vars.SPRING_JPA_HIBERNATE_DDL_AUTO }} + TELEGRAM_ADMIN_ID: ${{ secrets.TELEGRAM_ADMIN_ID }} + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + TELEGRAM_BOT_USERNAME: ${{ secrets.TELEGRAM_BOT_USERNAME }} + TELEGRAM_CHANNEL_ID: ${{ secrets.TELEGRAM_CHANNEL_ID }} + TELEGRAM_CHANNEL_NAME: ${{ secrets.TELEGRAM_CHANNEL_NAME }} + TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} + TELEGRAM_SCHEDULE_POSTING_ENABLED: ${{ vars.TELEGRAM_SCHEDULE_POSTING_ENABLED }} run: mvn package From 94c1597818e6aacff4c61d42e83abfe703d81314 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 12:13:56 +0200 Subject: [PATCH 86/93] set forkedProcessTimeoutInSeconds --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 188c079..afee235 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ 17 17 UTF-8 + 60 From e1d246690e06813f5470e43b53c779c7eb582d57 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 12:41:47 +0200 Subject: [PATCH 87/93] set forkedProcessTimeoutInSeconds --- pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pom.xml b/pom.xml index afee235..990ce42 100644 --- a/pom.xml +++ b/pom.xml @@ -26,6 +26,11 @@ org.springframework.boot spring-boot-maven-plugin + + + 60 + + From 675deb4afd5a32c62f9ae4a6537ead28f7ce6571 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 12:53:04 +0200 Subject: [PATCH 88/93] set forkedProcessTimeoutInSeconds --- .github/workflows/build-maven-project.yml | 2 +- pom.xml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-maven-project.yml b/.github/workflows/build-maven-project.yml index 8f7c2c2..ac63535 100644 --- a/.github/workflows/build-maven-project.yml +++ b/.github/workflows/build-maven-project.yml @@ -30,4 +30,4 @@ jobs: TELEGRAM_CHANNEL_NAME: ${{ secrets.TELEGRAM_CHANNEL_NAME }} TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} TELEGRAM_SCHEDULE_POSTING_ENABLED: ${{ vars.TELEGRAM_SCHEDULE_POSTING_ENABLED }} - run: mvn package + run: mvn package -DforkedProcessTimeoutInSeconds=60 diff --git a/pom.xml b/pom.xml index 990ce42..0983cee 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,11 @@ 60 + + + --forkedProcessTimeoutInSeconds=60 + + From cd8095de7429a63c15eaffb97c97175b475d1d7d Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 13:06:43 +0200 Subject: [PATCH 89/93] set forkedProcessTimeoutInSeconds --- .github/workflows/build-maven-project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-maven-project.yml b/.github/workflows/build-maven-project.yml index ac63535..ec061c5 100644 --- a/.github/workflows/build-maven-project.yml +++ b/.github/workflows/build-maven-project.yml @@ -30,4 +30,4 @@ jobs: TELEGRAM_CHANNEL_NAME: ${{ secrets.TELEGRAM_CHANNEL_NAME }} TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} TELEGRAM_SCHEDULE_POSTING_ENABLED: ${{ vars.TELEGRAM_SCHEDULE_POSTING_ENABLED }} - run: mvn package -DforkedProcessTimeoutInSeconds=60 + run: mvn package -DforkedProcessTimeoutInSeconds=60 -Dsurefire.timeout=60 From 659d8d2498d48501ef88516a6cad3643bfd93b57 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 13:26:01 +0200 Subject: [PATCH 90/93] set surefire.timeout --- pom.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 0983cee..3f5b366 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,7 @@ 17 UTF-8 60 + 60 @@ -29,11 +30,11 @@ 60 + 60 - - --forkedProcessTimeoutInSeconds=60 - + --forkedProcessTimeoutInSeconds=60 + --surefire.timeout=60 From 75bd86be8f5591937cf245d749d2a64836c7d8dc Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 16:59:33 +0200 Subject: [PATCH 91/93] set timeout in systemPropertyVariables --- pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pom.xml b/pom.xml index 3f5b366..8802195 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,10 @@ org.springframework.boot spring-boot-maven-plugin + + 60 + 60 + 60 60 From 8c54363c68edf36390dc98ba81747b4df09131a4 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 17:10:31 +0200 Subject: [PATCH 92/93] set maven-surefire-plugin --- pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pom.xml b/pom.xml index 8802195..5204dea 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,13 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + 60 + + From 92558b0b1bad67f5eca7f7f717b0fc039fa75ec3 Mon Sep 17 00:00:00 2001 From: Yevhen Vasyliev Date: Tue, 14 Nov 2023 18:05:00 +0200 Subject: [PATCH 93/93] setup forkedProcessTimeoutInSeconds --- .github/workflows/build-maven-project.yml | 2 +- pom.xml | 16 ---------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/.github/workflows/build-maven-project.yml b/.github/workflows/build-maven-project.yml index ec061c5..8f7c2c2 100644 --- a/.github/workflows/build-maven-project.yml +++ b/.github/workflows/build-maven-project.yml @@ -30,4 +30,4 @@ jobs: TELEGRAM_CHANNEL_NAME: ${{ secrets.TELEGRAM_CHANNEL_NAME }} TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} TELEGRAM_SCHEDULE_POSTING_ENABLED: ${{ vars.TELEGRAM_SCHEDULE_POSTING_ENABLED }} - run: mvn package -DforkedProcessTimeoutInSeconds=60 -Dsurefire.timeout=60 + run: mvn package diff --git a/pom.xml b/pom.xml index 5204dea..a93772c 100644 --- a/pom.xml +++ b/pom.xml @@ -18,8 +18,6 @@ 17 17 UTF-8 - 60 - 60 @@ -27,20 +25,6 @@ org.springframework.boot spring-boot-maven-plugin - - - 60 - 60 - - - 60 - 60 - - - --forkedProcessTimeoutInSeconds=60 - --surefire.timeout=60 - - org.apache.maven.plugins

    76_Qold1cd`bt0Y++J_lGaq8}CfLB~Let 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

  • ^ZWqY$G9`$gYO92DP5)ub{7GSDnX?RTQIPKU)l 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