package com.oreilly.demo.android.pa.clientserver.server.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONObject; import com.oreilly.demo.android.pa.clientserver.server.ServerStatic; import com.oreilly.demo.android.pa.clientserver.server.dataobjects.User; public class AddFriendServlet extends BaseServlet { private static final long serialVersionUID = 8146202127266520911L; @Override protected void response(HttpServletRequest req, HttpServletResponse res) { if(res == null) return; if(ServerStatic.getConfig().getUserData() == null) { res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); res.setContentLength(0); return; } String authtoken = req.getParameter("token"); String idstr = req.getParameter("id"); String userstr = req.getParameter("user"); if(authtoken == null || (idstr == null && userstr == null)) { res.setStatus(HttpServletResponse.SC_FORBIDDEN); res.setContentLength(0); return; } User user = ServerStatic.getConfig().getUserData().getUserByToken(authtoken); if(user == null) { res.setStatus(HttpServletResponse.SC_FORBIDDEN); res.setContentLength(0); return; } User friend = null; if(idstr != null) { int id = 0; try { id = Integer.parseInt(idstr); } catch (Exception e) { res.setStatus(HttpServletResponse.SC_FORBIDDEN); res.setContentLength(0); return; } friend = ServerStatic.getConfig().getUserData().getUser(id); } else { try { friend = User.fromJSON(new JSONObject(userstr)); } catch (Exception e) { res.setStatus(HttpServletResponse.SC_FORBIDDEN); res.setContentLength(0); return; } friend.id = 0; friend = ServerStatic.getConfig().getUserData().addUser(friend); } if(friend == null) { res.setStatus(HttpServletResponse.SC_FORBIDDEN); res.setContentLength(0); return; } user.addFriend(friend.id); try { ServerStatic.getConfig().getUserData().saveData(); } catch (Exception e) { e.printStackTrace(); } res.setStatus(HttpServletResponse.SC_OK); try { byte[] b = "{}".getBytes(); res.getOutputStream().write(b); res.setContentLength(b.length); } catch (Throwable t) { res.setContentLength(0); } } @Override public String getPath() { return "/addfriend/*"; } }