1 package media;
2
3 import common.http.interceptor.InterceptableServlet;
4
5 import javax.inject.Inject;
6 import javax.servlet.ServletException;
7 import javax.servlet.annotation.WebServlet;
8 import javax.servlet.http.HttpServletMapping;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 import javax.servlet.http.MappingMatch;
12 import java.io.IOException;
13 import java.io.InputStream;
14 import java.net.URLConnection;
15
16 @WebServlet("/image/*")
17 public class ImageServlet extends InterceptableServlet {
18 @Inject ImageService imageService;
19
20 @Override
21 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
22 HttpServletMapping httpServletMapping = req.getHttpServletMapping();
23 if(httpServletMapping.getMappingMatch().equals(MappingMatch.PATH)){
24 String filename = httpServletMapping.getMatchValue();
25 try(InputStream stream = imageService.getImage(filename)){
26 if(stream == null){
27 resp.setStatus(404);
28 return;
29 }
30 String mime = URLConnection.guessContentTypeFromStream(stream);
31 resp.setContentType(mime);
32 stream.transferTo(resp.getOutputStream());
33 resp.getOutputStream().flush();
34 }
35 } else {
36 resp.setStatus(404);
37 }
38 }
39 }