From dcb63b37f221d22b542e8d61199e1e1acd2d1c5e Mon Sep 17 00:00:00 2001 From: panshul Date: Tue, 10 Feb 2015 23:52:59 +0100 Subject: [PATCH 1/2] Name Comment Plugin --- .../commands/plugins/NameCommentPlugin.java | 37 +++++++++++++++++++ .../plugins/NameCommentPluginTest.java | 22 +++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java create mode 100644 src/test/java/de/votesapp/commands/plugins/NameCommentPluginTest.java diff --git a/src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java b/src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java new file mode 100644 index 0000000..6882f52 --- /dev/null +++ b/src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java @@ -0,0 +1,37 @@ +package de.votesapp.commands.plugins; + +import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.springframework.web.client.RestTemplate; + +import de.votesapp.client.GroupMessage; +import de.votesapp.commands.CommandPlugin; +import de.votesapp.groups.Group; + +public class NameCommentPlugin implements CommandPlugin +{ + private Pattern pattern = Pattern.compile("^comment \\w+$"); + + @Override public Optional interpret(GroupMessage message, Group group) + { + Matcher matcher = pattern.matcher(message.normalizedText()); + if (matcher.matches()) + { + return Optional.of(Answer.intoGroup(group, fetchNewComment(message))); + } + return Optional.empty(); + } + + public String fetchNewComment(GroupMessage message) + { + String noun = message.normalizedText().split(" ")[1]; + final RestTemplate restTemplate = new RestTemplate(); + final String response = restTemplate.getForObject("http://nickserve42.appspot.com/forname/" + noun, String.class); + return String.format("%s says: %s", message.getSenderName(), response); + } +} + + + diff --git a/src/test/java/de/votesapp/commands/plugins/NameCommentPluginTest.java b/src/test/java/de/votesapp/commands/plugins/NameCommentPluginTest.java new file mode 100644 index 0000000..107ce99 --- /dev/null +++ b/src/test/java/de/votesapp/commands/plugins/NameCommentPluginTest.java @@ -0,0 +1,22 @@ +package de.votesapp.commands.plugins; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; + +import org.junit.Test; + +import de.votesapp.client.GroupMessage; + +public class NameCommentPluginTest +{ + @Test + public void should_fetch_comment() + { + GroupMessage message = mock(GroupMessage.class); + when(message.normalizedText()).thenReturn("comment foobar"); + when(message.getSenderName()).thenReturn("test user"); + String comment = new NameCommentPlugin().fetchNewComment(message); + assertTrue(comment.contains("test user")); + assertTrue(comment.contains("foobar")); + } +} From 2cfa58725fc5fe511e7be49e835745053bc01bf4 Mon Sep 17 00:00:00 2001 From: panshul Date: Wed, 11 Feb 2015 00:09:02 +0100 Subject: [PATCH 2/2] Name Comment Plugin - regex case insensitive --- .../java/de/votesapp/commands/plugins/NameCommentPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java b/src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java index 6882f52..d114610 100644 --- a/src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java +++ b/src/main/java/de/votesapp/commands/plugins/NameCommentPlugin.java @@ -12,7 +12,7 @@ public class NameCommentPlugin implements CommandPlugin { - private Pattern pattern = Pattern.compile("^comment \\w+$"); + private Pattern pattern = Pattern.compile("^comment \\w+$",Pattern.CASE_INSENSITIVE); @Override public Optional interpret(GroupMessage message, Group group) {