1 package usecase.post;
2
3 import common.http.ParameterConverter;
4 import common.http.error.ForwardOnError;
5 import common.http.interceptor.InterceptableServlet;
6 import usecase.auth.AuthorizationConstraints;
7 import usecase.section.SectionService;
8
9 import javax.inject.Inject;
10 import javax.servlet.ServletException;
11 import javax.servlet.annotation.MultipartConfig;
12 import javax.servlet.annotation.WebServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 import javax.servlet.http.Part;
16 import java.io.BufferedInputStream;
17 import java.io.IOException;
18
19 import static usecase.auth.AuthorizationConstraints.Types.REQUIRE_AUTHENTICATION;
20
21
22
23
24 @WebServlet("/newpost")
25 @MultipartConfig
26 @AuthorizationConstraints(REQUIRE_AUTHENTICATION)
27 class NewPostServlet extends InterceptableServlet {
28 @Inject private PostService service;
29 @Inject private SectionService sectionService;
30
31 private static final String NEW_POST_PAGE = "/WEB-INF/views/section/create-post.jsp";
32
33 @Override
34 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35 request.getRequestDispatcher(NEW_POST_PAGE).forward(request, response);
36 }
37
38 @Override
39 @ForwardOnError("/WEB-INF/views/section/create-post.jsp")
40 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
41 ParameterConverter converter = new ParameterConverter(request);
42 int sectionId = converter.getIntParameter("section").orElse(0);
43 String sectionName = sectionService.showSection(sectionId).getName();
44
45 String title = request.getParameter("title");
46 String type = request.getParameter("type");
47 String content = request.getParameter("content");
48 Part picture = request.getPart("picture");
49
50 int newPostId;
51 if(type.equalsIgnoreCase("text")){
52 newPostId = service.newPost(title,content,sectionName);
53 }else{
54 BufferedInputStream stream = picture.getSize() > 0 ? new BufferedInputStream(picture.getInputStream()) : null;
55 newPostId = service.newPost(title,stream, sectionName);
56 }
57 response.sendRedirect(getServletContext().getContextPath() + "/post/" + newPostId);
58 }
59 }