public Response downloadImage(String slug, String extension, ServletContext servletContext, Optional<ImageOptions> imageOptions) { return this.downloadImage(null, slug, extension, servletContext, imageOptions); }
public Response downloadFile(String slug, String extension, ServletContext servletContext) { return this.downloadFile(null, slug, extension, servletContext); }
@GET @Path("thumbnails/{slug}_{x: \\d+}_{y: \\d+}_{width: \\d+}_{height: \\d+}.{ext}") public Response downloadThumbnail(@PathParam("slug") String slug, @PathParam("ext") String extension, @PathParam("x") Integer x, @PathParam("y") Integer y, @PathParam("width") Integer width, @PathParam("height") Integer height, @Context ServletContext servletContext, @Context Optional<ImageOptions> imageOptions) { return super.downloadThumbnail(slug, extension, x, y, width, height, servletContext, imageOptions); }
private Attachment addAttachment(Attachment attachment, int recursionLevel) { if (recursionLevel > 50) { // Defensive stack overflow prevention, even though this should not happen throw new WebApplicationException( Response.serverError().entity("Failed to create attachment slug").build()); } try { try { return this.attachmentStore.get().create(attachment); } catch (InvalidEntityException e) { throw new WebApplicationException(Response.status(Response.Status.BAD_REQUEST) .entity("Invalid attachment\n") .type(MediaType.TEXT_PLAIN_TYPE).build()); } } catch (EntityAlreadyExistsException e) { attachment.setSlug(attachment.getSlug() + RandomStringUtils.randomAlphanumeric(3)); return this.addAttachment(attachment, recursionLevel + 1); } } }
@POST @Consumes(MediaType.MULTIPART_FORM_DATA) public Response addAttachment(@FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("title") String title, @FormDataParam("description") String description) { Attachment created = this.addAttachment(uploadedInputStream, fileDetail.getFileName(), title, description, Optional.<UUID>absent()); try { return Response.created(new URI(created.getSlug())).build(); } catch (URISyntaxException e) { logger.error("Failed to created attachment URI", e); return Response.serverError().build(); } } }
@GET @Path("{slug}.{ext}") public Response downloadImage(@PathParam("slug") String slug, @PathParam("ext") String extension, @Context ServletContext servletContext, @Context Optional<ImageOptions> imageOptions) { return super.downloadImage(slug, extension, servletContext, imageOptions); } }
public Response downloadThumbnail(String tenantSlug, String slug, String extension, Integer x, Integer y, Integer width, Integer height, ServletContext servletContext, Optional<ImageOptions> imageOptions) { if (!IMAGE_EXTENSIONS.contains(extension)) { // Refuse to treat a request with image options for a non-image attachment return Response.status(Response.Status.BAD_REQUEST).entity("Not an image").build(); } String fileName = slug + "." + extension; Attachment file; if (tenantSlug == null) { file = this.attachmentStore.get().findBySlugAndExtension(slug, extension); } else { file = this.attachmentStore.get().findByTenantAndSlugAndExtension(tenantSlug, slug, extension); } if (file == null) { return Response.status(Response.Status.NOT_FOUND).build(); } try { Rectangle boundaries = new Rectangle(x, y, width, height); if (imageOptions.isPresent()) { Optional<Dimension> newDimension = imageService.newDimension(boundaries, imageOptions.get().getWidth(), imageOptions.get().getHeight());
return this.downloadFile(tenantSlug, slug, extension, servletContext);
return this.addAttachment(attachment, 0);
@GET @Path("{slug}/file/{slug}.{ext}") public Response downloadImage(@PathParam("slug") String slug, @PathParam("ext") String extension, @Context ServletContext servletContext, @Context Optional<ImageOptions> imageOptions) { return super.downloadImage(slug, extension, servletContext, imageOptions); } }