diff --git a/pom.xml b/pom.xml index c1df553..ff8adf5 100644 --- a/pom.xml +++ b/pom.xml @@ -6,19 +6,19 @@ ru.bvn13 jircbot - 2.0.8 + ${bot.version} jar org.springframework.boot spring-boot-starter-parent - 2.0.6.RELEASE + 2.1.3.RELEASE - 2.0.7 + 2.0.8 1.8 @@ -74,10 +74,7 @@ spring-boot-starter-thymeleaf - - org.springframework.boot - spring-boot-devtools - + @@ -87,10 +84,12 @@ com.zaxxer HikariCP + 2.7.6 org.hibernate hibernate-entitymanager + ${hibernate.version} org.springframework @@ -111,6 +110,7 @@ org.hibernate hibernate-spatial + 5.1.0.Final 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 a3b5998..57fa23f 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/AdminListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/AdminListener.java @@ -115,6 +115,8 @@ public class AdminListener extends ImprovedListenerAdapter implements Descriptio @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"); @@ -129,6 +131,8 @@ public class AdminListener extends ImprovedListenerAdapter implements Descriptio @Override public void onMessage(MessageEvent event) throws Exception { + super.onMessage(event); + Config config = getBotConfig(event); if (config == null) { return; @@ -187,6 +191,8 @@ public class AdminListener extends ImprovedListenerAdapter implements Descriptio @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 cd50237..844bc47 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 a831d38..810b22b 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/BashOrgListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/BashOrgListener.java @@ -53,12 +53,13 @@ public class BashOrgListener extends ImprovedListenerAdapter implements Descript @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; } @@ -78,7 +79,7 @@ public class BashOrgListener extends ImprovedListenerAdapter implements Descript 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 6b00154..e831640 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/DeferredMessagesListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/DeferredMessagesListener.java @@ -72,12 +72,13 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter implements @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; } @@ -144,7 +145,9 @@ public class DeferredMessagesListener extends ImprovedListenerAdapter implements @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 4583e06..2204372 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/GoogleSearchListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/GoogleSearchListener.java @@ -60,11 +60,13 @@ public class GoogleSearchListener extends ImprovedListenerAdapter implements Des @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 3181046..5198062 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 4d6ab70..929380d 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/HelloOnJoinListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/HelloOnJoinListener.java @@ -26,13 +26,15 @@ public class HelloOnJoinListener extends ImprovedListenerAdapter implements Desc @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 6dd30b2..74653d8 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/LinkPreviewListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/LinkPreviewListener.java @@ -50,11 +50,13 @@ public class LinkPreviewListener extends ImprovedListenerAdapter implements Desc @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 40b0eaa..d186bd7 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/LoggerListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/LoggerListener.java @@ -63,6 +63,8 @@ public class LoggerListener extends ImprovedListenerAdapter implements Descripti @Override public void onJoin(JoinEvent event) throws Exception { + super.onJoin(event); + if (!isEnabled(event)) return; synchronized (onlineUsers) { @@ -82,6 +84,8 @@ public class LoggerListener extends ImprovedListenerAdapter implements Descripti @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) { @@ -96,6 +100,8 @@ public class LoggerListener extends ImprovedListenerAdapter implements Descripti @Override public void onQuit(QuitEvent event) throws Exception { + super.onQuit(event); + List channels = new ArrayList<>(); synchronized (onlineUsers) { for (String channelName : onlineUsers.keySet()) { @@ -112,6 +118,8 @@ public class LoggerListener extends ImprovedListenerAdapter implements Descripti @Override public void onKick(KickEvent event) throws Exception { + super.onKick(event); + if (!isEnabled(event)) return; if (onlineUsers.containsKey(event.getChannel().getName())) { @@ -122,12 +130,16 @@ public class LoggerListener extends ImprovedListenerAdapter implements Descripti @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); @@ -142,24 +154,32 @@ public class LoggerListener extends ImprovedListenerAdapter implements Descripti @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 1377552..49f1ebc 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/PingPongListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/PingPongListener.java @@ -17,8 +17,9 @@ public class PingPongListener extends ListenerAdapter implements DescriptionProv @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 97dbd36..bf27877 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/RegexCheckerListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/RegexCheckerListener.java @@ -49,6 +49,7 @@ public class RegexCheckerListener extends ImprovedListenerAdapter implements Des @Override public void onMessage(final MessageEvent event) throws Exception { + super.onMessage(event); //TODO: rework with FSM @@ -56,7 +57,7 @@ public class RegexCheckerListener extends ImprovedListenerAdapter implements Des 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 334f9b0..3e736f2 100644 --- a/src/main/java/ru/bvn13/jircbot/listeners/StatisticsListener.java +++ b/src/main/java/ru/bvn13/jircbot/listeners/StatisticsListener.java @@ -54,6 +54,7 @@ public class StatisticsListener extends ImprovedListenerAdapter implements Descr @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 @@ - + +