1 package usecase.vote;
2
3 import common.http.ParameterConverter;
4 import common.http.error.JSONError;
5 import common.http.interceptor.InterceptableServlet;
6 import usecase.auth.AuthorizationConstraints;
7
8 import javax.inject.Inject;
9 import javax.servlet.ServletException;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import java.io.IOException;
14
15 import static usecase.auth.AuthorizationConstraints.Types.REQUIRE_AUTHENTICATION;
16
17
18
19
20 @WebServlet("/vote")
21 @AuthorizationConstraints(REQUIRE_AUTHENTICATION)
22 class VoteServlet extends InterceptableServlet {
23 @Inject private VoteService service;
24
25 @Override
26 @JSONError
27 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
28 ParameterConverter converter = new ParameterConverter(request);
29 int id = converter.getIntParameter("id").orElse(0);
30 String vote = request.getParameter("vote");
31 String type = request.getParameter("type");
32
33 if("post".equalsIgnoreCase(type)){
34 if("upvote".equalsIgnoreCase(vote))
35 service.upvotePost(id);
36 else if("downvote".equalsIgnoreCase(vote))
37 service.downvotePost(id);
38 else
39 throw new IllegalArgumentException();
40 }else if("comment".equalsIgnoreCase(type)){
41 if("upvote".equalsIgnoreCase(vote))
42 service.upvoteComment(id);
43 else if("downvote".equalsIgnoreCase(vote))
44 service.downvoteComment(id);
45 else
46 throw new IllegalArgumentException();
47 }else{
48 throw new IllegalArgumentException();
49 }
50 }
51
52 @Override
53 @JSONError
54 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
55 doGet(request,response);
56 }
57 }