package com.juick.api; import com.juick.User; import com.juick.json.UserSerializer; import com.juick.server.UserQueries; import com.juick.util.UserUtils; 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.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * * @author ugnich */ public class Users { JdbcTemplate sql; UserSerializer userSerializer = new UserSerializer(); public Users(JdbcTemplate sql) { this.sql = sql; } public void doGetUsers(HttpServletRequest request, HttpServletResponse response, int vuid) throws ServletException, IOException { List users = new ArrayList<>(); String punames[] = request.getParameterValues("uname"); if (punames != null) { ArrayList unames = new ArrayList<>(Arrays.asList(punames)); Iterator i = unames.iterator(); while (i.hasNext()) { if (!i.next().matches("^[a-zA-Z0-9\\-]{2,16}$")) { i.remove(); } } if (!unames.isEmpty() && unames.size() < 20) { users.addAll(UserQueries.getUsersByName(sql, unames)); } } String pjids[] = request.getParameterValues("jid"); if (pjids != null) { List jids = new ArrayList<>(Arrays.asList(pjids)); Iterator ii = jids.iterator(); while (ii.hasNext()) { if (!ii.next().matches("^[a-zA-Z0-9\\-\\_\\@\\.]{6,64}$")) { ii.remove(); } } if (!jids.isEmpty() && jids.size() < 20) { users.addAll(UserQueries.getUsersByJID(sql, jids)); } } if (!users.isEmpty()) { String json = userSerializer.serializeList(users); Main.replyJSON(request, response, json); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND); } } public void doGetUserRead(HttpServletRequest request, HttpServletResponse response, int vuid) throws ServletException, IOException { int uid = 0; String uname = request.getParameter("uname"); if (uname == null) { uid = vuid; } else { if (UserUtils.checkUserNameValid(uname)) { com.juick.User u = UserQueries.getUserByName(sql, uname); if (u != null && u.getUid() > 0) { uid = u.getUid(); } } } if (uid > 0) { List uids = UserQueries.getUserRead(sql, uid); if (uids.size() > 0) { List users = UserQueries.getUsersByID(sql, uids); if (users.size() > 0) { String json = userSerializer.serializeList(users); Main.replyJSON(request, response, json); return; } } } response.sendError(HttpServletResponse.SC_NOT_FOUND); } public void doGetUserReaders(HttpServletRequest request, HttpServletResponse response, int vuid) throws ServletException, IOException { int uid = 0; String uname = request.getParameter("uname"); if (uname == null) { uid = vuid; } else { if (UserUtils.checkUserNameValid(uname)) { com.juick.User u = UserQueries.getUserByName(sql, uname); if (u != null && u.getUid() > 0) { uid = u.getUid(); } } } if (uid > 0) { List users = UserQueries.getUserReaders(sql, uid); String json = userSerializer.serializeList(users); Main.replyJSON(request, response, json); return; } response.sendError(HttpServletResponse.SC_NOT_FOUND); } }