package com.juick.api; import com.juick.Tag; import com.juick.User; import com.juick.json.MessageSerializer; import com.juick.server.MessagesQueries; import com.juick.server.TagQueries; import com.juick.server.UserQueries; import com.juick.xmpp.JID; import com.juick.xmpp.Message; import com.juick.xmpp.Stream; import com.juick.xmpp.extensions.JuickMessage; import org.springframework.jdbc.core.JdbcTemplate; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** * * @author ugnich */ public class Messages { JdbcTemplate sql; MessageSerializer messageSerializer = new MessageSerializer(); enum MediaType { ALL("all"), PHOTO("photo"), VIDEO("video"), NONE(""); private final String value; MediaType(final String value) { this.value = value; } public String getValue() { return value; } @Override public String toString() { return this.getValue(); } } public Messages(JdbcTemplate sql) { this.sql = sql; } public void doGetHome(HttpServletRequest request, HttpServletResponse response, int vuid) throws ServletException, IOException { int before_mid = Utils.parseInt(request.getParameter("before_mid"), 0); List mids = MessagesQueries.getMyFeed(sql, vuid, before_mid); if (mids != null && !mids.isEmpty()) { List msgs = MessagesQueries.getMessages(sql, mids); if (msgs != null && !msgs.isEmpty()) { String json = messageSerializer.serializeList(msgs); Main.replyJSON(request, response, json); } else { response.sendError(404); } } else { response.sendError(404); } } public void doGet(HttpServletRequest request, HttpServletResponse response, int vuid) throws ServletException, IOException { User user = UserQueries.getUserByName(sql, request.getParameter("uname")); int before_mid = Utils.parseInt(request.getParameter("before_mid"), 0); int page = Utils.parseInt(request.getParameter("page"), 0); MediaType media = MediaType.valueOf(request.getParameter("media")); boolean popular = Boolean.valueOf(request.getParameter("popular")); Tag tag = TagQueries.getTag(sql, request.getParameter("tag"), false); } public void doGetRecommended(HttpServletRequest request, HttpServletResponse response, int vuid) throws ServletException, IOException { int before_mid = Utils.parseInt(request.getParameter("before_mid"), 0); List mids = MessagesQueries.getUserRecommendations(sql, vuid, before_mid); if (mids != null && !mids.isEmpty()) { List msgs = MessagesQueries.getMessages(sql, mids); if (msgs != null && !msgs.isEmpty()) { String json = messageSerializer.serializeList(msgs); Main.replyJSON(request, response, json); } else { response.sendError(404); } } else { response.sendError(404); } } public void doSetPrivacy(HttpServletRequest request, HttpServletResponse response, Stream xmpp, int vuid) throws ServletException, IOException { int mid = Utils.parseInt(request.getParameter("mid"), 0); com.juick.User user = MessagesQueries.getMessageAuthor(sql, mid); if (user != null && user.getUID() == vuid && MessagesQueries.setMessagePrivacy(sql, mid)) { Main.replyJSON(request, response, "{\"status\":\"ok\"}"); } else { response.sendError(400); } } public void doSetPopular(HttpServletRequest request, HttpServletResponse response, Stream xmpp) throws ServletException, IOException { int mid = Utils.parseInt(request.getParameter("mid"), 0); int popular = Utils.parseInt(request.getParameter("popular"), 0); if (mid > 0) { boolean ret = MessagesQueries.setMessagePopular(sql, mid, popular); if (ret && popular == 2) { try { com.juick.Message m = MessagesQueries.getMessage(sql, mid); if (m != null) { Message msg = new Message(); msg.from = new JID("juick", "juick.com", null); msg.to = new JID(null, "crosspost.juick.com", null); JuickMessage jmsg = new JuickMessage(m); jmsg.setUser(UserQueries.getUserByUID(sql, 11574)); msg.childs.add(jmsg); msg.to.Username = "twitter"; xmpp.send(msg); msg.to.Username = "fb"; xmpp.send(msg); msg.to.Username = "vk"; xmpp.send(msg); } else { throw new Exception("Message not found"); } } catch (Exception e) { System.err.println("SETPOPULAR ERROR: " + e.toString()); } } Main.replyJSON(request, response, "{\"status\":\"ok\"}"); } } }