aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/src/main/java/com/juick/server/protocol')
-rw-r--r--juick-server/src/main/java/com/juick/server/protocol/JuickProtocol.java136
1 files changed, 76 insertions, 60 deletions
diff --git a/juick-server/src/main/java/com/juick/server/protocol/JuickProtocol.java b/juick-server/src/main/java/com/juick/server/protocol/JuickProtocol.java
index 68c7c37c..7b155747 100644
--- a/juick-server/src/main/java/com/juick/server/protocol/JuickProtocol.java
+++ b/juick-server/src/main/java/com/juick/server/protocol/JuickProtocol.java
@@ -7,12 +7,12 @@ import com.juick.Message;
import com.juick.Tag;
import com.juick.User;
import com.juick.formatters.PlainTextFormatter;
-import com.juick.server.*;
import com.juick.server.helpers.TagStats;
import com.juick.server.protocol.annotation.UserCommand;
+import com.juick.service.*;
import com.juick.util.TagUtils;
-import org.springframework.jdbc.core.JdbcTemplate;
+import javax.inject.Inject;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
@@ -25,13 +25,26 @@ import java.util.stream.Collectors;
*/
public class JuickProtocol {
- ObjectMapper json = new ObjectMapper();
- JdbcTemplate sql;
- String baseUri;
-
- public JuickProtocol(JdbcTemplate sql, String baseUri) {
- this.sql = sql;
+ private final ObjectMapper json;
+ private String baseUri;
+ @Inject
+ UserService userService;
+ @Inject
+ TagService tagService;
+ @Inject
+ MessagesService messagesService;
+ @Inject
+ SubscriptionService subscriptionService;
+ @Inject
+ PMQueriesService pmQueriesService;
+ @Inject
+ PrivacyQueriesService privacyQueriesService;
+ @Inject
+ ShowQueriesService showQueriesService;
+
+ public JuickProtocol(String baseUri) {
this.baseUri = baseUri;
+ json = new ObjectMapper();
json.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
json.setSerializationInclusion(JsonInclude.Include.NON_NULL);
json.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT);
@@ -71,21 +84,20 @@ public class JuickProtocol {
}
public ProtocolReply postMessage(User user, String input) throws JsonProcessingException {
- List<Tag> tags = TagQueries.fromString(sql, input, false);
+ List<Tag> tags = tagService.fromString(input, false);
String body = input.substring(TagUtils.toString(tags).length());
- int mid = MessagesQueries.createMessage(sql, user.getUid(), body, null, tags);
- SubscriptionsQueries.subscribeMessage(sql, mid, user.getUid());
- //app.events().publishEvent(new JuickMessageEvent(app.messages().getMessage(mid)));
+ int mid = messagesService.createMessage(user.getUid(), body, null, tags);
+ subscriptionService.subscribeMessage(mid, user.getUid());
return new ProtocolReply("New message posted.\n#" + mid + " " + baseUri + mid,
- Optional.of(json.writeValueAsString(Collections.singletonList(MessagesQueries.getMessage(sql, mid)))));
+ Optional.of(json.writeValueAsString(Collections.singletonList(messagesService.getMessage(mid)))));
}
@UserCommand(pattern = "^#(\\++)$", help = "#+ - Show last Juick messages (#++ - second page, ...)")
public ProtocolReply commandLast(User user, String... arguments) throws JsonProcessingException {
// number of + is the page count
int page = arguments[0].length() - 1;
- List<Integer> mids = MessagesQueries.getAll(sql, user.getUid(), page);
- List<Message> messages = MessagesQueries.getMessages(sql, mids);
+ List<Integer> mids = messagesService.getAll(user.getUid(), page);
+ List<Message> messages = messagesService.getMessages(mids);
return new ProtocolReply("Last messages: \n" + String.join("\n", messages.stream().map(PlainTextFormatter::formatPost)
.collect(Collectors.toList())), Optional.of(json.writeValueAsString(messages)));
}
@@ -96,8 +108,8 @@ public class JuickProtocol {
List<User> blusers;
List<String> bltags;
- blusers = UserQueries.getUserBLUsers(sql, user_from.getUid());
- bltags = TagQueries.getUserBLTags(sql, user_from.getUid());
+ blusers = userService.getUserBLUsers(user_from.getUid());
+ bltags = tagService.getUserBLTags(user_from.getUid());
String txt = "";
@@ -124,10 +136,10 @@ public class JuickProtocol {
@UserCommand(pattern = "^bl\\s+@([^\\s\\n\\+]+)", patternFlags = Pattern.CASE_INSENSITIVE,
help = "BL @username - add @username to your blacklist")
public ProtocolReply blacklistUser(User from, String... arguments) {
- User blUser = UserQueries.getUserByName(sql, arguments[0]);
+ User blUser = userService.getUserByName(arguments[0]);
if (blUser != null) {
- PrivacyQueries.PrivacyResult result = PrivacyQueries.blacklistUser(sql, from, blUser);
- if (result == PrivacyQueries.PrivacyResult.Added) {
+ PrivacyQueriesService.PrivacyResult result = privacyQueriesService.blacklistUser(from, blUser);
+ if (result == PrivacyQueriesService.PrivacyResult.Added) {
return new ProtocolReply("User added to your blacklist", Optional.empty());
} else {
return new ProtocolReply("User removed from your blacklist", Optional.empty());
@@ -139,12 +151,12 @@ public class JuickProtocol {
@UserCommand(pattern = "^bl\\s\\*(\\S+)$", patternFlags = Pattern.CASE_INSENSITIVE,
help = "BL *tag - add *tag to your blacklist")
public ProtocolReply blacklistTag(User from, String... arguments) {
- User blUser = UserQueries.getUserByName(sql, arguments[0]);
+ User blUser = userService.getUserByName(arguments[0]);
if (blUser != null) {
- Tag tag = TagQueries.getTag(sql, arguments[0], false);
+ Tag tag = tagService.getTag(arguments[0], false);
if (tag != null) {
- PrivacyQueries.PrivacyResult result = PrivacyQueries.blacklistTag(sql, from, tag);
- if (result == PrivacyQueries.PrivacyResult.Added) {
+ PrivacyQueriesService.PrivacyResult result = privacyQueriesService.blacklistTag(from, tag);
+ if (result == PrivacyQueriesService.PrivacyResult.Added) {
return new ProtocolReply("Tag added to your blacklist", Optional.empty());
} else {
return new ProtocolReply("Tag removed from your blacklist", Optional.empty());
@@ -158,7 +170,7 @@ public class JuickProtocol {
public ProtocolReply commandUsers(User currentUser, String... args) {
StringBuilder msg = new StringBuilder();
msg.append("Recommended blogs");
- List<String> recommendedUsers = ShowQueries.getRecommendedUsers(sql, currentUser);
+ List<String> recommendedUsers = showQueriesService.getRecommendedUsers(currentUser);
if (recommendedUsers.size() > 0) {
for (String user : recommendedUsers) {
msg.append("\n@").append(user);
@@ -167,7 +179,7 @@ public class JuickProtocol {
msg.append("\nNo recommendations now. Subscribe to more blogs. ;)");
}
msg.append("\n\nTop 10 personal blogs:");
- List<String> topUsers = ShowQueries.getTopUsers(sql);
+ List<String> topUsers = showQueriesService.getTopUsers();
if (topUsers.size() > 0) {
for (String user : topUsers) {
msg.append("\n@").append(user);
@@ -180,7 +192,7 @@ public class JuickProtocol {
@UserCommand(pattern = "\\*", help = "* - Show your tags")
public ProtocolReply commandTags(User currentUser, String... args) {
- List<TagStats> tags = TagQueries.getTagsStats(sql, currentUser.getUid());
+ List<TagStats> tags = tagService.getUserTagStats(currentUser.getUid());
String msg = "Your tags: (tag - messages)\n" +
tags.stream()
.map(t -> String.format("\n*%s - %d", t.getTag().getName(), t.getUsageCount())).collect(Collectors.joining());
@@ -189,9 +201,9 @@ public class JuickProtocol {
@UserCommand(pattern = "!", help = "! - Show your favorite messages")
public ProtocolReply commandFavorites(User currentUser, String... args) throws JsonProcessingException {
- List<Integer> mids = MessagesQueries.getUserRecommendations(sql, currentUser.getUid(), 0);
+ List<Integer> mids = messagesService.getUserRecommendations(currentUser.getUid(), 0);
if (mids.size() > 0) {
- List<Message> messages = MessagesQueries.getMessages(sql, mids);
+ List<Message> messages = messagesService.getMessages(mids);
return new ProtocolReply("Favorite messages: \n" + String.join("\n", messages.stream().map(PlainTextFormatter::formatPost)
.collect(Collectors.toList())), Optional.of(json.writeValueAsString(messages)));
}
@@ -201,11 +213,11 @@ public class JuickProtocol {
@UserCommand(pattern = "^\\@([^\\s\\n\\+]+)(\\+?)$",
help = "@username+ - Show user's info and last 10 messages (@username++ - second page, ..)")
public ProtocolReply commandUser(User user, String... arguments) throws JsonProcessingException {
- User blogUser = UserQueries.getUserByName(sql, arguments[0]);
+ User blogUser = userService.getUserByName(arguments[0]);
int page = arguments[1].length();
if (blogUser != null) {
- List<Integer> mids = MessagesQueries.getUserBlog(sql, blogUser.getUid(), 0, page);
- List<Message> messages = MessagesQueries.getMessages(sql, mids);
+ List<Integer> mids = messagesService.getUserBlog(blogUser.getUid(), 0, page);
+ List<Message> messages = messagesService.getMessages(mids);
return new ProtocolReply(String.format("Last messages from @%s:\n%s", arguments[0],
String.join("\n", messages.stream()
.map(Object::toString).collect(Collectors.toList()))),
@@ -219,7 +231,7 @@ public class JuickProtocol {
public ProtocolReply commandDel(User user, String... args) {
try {
int mid = Integer.parseInt(args[0]);
- if (MessagesQueries.deleteMessage(sql, user.getUid(), mid)) {
+ if (messagesService.deleteMessage(user.getUid(), mid)) {
return new ProtocolReply(String.format("Message %s deleted", mid), Optional.empty());
}
} catch (NumberFormatException e) {
@@ -231,7 +243,7 @@ public class JuickProtocol {
@UserCommand(pattern = "^\\s*login\\s*$", patternFlags = Pattern.CASE_INSENSITIVE,
help = "LOGIN - log in to Juick website")
public ProtocolReply commandLogin(User user, String... arguments) {
- return new ProtocolReply(baseUri + "?" + UserQueries.getHashByUID(sql, user.getUid()),
+ return new ProtocolReply(baseUri + "?" + userService.getHashByUID(user.getUid()),
Optional.empty());
}
@@ -239,8 +251,8 @@ public class JuickProtocol {
public ProtocolReply commandMyFeed(User user, String... arguments) throws JsonProcessingException {
// number of # is the page count
int page = arguments[0].length() - 1;
- List<Integer> mids = MessagesQueries.getMyFeed(sql, user.getUid(), page);
- List<Message> messages = MessagesQueries.getMessages(sql, mids);
+ List<Integer> mids = messagesService.getMyFeed(user.getUid(), page);
+ List<Message> messages = messagesService.getMessages(mids);
// TODO: add instructions for empty feed
return new ProtocolReply("Your feed: \n" + String.join("\n",
messages.stream().map(PlainTextFormatter::formatPost).collect(Collectors.toList())),
@@ -250,17 +262,17 @@ public class JuickProtocol {
@UserCommand(pattern = "^\\s*(on|off)\\s*$", patternFlags = Pattern.CASE_INSENSITIVE,
help = "ON/OFF - Enable/disable subscriptions delivery")
public ProtocolReply commandOnOff(User user, String[] input) {
- UserQueries.ActiveStatus newStatus;
+ UserService.ActiveStatus newStatus;
String retValUpdated;
if (input[0].toLowerCase().equals("on")) {
- newStatus = UserQueries.ActiveStatus.Active;
+ newStatus = UserService.ActiveStatus.Active;
retValUpdated = "Notifications are activated for " + user.getJid();
} else {
- newStatus = UserQueries.ActiveStatus.Inactive;
+ newStatus = UserService.ActiveStatus.Inactive;
retValUpdated = "Notifications are disabled for " + user.getJid();
}
- if (UserQueries.setActiveStatusForJID(sql, user.getJid(), newStatus)) {
+ if (userService.setActiveStatusForJID(user.getJid(), newStatus)) {
return new ProtocolReply(retValUpdated, Optional.empty());
} else {
return new ProtocolReply(String.format("Subscriptions status for %s was not changed", user.getJid()),
@@ -285,17 +297,17 @@ public class JuickProtocol {
boolean haveInRoster = false;
if (user_to.indexOf('@') > 0) {
- uid_to = UserQueries.getUIDbyJID(sql, user_to);
+ uid_to = userService.getUIDbyJID(user_to);
} else {
- uid_to = UserQueries.getUIDbyName(sql, user_to);
+ uid_to = userService.getUIDbyName(user_to);
}
if (uid_to > 0) {
- if (!UserQueries.isInBLAny(sql, uid_to, user_from.getUid())) {
- if (PMQueries.createPM(sql, user_from.getUid(), uid_to, body)) {
+ if (!userService.isInBLAny(uid_to, user_from.getUid())) {
+ if (pmQueriesService.createPM(user_from.getUid(), uid_to, body)) {
//jid_to = UserQueries.getJIDsbyUID(sql, uid_to);
if (jid_to != null) {
- haveInRoster = PMQueries.havePMinRoster(sql, user_from.getUid(), jid_to);
+ haveInRoster = pmQueriesService.havePMinRoster(user_from.getUid(), jid_to);
}
ret = 200;
} else {
@@ -347,10 +359,10 @@ public class JuickProtocol {
} catch (NumberFormatException e) {
return new ProtocolReply("Error", Optional.empty());
}
- Message msg = MessagesQueries.getMessage(sql, mid);
+ Message msg = messagesService.getMessage(mid);
if (msg != null) {
if (showReplies) {
- List<Message> replies = MessagesQueries.getReplies(sql, mid);
+ List<Message> replies = messagesService.getReplies(mid);
replies.add(0, msg);
return new ProtocolReply(String.join("\n",
replies.stream().map(PlainTextFormatter::formatPost).collect(Collectors.toList())),
@@ -377,18 +389,18 @@ public class JuickProtocol {
rid = 0;
}
String txt = args[5];
- List<Tag> messageTags = TagQueries.fromString(sql, txt, true);
+ List<Tag> messageTags = tagService.fromString(txt, true);
if (messageTags.size() > 0) {
- if (user.getUid() != MessagesQueries.getMessageAuthor(sql, mid).getUid()) {
+ if (user.getUid() != messagesService.getMessageAuthor(mid).getUid()) {
return new ProtocolReply("It is not your message", Optional.empty());
}
- TagQueries.updateTags(sql, mid, messageTags);
+ tagService.updateTags(mid, messageTags);
return new ProtocolReply("Tags are updated", Optional.empty());
} else {
- int newrid = MessagesQueries.createReply(sql, mid, rid, user.getUid(), txt, null);
+ int newrid = messagesService.createReply(mid, rid, user.getUid(), txt, null);
return new ProtocolReply("Reply posted.\n#" + mid + "/" + newrid + " "
+ baseUri + mid + "/" + newrid,
- Optional.of(json.writeValueAsString(Collections.singletonList(MessagesQueries.getReply(sql, mid, newrid)))));
+ Optional.of(json.writeValueAsString(Collections.singletonList(messagesService.getReply(mid, newrid)))));
}
}
@@ -403,11 +415,11 @@ public class JuickProtocol {
return new ProtocolReply("Error", Optional.empty());
}
if (subscribe) {
- if (SubscriptionsQueries.subscribeMessage(sql, mid, user.getUid())) {
+ if (subscriptionService.subscribeMessage(mid, user.getUid())) {
return new ProtocolReply("Subscribed", Optional.empty());
}
} else {
- if (SubscriptionsQueries.unSubscribeMessage(sql, mid, user.getUid())) {
+ if (subscriptionService.unSubscribeMessage(mid, user.getUid())) {
return new ProtocolReply("Unsubscribed from #" + mid, Optional.empty());
}
return new ProtocolReply("You was not subscribed to #" + mid, Optional.empty());
@@ -418,16 +430,16 @@ public class JuickProtocol {
patternFlags = Pattern.CASE_INSENSITIVE)
public ProtocolReply commandSubscribeUser(User user, String... args) {
boolean subscribe = args[0].equalsIgnoreCase("s");
- User toUser = UserQueries.getUserByName(sql, args[1]);
+ User toUser = userService.getUserByName(args[1]);
if (toUser.getUid() > 0) {
if (subscribe) {
- if (SubscriptionsQueries.subscribeUser(sql, user, toUser)) {
+ if (subscriptionService.subscribeUser(user, toUser)) {
return new ProtocolReply("Subscribed", Optional.empty());
// TODO: notification
// TODO: already subscribed case
}
} else {
- if (SubscriptionsQueries.unSubscribeUser(sql, user, toUser)) {
+ if (subscriptionService.unSubscribeUser(user, toUser)) {
return new ProtocolReply("Unsubscribed from @" + toUser.getName(), Optional.empty());
}
return new ProtocolReply("You was not subscribed to @" + toUser.getName(), Optional.empty());
@@ -439,13 +451,13 @@ public class JuickProtocol {
"\nU *tag - unsubscribe from tag", patternFlags = Pattern.CASE_INSENSITIVE)
public ProtocolReply commandSubscribeTag(User user, String... args) {
boolean subscribe = args[0].equalsIgnoreCase("s");
- Tag tag = TagQueries.getTag(sql, args[1], true);
+ Tag tag = tagService.getTag(args[1], true);
if (subscribe) {
- if (SubscriptionsQueries.subscribeTag(sql, user, tag)) {
+ if (subscriptionService.subscribeTag(user, tag)) {
return new ProtocolReply("Subscribed", Optional.empty());
}
} else {
- if (SubscriptionsQueries.unSubscribeTag(sql, user, tag)) {
+ if (subscriptionService.unSubscribeTag(user, tag)) {
return new ProtocolReply("Unsubscribed from " + tag.getName(), Optional.empty());
}
return new ProtocolReply("You was not subscribed to " + tag.getName(), Optional.empty());
@@ -462,4 +474,8 @@ public class JuickProtocol {
.collect(Collectors.toList());
return new ProtocolReply(String.join("\n", commandsHelp), Optional.empty());
}
+
+ public String getBaseUri() {
+ return baseUri;
+ }
}