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 UserServlet extends JTweetServlet { protected String uri; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/html; charset=UTF-8"); uri = req.getRequestURI(); String uid = req.getParameter("id"); String page = req.getParameter("page"); String show = req.getParameter("show"); if (isLogin(req) && uid != null) { 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 (show == null) { getUserTimeline(uid, resp); } else if (show.equalsIgnoreCase("favor")) { getUserFavor(uid, resp); } else { resp.sendRedirect("/home"); return; } } else { redirectLogin(req, resp); } } protected void getUserTimeline(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"); try { User user; if (uid.equalsIgnoreCase(getTuser().getScreenName())) { user = getTuser(); } else { user = twitter.showUser(uid); } root.put("user", getTuser()); root.put("browser", browser); root.put("rate", twitter.rateLimitStatus()); root.put("user_show", user); root.put("title", "时间线"); root.put("uri", uri + "?id=" + uid); root.put("page", paging.getPage()); if (uid.equalsIgnoreCase(getTuser().getScreenName())) { List<Status> status = twitter.getUserTimeline(paging); root.put("status", status); } else if ((!user.isProtected()) || user.getFollowing()) { List<Status> status = twitter.getUserTimeline(uid, paging); root.put("status", status); } Template t = config.getTemplate("user.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 getUserFavor(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"); try { User user; if (uid.equalsIgnoreCase(getTuser().getScreenName())) { user = getTuser(); } else { user = twitter.showUser(uid); } root.put("user", getTuser()); root.put("browser", browser); root.put("rate", twitter.rateLimitStatus()); root.put("user_show", user); root.put("title", "收藏"); root.put("uri", uri + "?id=" + uid + "&show=favor"); root.put("page", paging.getPage()); if (uid.equalsIgnoreCase(getTuser().getScreenName())) { List<Status> status = twitter.getFavorites(paging.getPage()); root.put("status", status); } else if ((!user.isProtected()) || user.getFollowing()) { List<Status> status = twitter.getFavorites(uid, paging.getPage()); root.put("status", status); } Template t = config.getTemplate("user.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(); } } }