package jtweet.web; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jtweet.oauth.Utils; import twitter4j.Status; import twitter4j.TwitterException; import twitter4j.User; import freemarker.template.Template; import freemarker.template.TemplateException; @SuppressWarnings("serial") public class FollowServlet extends JTweetServlet { protected String uri; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/html; charset=UTF-8"); String uid = req.getParameter("id"); uri = req.getRequestURI(); String action = uri.substring(1); String page = req.getParameter("page"); if (isLogin(req)) { if (Utils.isEmptyOrNull(getPasswd())) { twitterOAuth(getAccessToken(), getAccessTokenSecret(), req); } else { init_twitter(getUsername(), getPasswd(), req); } if (page != null) { try { int p = Integer.parseInt(page); if (p > 0) paging.setPage(p); else { resp.sendRedirect(uri); return; } } catch (NumberFormatException e) { resp.sendRedirect(uri); return; } } if (action.equalsIgnoreCase("follower")) { getFollower(uid, resp); } else if (action.equalsIgnoreCase("following")) { getFollowing(uid, resp); } else if (action.equalsIgnoreCase("block")) { getBlock(uid, resp); } } else { redirectLogin(req, resp); } } protected void getFollower(String uid, HttpServletResponse resp) throws IOException { HashMap<String, Object> root = new HashMap<String, Object>(); freemarker.template.Configuration config = new freemarker.template.Configuration(); config.setDirectoryForTemplateLoading(new File("template")); config.setDefaultEncoding("UTF-8"); List<User> follower; try { root.put("title", "关注者"); root.put("browser", browser); root.put("user", getTuser()); root.put("rate", twitter.rateLimitStatus()); if (uid == null || uid.equalsIgnoreCase(getTuser().getScreenName())) { root.put("user_show", getTuser()); follower = twitter.getFollowersStatuses(); root.put("follow", follower); } else { User user = twitter.showUser(uid); root.put("user_show", user); if ((!user.isProtected()) || user.getFollowing()) { follower = twitter.getFollowersStatuses(uid); root.put("follow", follower); } } root.put("uri", uri); root.put("page", paging.getPage()); Template t = config.getTemplate("follow.ftl"); t.process(root, resp.getWriter()); } catch (TwitterException e) { // TODO Auto-generated catch block resp.sendError(e.getStatusCode()); e.printStackTrace(); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void getFollowing(String uid, HttpServletResponse resp) throws IOException { HashMap<String, Object> root = new HashMap<String, Object>(); freemarker.template.Configuration config = new freemarker.template.Configuration(); config.setDirectoryForTemplateLoading(new File("template")); config.setDefaultEncoding("UTF-8"); List<User> following; try { root.put("title", "朋友"); root.put("browser", browser); root.put("user", getTuser()); root.put("rate", twitter.rateLimitStatus()); if (uid == null || uid.equalsIgnoreCase(getTuser().getScreenName())) { root.put("user_show", getTuser()); following = twitter.getFriendsStatuses(); root.put("follow", following); } else { User user = twitter.showUser(uid); root.put("user_show", user); if ((!user.isProtected()) || user.getFollowing()) { following = twitter.getFriendsStatuses(uid); root.put("follow", following); } } root.put("uri", uri); root.put("page", paging.getPage()); Template t = config.getTemplate("follow.ftl"); t.process(root, resp.getWriter()); } catch (TwitterException e) { // TODO Auto-generated catch block resp.sendError(e.getStatusCode()); e.printStackTrace(); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void getBlock(String uid, HttpServletResponse resp) throws IOException { if (uid != null) { resp.sendRedirect("/block"); return; } HashMap<String, Object> root = new HashMap<String, Object>(); freemarker.template.Configuration config = new freemarker.template.Configuration(); config.setDirectoryForTemplateLoading(new File("template")); config.setDefaultEncoding("UTF-8"); List<User> block; try { root.put("title", "屏蔽列表"); root.put("browser", browser); root.put("user", getTuser()); root.put("rate", twitter.rateLimitStatus()); root.put("user_show", getTuser()); block = twitter.getBlockingUsers(paging.getPage()); root.put("follow", block); root.put("uri", uri); root.put("page", paging.getPage()); Template t = config.getTemplate("follow.ftl"); t.process(root, resp.getWriter()); } catch (TwitterException e) { // TODO Auto-generated catch block resp.sendError(e.getStatusCode()); e.printStackTrace(); } catch (TemplateException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }