View Javadoc
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   * Servlet che permette di assegnare un voto ad un contenuto.
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  }