/** * Delete multiple messages * * @param account * @param requestJSONContent JSON array of message UUIDs e.g. [uuid1, uuid2, ...] * @return */ @DELETE @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response deleteMessages( @PathParam("user") final String user, @PathParam("domain") final String domain, final String requestJSONContent) { Mailbox mailbox = new Mailbox(user, domain); List<UUID> messageIds = null; try { messageIds = JSONUtils.toUUIDList(requestJSONContent); } catch (IllegalStateException jpe) { logger.info("Malformed JSON request: {}", jpe.getMessage()); throw new BadRequestException("Malformed JSON request"); } if (messageIds == null || messageIds.isEmpty()) throw new BadRequestException("Malformed JSON request"); try { // delete message and ignore other parameters messageDAO.delete(mailbox, messageIds); } catch (Exception e) { logger.error("Message deletion failed: ", e); throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } return Response.noContent().build(); }
/** * Modify multiple messages' labels and markers * * @param account * @param addLabels * @param removeLabels * @param addMarkers * @param removeMarkers * @param requestJSONContent JSON array of message UUIDs e.g. [uuid1, uuid2, ...] * @return */ @PUT @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response modifyMessages( @PathParam("user") final String user, @PathParam("domain") final String domain, @QueryParam("addlabel") final Set<Integer> addLabels, @QueryParam("removelabel") final Set<Integer> removeLabels, @QueryParam("addmarker") final Set<Marker> addMarkers, @QueryParam("removemarker") final Set<Marker> removeMarkers, final String requestJSONContent) { Mailbox mailbox = new Mailbox(user, domain); List<UUID> messageIds = null; try { messageIds = JSONUtils.toUUIDList(requestJSONContent); } catch (IllegalStateException jpe) { logger.info("Malformed JSON request: {}", jpe.getMessage()); throw new BadRequestException("Malformed JSON request"); } if (messageIds == null || messageIds.isEmpty()) throw new BadRequestException("Malformed JSON request"); try { // TODO: make batch request // add labels to message messageDAO.addLabel(mailbox, addLabels, messageIds); // remove label from message messageDAO.removeLabel(mailbox, removeLabels, messageIds); // add marker messageDAO.addMarker(mailbox, addMarkers, messageIds); // remove marker messageDAO.removeMarker(mailbox, removeMarkers, messageIds); } catch (IllegalLabelException ile) { throw new BadRequestException(ile.getMessage()); } catch (Exception e) { logger.error("Message modifications failed: ", e); throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } return Response.noContent().build(); }