package org.oregami.resources; import com.google.inject.Inject; import io.dropwizard.auth.Auth; import org.oregami.data.WebsiteDao; import org.oregami.entities.Website; import org.oregami.entities.user.User; import org.oregami.util.WebsiteHelper; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import java.util.ArrayList; import java.util.List; import java.util.Map; @Path("/website") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class WebsiteResource { @Inject private WebsiteDao websiteDao; @POST public Response createScreenshot(Website postwebsite) { WebsiteHelper websiteHelper = WebsiteHelper.instance(); try { String url = postwebsite.getUrl(); String size = postwebsite.getCreateSize(); Map<String, String> result = websiteHelper.createWebsite(url, size); System.out.println("result: " + result); Website website = new Website(); byte[] image = WebsiteHelper.instance().readFile(result.get("filename")); website.setImage(image); website.setThumbnail(WebsiteHelper.instance().resize(image, 200, null)); website.setUrl(url); String id = websiteDao.save(website); result.put("id", id.toString()); return Response.ok(result).build(); } catch (Exception e) { e.printStackTrace(); return Response.status(Status.NOT_ACCEPTABLE).type("text/plain").entity(e.getMessage()).build(); } } @GET @Path("/raw/{id}") @Produces({ "image/png" }) public Response getRawWebsite(@Auth User user, @PathParam("id") String id) { Website w = websiteDao.findOne(id); if (w==null) { return Response.status(Response.Status.NOT_FOUND).build(); } // if (!w.isApproved()) { // return Response.status(Response.Status.PRECONDITION_FAILED).build(); // } return Response.ok(w.getImage()).build(); } @GET @Path("/rawthumb/{id}") @Produces({ "image/png" }) public Response getRawWebsiteThumbnail(@PathParam("id") String id) { Website w = websiteDao.findOne(id); if (w==null) { return Response.status(Response.Status.NOT_FOUND).build(); } // if (!w.isApproved()) { // return Response.status(Response.Status.PRECONDITION_FAILED).build(); // } return Response.ok(w.getThumbnail()).build(); } @GET public Response getList() { List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); List<Website> list = websiteDao.findAll(); for (Website website : list) { java.util.HashMap<String, Object> map = new java.util.HashMap<String, Object>(); map.put("id", website.getId()); map.put("url", website.getUrl()); map.put("createTime", website.getCreateTime()); map.put("href_big", "/website/raw/" + website.getId()); map.put("href_thumb", "/website/rawthumb/" + website.getId()); result.add(map); } return Response.ok(result).build(); } }