From d2e351e886e87266d24c939f93a7b8838bcfb533 Mon Sep 17 00:00:00 2001 From: bvn13 Date: Sun, 10 Mar 2019 16:44:39 +0300 Subject: [PATCH] implemented web search with DuckDuckGo + refactoring --- pom.xml | 4 +- src/main/java/ru/bvn13/jircbot/MainApp.java | 6 -- .../java/ru/bvn13/jircbot/bot/JircBot.java | 6 +- .../jircbot/listeners/AdminListener.java | 6 ++ .../jircbot/listeners/AutoRejoinListener.java | 4 + .../jircbot/listeners/BashOrgListener.java | 5 +- .../listeners/DeferredMessagesListener.java | 7 +- .../listeners/DuckDuckGoSearchListener.java | 80 +++++++++++++++++++ .../listeners/GoogleDoodleListener.java | 4 +- .../listeners/GoogleSearchListener.java | 4 +- .../listeners/GrammarCorrectorListener.java | 4 +- .../listeners/HelloOnJoinListener.java | 4 +- .../listeners/LinkPreviewListener.java | 4 +- .../jircbot/listeners/LoggerListener.java | 20 +++++ .../jircbot/listeners/PingPongListener.java | 3 +- .../listeners/RegexCheckerListener.java | 3 +- .../jircbot/listeners/StatisticsListener.java | 1 + .../listeners/YandexSearchListener.java | 3 +- .../listeners/advices/AdviceEngine.java | 2 +- .../listeners/advices/AdviceListener.java | 2 +- .../calculator/CalculatorListener.java | 2 +- .../jircbot/listeners/quiz/QuizEngine.java | 2 +- .../jircbot/listeners/quiz/QuizListener.java | 2 +- .../jircbot/services/InternetAccessor.java | 64 +++++++++++++-- src/main/resources/logback.xml | 3 +- 25 files changed, 210 insertions(+), 35 deletions(-) create mode 100644 src/main/java/ru/bvn13/jircbot/listeners/DuckDuckGoSearchListener.java diff --git a/pom.xml b/pom.xml index d91d8c5..38d29dc 100644 --- a/pom.xml +++ b/pom.xml @@ -12,13 +12,13 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.RELEASE + 2.1.3.RELEASE - 2.0.7 + 2.0.8 1.8 diff --git a/src/main/java/ru/bvn13/jircbot/MainApp.java b/src/main/java/ru/bvn13/jircbot/MainApp.java index b8fd5fe..0de3836 100644 --- a/src/main/java/ru/bvn13/jircbot/MainApp.java +++ b/src/main/java/ru/bvn13/jircbot/MainApp.java @@ -3,17 +3,11 @@ package ru.bvn13.jircbot; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.context.annotation.ComponentScan; import ru.bvn13.jircbot.bot.JircBot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -@EnableAutoConfiguration//(exclude={DataSourceAutoConfiguration.class}) -@ComponentScan("ru.bvn13.jircbot") public class MainApp { private static final Logger logger = LoggerFactory.getLogger(MainApp.class); diff --git a/src/main/java/ru/bvn13/jircbot/bot/JircBot.java b/src/main/java/ru/bvn13/jircbot/bot/JircBot.java index ec27a42..de43032 100644 --- a/src/main/java/ru/bvn13/jircbot/bot/JircBot.java +++ b/src/main/java/ru/bvn13/jircbot/bot/JircBot.java @@ -91,6 +91,9 @@ public class JircBot extends ListenerAdapter { @Autowired private GoogleSearchListener googleSearchListener; + @Autowired + private DuckDuckGoSearchListener duckDuckGoSearchListener; + @Autowired private LoggerListener loggerListener; @@ -159,7 +162,8 @@ public class JircBot extends ListenerAdapter { .addListener(linkPreviewListener) .addListener(helloOnJoinListener) .addListener(grammarCorrectorListener) - .addListener(googleSearchListener) + //.addListener(googleSearchListener) + .addListener(duckDuckGoSearchListener) .addListener(loggerListener) // not tested diff --git a/src/main/java/ru/bvn13/jircbot/listeners/AdminListener.java b/src/main/java/ru/bvn13/jircbot/listeners/AdminListener.java index f11deaf..45888f9 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/AdminListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/AdminListener.java @@ -36,6 +36,8 @@ public class AdminListener extends ImprovedListenerAdapter { @Override public void onJoin(JoinEvent event) throws Exception { + super.onJoin(event); + if (event.getChannel().getName().startsWith("#")) { if (event.getUser().getNick().equals(event.getBot().getNick())) { event.getBot().sendRaw().rawLineNow("MODE " + event.getBot().getUserBot().getNick() + " +B"); @@ -52,6 +54,8 @@ public class AdminListener extends ImprovedListenerAdapter { @Override public void onMessage(MessageEvent event) throws Exception { + super.onMessage(event); + Config config = getBotConfig(event); if (config == null) { return; @@ -110,6 +114,8 @@ public class AdminListener extends ImprovedListenerAdapter { @Override public void onPrivateMessage(PrivateMessageEvent event) throws Exception { + super.onPrivateMessage(event); + Config config = getBotConfig(event); if (config == null) { return; diff --git a/src/main/java/ru/bvn13/jircbot/listeners/AutoRejoinListener.java b/src/main/java/ru/bvn13/jircbot/listeners/AutoRejoinListener.java index 79a343a..17441ea 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/AutoRejoinListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/AutoRejoinListener.java @@ -27,6 +27,8 @@ public class AutoRejoinListener extends ImprovedListenerAdapter { @Override public void onKick(KickEvent event) throws Exception { + super.onKick(event); + if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), event.getChannel().getName()).getAutoRejoinEnabled()) { return; } @@ -42,6 +44,8 @@ public class AutoRejoinListener extends ImprovedListenerAdapter { @Override public void onJoin(JoinEvent event) throws Exception { + super.onJoin(event); + if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), event.getChannel().getName()).getAutoRejoinEnabled()) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/BashOrgListener.java b/src/main/java/ru/bvn13/jircbot/listeners/BashOrgListener.java index 02159e4..0193cff 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/BashOrgListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/BashOrgListener.java @@ -32,12 +32,13 @@ public class BashOrgListener extends ImprovedListenerAdapter { @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), getChannelName(event)).getBashOrgEnabled()) { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } @@ -57,7 +58,7 @@ public class BashOrgListener extends ImprovedListenerAdapter { private String getDataFromConnection(HttpURLConnection con) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "windows-1251")); String inputLine; - StringBuffer response = new StringBuffer(); + StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); diff --git a/src/main/java/ru/bvn13/jircbot/listeners/DeferredMessagesListener.java b/src/main/java/ru/bvn13/jircbot/listeners/DeferredMessagesListener.java index 31a3201..e1d3ca6 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/DeferredMessagesListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/DeferredMessagesListener.java @@ -36,12 +36,13 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter { @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), getChannelName(event)).getDeferredMessagesEnabled()) { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } @@ -102,7 +103,9 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter { @Override public void onJoin(JoinEvent event) throws Exception { - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + super.onJoin(event); + + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/DuckDuckGoSearchListener.java b/src/main/java/ru/bvn13/jircbot/listeners/DuckDuckGoSearchListener.java new file mode 100644 index 0000000..bd20d5c --- /dev/null +++ b/src/main/java/ru/bvn13/jircbot/listeners/DuckDuckGoSearchListener.java @@ -0,0 +1,80 @@ +package ru.bvn13.jircbot.listeners; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.pircbotx.hooks.events.MessageEvent; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.bvn13.jircbot.bot.ImprovedListenerAdapter; +import ru.bvn13.jircbot.bot.JircBot; +import ru.bvn13.jircbot.database.services.ChannelSettingsService; +import ru.bvn13.jircbot.services.InternetAccessor; + +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; + +@Component +public class DuckDuckGoSearchListener extends ImprovedListenerAdapter { + + private static final String COMMAND = "?s"; + + @Autowired + private InternetAccessor internetAccessor; + + @Autowired + private ChannelSettingsService channelSettingsService; + + + @Override + public void onMessage(MessageEvent event) throws Exception { + super.onMessage(event); + + if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), this.getChannelName(event)).getGoogleSearchEnabled()) { + return; + } + + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { + return; + } + + if (!event.getMessage().startsWith(COMMAND)) { + return; + } + + String message = event.getMessage().replace(COMMAND, "").trim(); + + String result = search(message); + + event.respond(result); + } + + private String search(String phrase) throws Exception { + String encodedPhrase = URLEncoder.encode(phrase.replaceAll(" ", "+"), "utf-8"); + //String link = "https://duckduckgo.com/?q="+encodedPhrase; + //String queryPage = internetAccessor.retrieveContentByLink(link); + + String link = "https://duckduckgo.com/lite/"; + Map data = new HashMap<>(); + data.put("q", phrase); + + String queryPage = internetAccessor.sendPost(link, data); + + Document doc = Jsoup.parse(queryPage); + + Element linkElement = doc.select("a.result-link").first(); + if (linkElement != null) { + String linkUrl = linkElement.attr("href"); + Element descrElement = doc.select(".result-snippet").first(); + String description = descrElement.text(); + return String.format("%s / %s", URLDecoder.decode(linkUrl, "utf-8"), description); + } else { + return "not found"; + } + + } +} diff --git a/src/main/java/ru/bvn13/jircbot/listeners/GoogleDoodleListener.java b/src/main/java/ru/bvn13/jircbot/listeners/GoogleDoodleListener.java index d9fd71a..87f90aa 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/GoogleDoodleListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/GoogleDoodleListener.java @@ -25,7 +25,9 @@ public class GoogleDoodleListener extends ListenerAdapter { @Override public void onGenericMessage(final GenericMessageEvent event) throws Exception { - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + super.onGenericMessage(event); + + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/GoogleSearchListener.java b/src/main/java/ru/bvn13/jircbot/listeners/GoogleSearchListener.java index 2652a1a..fc3e68a 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/GoogleSearchListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/GoogleSearchListener.java @@ -36,11 +36,13 @@ public class GoogleSearchListener extends ImprovedListenerAdapter { @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); + if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), this.getChannelName(event)).getGoogleSearchEnabled()) { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/GrammarCorrectorListener.java b/src/main/java/ru/bvn13/jircbot/listeners/GrammarCorrectorListener.java index 9c299e8..524665d 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/GrammarCorrectorListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/GrammarCorrectorListener.java @@ -38,11 +38,13 @@ public class GrammarCorrectorListener extends ImprovedListenerAdapter { @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); + if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), this.getChannelName(event)).getGrammarCorrectionEnabled()) { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/HelloOnJoinListener.java b/src/main/java/ru/bvn13/jircbot/listeners/HelloOnJoinListener.java index e6f3ac0..5133832 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/HelloOnJoinListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/HelloOnJoinListener.java @@ -22,13 +22,15 @@ public class HelloOnJoinListener extends ImprovedListenerAdapter { @Override public void onJoin(final JoinEvent event) throws Exception { + super.onJoin(event); + ChannelSettings channelSettings = channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), getChannelName(event)); if (!channelSettings.getHelloOnJoinEnabled()) { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/LinkPreviewListener.java b/src/main/java/ru/bvn13/jircbot/listeners/LinkPreviewListener.java index 6e6488d..56c5560 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/LinkPreviewListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/LinkPreviewListener.java @@ -41,11 +41,13 @@ public class LinkPreviewListener extends ImprovedListenerAdapter { @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); + if (!channelSettingsService.getChannelSettings(JircBot.extractServer(event.getBot().getServerHostname()), getChannelName(event)).getLinkPreviewEnabled()) { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/LoggerListener.java b/src/main/java/ru/bvn13/jircbot/listeners/LoggerListener.java index 2365958..941f208 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/LoggerListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/LoggerListener.java @@ -48,6 +48,8 @@ public class LoggerListener extends ImprovedListenerAdapter { @Override public void onJoin(JoinEvent event) throws Exception { + super.onJoin(event); + if (!isEnabled(event)) return; synchronized (onlineUsers) { @@ -67,6 +69,8 @@ public class LoggerListener extends ImprovedListenerAdapter { @Override public void onPart(PartEvent event) throws Exception { + super.onPart(event); + if (!isEnabled(event)) return; log(event.getBot().getServerHostname(), event.getChannel().getName(), "User " + event.getUser().getNick() + " quit (" + event.getReason() + ")"); synchronized (onlineUsers) { @@ -81,6 +85,8 @@ public class LoggerListener extends ImprovedListenerAdapter { @Override public void onQuit(QuitEvent event) throws Exception { + super.onQuit(event); + List channels = new ArrayList<>(); synchronized (onlineUsers) { for (String channelName : onlineUsers.keySet()) { @@ -97,6 +103,8 @@ public class LoggerListener extends ImprovedListenerAdapter { @Override public void onKick(KickEvent event) throws Exception { + super.onKick(event); + if (!isEnabled(event)) return; if (onlineUsers.containsKey(event.getChannel().getName())) { @@ -107,12 +115,16 @@ public class LoggerListener extends ImprovedListenerAdapter { @Override public void onMessage(MessageEvent event) throws Exception { + super.onMessage(event); + if (!isEnabled(event)) return; log(event.getBot().getServerHostname(), event.getChannel().getName(), event.getUser().getNick(), event.getMessage()); } @Override public void onNickChange(NickChangeEvent event) throws Exception { + super.onNickChange(event); + List channels = new ArrayList<>(); for (String channelName : onlineUsers.keySet()) { Set users = onlineUsers.get(channelName); @@ -127,24 +139,32 @@ public class LoggerListener extends ImprovedListenerAdapter { @Override public void onNotice(NoticeEvent event) throws Exception { + super.onNotice(event); + if (!isEnabled(event)) return; log(event.getBot().getServerHostname(), event.getChannel().getName(), event.getMessage()); } @Override public void onTopic(TopicEvent event) throws Exception { + super.onTopic(event); + if (!isEnabled(event)) return; log(event.getBot().getServerHostname(), event.getChannel().getName(), ""+event.getUser().getNick()+" set topic: "+event.getTopic()); } @Override public void onAction(ActionEvent event) throws Exception { + super.onAction(event); + if (!isEnabled(event)) return; log(event.getBot().getServerHostname(), event.getChannel().getName(), "*"+event.getUser().getNick()+" "+event.getAction()); } @Override public void onOutput(OutputEvent event) throws Exception { + super.onOutput(event); + if (!isEnabled(JircBot.extractServer(event.getBot().getServerHostname()), event.getLineParsed().get(1))) return; switch (event.getLineParsed().get(0)) { case "PRIVMSG" : diff --git a/src/main/java/ru/bvn13/jircbot/listeners/PingPongListener.java b/src/main/java/ru/bvn13/jircbot/listeners/PingPongListener.java index 2a8001c..faec5a9 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/PingPongListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/PingPongListener.java @@ -12,8 +12,9 @@ public class PingPongListener extends ListenerAdapter { @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/RegexCheckerListener.java b/src/main/java/ru/bvn13/jircbot/listeners/RegexCheckerListener.java index b2a137a..7f0de55 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/RegexCheckerListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/RegexCheckerListener.java @@ -27,6 +27,7 @@ public class RegexCheckerListener extends ImprovedListenerAdapter { @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); //TODO: rework with FSM @@ -34,7 +35,7 @@ public class RegexCheckerListener extends ImprovedListenerAdapter { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/StatisticsListener.java b/src/main/java/ru/bvn13/jircbot/listeners/StatisticsListener.java index 9f86f7a..c434fc3 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/StatisticsListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/StatisticsListener.java @@ -32,6 +32,7 @@ public class StatisticsListener extends ImprovedListenerAdapter { @Override public void onMessage(MessageEvent event) throws Exception { + super.onMessage(event); if (!event.getMessage().startsWith(COMMAND)) { return; diff --git a/src/main/java/ru/bvn13/jircbot/listeners/YandexSearchListener.java b/src/main/java/ru/bvn13/jircbot/listeners/YandexSearchListener.java index 5cc568b..af14a0c 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/YandexSearchListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/YandexSearchListener.java @@ -28,8 +28,9 @@ public class YandexSearchListener extends ListenerAdapter { @Override public void onGenericMessage(final GenericMessageEvent event) throws Exception { + super.onGenericMessage(event); - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceEngine.java b/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceEngine.java index a2df5b4..d187568 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceEngine.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceEngine.java @@ -15,7 +15,7 @@ public class AdviceEngine { private static final String urlAdvice = "http://fucking-great-advice.ru/api/random"; public static String getAdvice() throws Exception { - StringBuffer content = new StringBuffer(); + StringBuilder content = new StringBuilder(); try { URL url = new URL(urlAdvice); HttpURLConnection con = (HttpURLConnection) url.openConnection(); diff --git a/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceListener.java b/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceListener.java index 439e73e..6c0956d 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/advices/AdviceListener.java @@ -38,7 +38,7 @@ public class AdviceListener extends ImprovedListenerAdapter { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/calculator/CalculatorListener.java b/src/main/java/ru/bvn13/jircbot/listeners/calculator/CalculatorListener.java index bd5776a..eb388c0 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/calculator/CalculatorListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/calculator/CalculatorListener.java @@ -27,7 +27,7 @@ public class CalculatorListener extends ImprovedListenerAdapter { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizEngine.java b/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizEngine.java index 02cfc6d..20c2409 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizEngine.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizEngine.java @@ -22,7 +22,7 @@ public class QuizEngine { private String getDataFromConnection(HttpsURLConnection con) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; - StringBuffer response = new StringBuffer(); + StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); diff --git a/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizListener.java b/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizListener.java index 774fe4e..f34a186 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/quiz/QuizListener.java @@ -31,7 +31,7 @@ public class QuizListener extends ImprovedListenerAdapter { return; } - if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) { + if (event.getUser() != null && event.getBot().getUserBot().getNick().equals(event.getUser().getNick())) { return; } diff --git a/src/main/java/ru/bvn13/jircbot/services/InternetAccessor.java b/src/main/java/ru/bvn13/jircbot/services/InternetAccessor.java index 26317bb..5d1cc65 100644 --- a/src/main/java/ru/bvn13/jircbot/services/InternetAccessor.java +++ b/src/main/java/ru/bvn13/jircbot/services/InternetAccessor.java @@ -1,14 +1,17 @@ package ru.bvn13.jircbot.services; import org.springframework.stereotype.Component; -import org.springframework.stereotype.Service; import javax.net.ssl.HttpsURLConnection; import java.io.BufferedReader; +import java.io.InputStream; import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLDecoder; +import java.io.OutputStream; +import java.net.*; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.StringJoiner; +import java.util.stream.Collectors; /** * Created by bvn13 on 06.02.2018. @@ -38,7 +41,7 @@ public class InternetAccessor { private String getLastUrl_http(String link) { String url = ""+link; - StringBuffer content = new StringBuffer(); + StringBuilder content = new StringBuilder(); URL resourceUrl, base, next; HttpURLConnection conn; String location = link; @@ -84,7 +87,7 @@ public class InternetAccessor { private String getLastUrl_https(String link) { String url = ""+link; - StringBuffer content = new StringBuffer(); + StringBuilder content = new StringBuilder(); URL resourceUrl, base, next; HttpsURLConnection conn; String location = link; @@ -130,7 +133,7 @@ public class InternetAccessor { private String retrieveContentByLinkWithEncoding_http(String link, String encoding) { String url = ""+link; - StringBuffer content = new StringBuffer(); + StringBuilder content = new StringBuilder(); URL resourceUrl, base, next; HttpURLConnection conn; String location = null; @@ -186,7 +189,7 @@ public class InternetAccessor { private String retrieveContentByLinkWithEncoding_https(String link, String encoding) { String url = ""+link; - StringBuffer content = new StringBuffer(); + StringBuilder content = new StringBuilder(); URL resourceUrl, base, next; HttpsURLConnection conn; String location = null; @@ -240,4 +243,49 @@ public class InternetAccessor { return ""; } + public String sendPost(String link, Map data) throws Exception { + URL url = new URL(link); + URLConnection con = url.openConnection(); + HttpURLConnection http = (HttpURLConnection)con; + http.setRequestMethod("POST"); // PUT is another valid option + http.setDoOutput(true); + + data.put("kl", "us-en"); + + http.setRequestProperty("user-agent", "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"); + http.setRequestProperty("origin", "https://duckduckgo.com"); + http.setRequestProperty("referer", "https://duckduckgo.com/"); + + StringJoiner sj = new StringJoiner("&"); + for(Map.Entry entry : data.entrySet()) { + sj.add(URLEncoder.encode(entry.getKey(), "UTF-8") + "=" + URLEncoder.encode(entry.getValue(), "UTF-8")); + } + byte[] out = sj.toString().getBytes(StandardCharsets.UTF_8); + int length = out.length; + + http.setFixedLengthStreamingMode(length); + http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + http.connect(); + try(OutputStream os = http.getOutputStream()) { + os.write(out); + } + + int responseCode = http.getResponseCode(); + if (responseCode >= 200 && responseCode < 400) { + + StringBuilder answer = new StringBuilder(); + BufferedReader in = new BufferedReader(new InputStreamReader(http.getInputStream(), "UTF-8")); + String inputLine; + while ((inputLine = in.readLine()) != null) { + answer.append(inputLine); + } + in.close(); + + http.disconnect(); + return answer.toString(); + } else { + return http.getResponseMessage(); + } + } + } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 9afdc74..2775dea 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -15,7 +15,8 @@ - + +