List of usage examples for io.vertx.core.json JsonObject getString
public String getString(String key)
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void timelineNotification(HttpServerRequest request, JsonObject sentMessage, UserInfos user) { log.debug(sentMessage.encode());/*from w w w .j av a2 s .c om*/ JsonArray r = sentMessage.getJsonArray("sentIds"); String id = sentMessage.getString("id"); String subject = sentMessage.getString("subject", "<span translate key=\"timeline.no.subject\"></span>"); sentMessage.remove("sentIds"); sentMessage.remove("id"); sentMessage.remove("subject"); if (r == null || id == null || user == null) { return; } final JsonObject params = new JsonObject() .put("uri", "/userbook/annuaire#" + user.getUserId() + "#" + user.getType()) .put("username", user.getUsername()).put("subject", subject) .put("messageUri", pathPrefix + "/conversation#/read-mail/" + id); params.put("resourceUri", params.getString("messageUri")); params.put("pushNotif", new JsonObject().put("title", "push.notif.new.message").put("body", user.getUsername() + " : " + sentMessage.getString("body"))); List<String> recipients = new ArrayList<>(); String idTmp; for (Object o : r) { if (!(o instanceof String)) continue; idTmp = (String) o; if (!user.getUserId().equals(idTmp)) recipients.add(idTmp); } notification.notifyTimeline(request, "messagerie.send-message", user, recipients, id, params); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Get("threads/list") @SecuredAction(value = "conversation.threads.list") public void listThreads(final HttpServerRequest request) { final String p = Utils.getOrElse(request.params().get("page"), "0", false); getUserInfos(eb, request, new Handler<UserInfos>() { @Override/*from w w w .j av a 2 s .c om*/ public void handle(final UserInfos user) { if (user != null) { int page; try { page = Integer.parseInt(p); } catch (NumberFormatException e) { page = 0; } conversationService.listThreads(user, page, new Handler<Either<String, JsonArray>>() { @Override public void handle(Either<String, JsonArray> r) { if (r.isRight()) { HashMap<String, JsonArray> test = new HashMap<String, JsonArray>(); JsonObject tmp; String threadId; JsonArray result = new fr.wseduc.webutils.collections.JsonArray(); for (Object o : r.right().getValue()) { if (!(o instanceof JsonObject)) { continue; } tmp = (JsonObject) o; translateGroupsNames(tmp, request); threadId = tmp.getString("thread_id"); if (threadId != null) { if (test.containsKey(threadId)) test.get(threadId).add(tmp); else test.put(threadId, new fr.wseduc.webutils.collections.JsonArray().add(tmp)); } else { result.add(new fr.wseduc.webutils.collections.JsonArray().add(tmp)); } } for (JsonArray array : test.values()) { result.add(array); } renderJson(request, result); } else { JsonObject error = new JsonObject().put("error", r.left().getValue()); renderJson(request, error, 400); } } }); } else { unauthorized(request); } } }); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Post("folder") @SecuredAction(value = "conversation.folder.create", type = ActionType.AUTHENTICATED) public void createFolder(final HttpServerRequest request) { Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() { public void handle(final UserInfos user) { if (user == null) { unauthorized(request);/*w w w . ja v a2 s.co m*/ return; } RequestUtils.bodyToJson(request, pathPrefix + "createFolder", new Handler<JsonObject>() { public void handle(JsonObject body) { final String name = body.getString("name"); final String parentId = body.getString("parentId", null); if (name == null || name.trim().length() == 0) { badRequest(request); return; } conversationService.createFolder(name, parentId, user, defaultResponseHandler(request, 201)); } }); } }; UserUtils.getUserInfos(eb, request, userInfosHandler); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Post("message/:id/attachment") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MessageUserFilter.class) public void postAttachment(final HttpServerRequest request) { final String messageId = request.params().get("id"); Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() { public void handle(final UserInfos user) { if (user == null) { unauthorized(request);/*from w w w . j av a2s . co m*/ return; } request.pause(); getUserQuota(user.getUserId(), new Handler<JsonObject>() { public void handle(JsonObject j) { request.resume(); if (j == null || "error".equals(j.getString("status"))) { badRequest(request, j == null ? "" : j.getString("message")); return; } long quota = j.getLong("quota", 0l); long storage = j.getLong("storage", 0l); ConversationController.this.storage.writeUploadFile(request, (quota - storage), new Handler<JsonObject>() { public void handle(final JsonObject uploaded) { if (!"ok".equals(uploaded.getString("status"))) { badRequest(request, uploaded.getString("message")); return; } updateUserQuota(user.getUserId(), uploaded .getJsonObject("metadata", new JsonObject()).getLong("size", 0L), new Handler<Void>() { @Override public void handle(Void v) { conversationService.addAttachment(messageId, user, uploaded, defaultResponseHandler(request)); } }); } }); } }); } }; UserUtils.getUserInfos(eb, request, userInfosHandler); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Get("message/:id/attachment/:attachmentId") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MessageUserFilter.class) public void getAttachment(final HttpServerRequest request) { final String messageId = request.params().get("id"); final String attachmentId = request.params().get("attachmentId"); Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() { public void handle(final UserInfos user) { if (user == null) { unauthorized(request);/* w w w . j av a2s . co m*/ return; } conversationService.getAttachment(messageId, attachmentId, user, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { badRequest(request, event.left().getValue()); return; } if (event.isRight() && event.right().getValue() == null) { badRequest(request, event.right().getValue().toString()); return; } JsonObject neoResult = event.right().getValue(); String fileId = neoResult.getString("id"); if (fileId == null || fileId.trim().length() == 0) { notFound(request, "invalid.file.id"); return; } JsonObject metadata = new JsonObject() .put("filename", neoResult.getString("filename")) .put("content-type", neoResult.getString("contentType")); storage.sendFile(fileId, neoResult.getString("filename"), request, false, metadata); } }); } }; UserUtils.getUserInfos(eb, request, userInfosHandler); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Get("message/:id/allAttachments") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MessageUserFilter.class) public void getAllAttachment(final HttpServerRequest request) { final String messageId = request.params().get("id"); Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() { public void handle(final UserInfos user) { if (user == null) { unauthorized(request);/*from w w w . ja v a2 s. c o m*/ return; } conversationService.getAllAttachments(messageId, user, new Handler<Either<String, JsonArray>>() { @Override public void handle(Either<String, JsonArray> event) { if (event.isRight()) { if (event.right().getValue() == null || event.right().getValue().size() < 1) { badRequest(request); return; } if (event.right().getValue().size() < 2) { JsonObject attachment = event.right().getValue().getJsonObject(0); JsonObject metadata = new JsonObject() .put("filename", attachment.getString("filename")) .put("content-type", attachment.getString("contentType")); storage.sendFile(attachment.getString("id"), attachment.getString("filename"), request, false, metadata); } else { zipAllAttachments(request, event.right().getValue()); } } else { badRequest(request, event.left().getValue()); } } }); } }; UserUtils.getUserInfos(eb, request, userInfosHandler); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void zipAllAttachments(final HttpServerRequest request, JsonArray files) { JsonObject tmp; final FileSystem fs = vertx.fileSystem(); final List<String> fileIds = new ArrayList<>(); final JsonObject aliasFileName = new JsonObject(); final String zipDownloadName = I18n.getInstance().translate("attachments", I18n.DEFAULT_DOMAIN, I18n.acceptLanguage(request)) + ".zip"; final String zipDirectory = exportPath + File.separator + UUID.randomUUID().toString(); for (Object file : files) { tmp = (JsonObject) file;/*w ww .j a v a2 s .c o m*/ fileIds.add(tmp.getString("id")); aliasFileName.put(tmp.getString("id"), StringUtils.stripAccents(tmp.getString("filename"))); } fs.mkdirs(zipDirectory, new Handler<AsyncResult<Void>>() { private void delete(final String path) { fs.deleteRecursive(path, true, new Handler<AsyncResult<Void>>() { @Override public void handle(AsyncResult<Void> event) { if (event.failed()) log.error("[Conversation] Error deleting : " + path, event.cause()); } }); } @Override public void handle(AsyncResult<Void> event) { if (event.succeeded()) { final String zipfile = zipDirectory + ".zip"; storage.writeToFileSystem(fileIds.toArray(new String[0]), zipDirectory, aliasFileName, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if (!"ok".equals(event.getString("status"))) { log.error("[Conversation] Can't write to zip directory : " + event.getString("message")); delete(zipDirectory); badRequest(request); } else { Zip.getInstance().zipFolder(zipDirectory, zipfile, true, Deflater.NO_COMPRESSION, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if (!"ok".equals(event.body().getString("status"))) { log.error("[Conversation] Zip folder " + zipDirectory + " error : " + event.body().getString("message")); delete(zipDirectory); badRequest(request); } else { final HttpServerResponse resp = request.response(); resp.putHeader("Content-Disposition", "attachment; filename=\"" + zipDownloadName + "\""); resp.putHeader("Content-Type", "application/zip; name=\"\" + zipDownloadName + \"\""); resp.sendFile(zipfile, new Handler<AsyncResult<Void>>() { public void handle( AsyncResult<Void> event) { if (event.failed()) log.error( "Error can't send the file: ", event.cause()); delete(zipfile); } }); } } }); } } }); } } }); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Delete("message/:id/attachment/:attachmentId") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MessageUserFilter.class) public void deleteAttachment(final HttpServerRequest request) { final String messageId = request.params().get("id"); final String attachmentId = request.params().get("attachmentId"); Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() { public void handle(final UserInfos user) { if (user == null) { unauthorized(request);//from w w w . j ava 2s.c o m return; } conversationService.removeAttachment(messageId, attachmentId, user, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { badRequest(request, event.left().getValue()); return; } if (event.isRight() && event.right().getValue() == null) { badRequest(request, event.right().getValue().toString()); return; } final JsonObject result = event.right().getValue(); boolean deletionCheck = result.getBoolean("deletionCheck", false); final String fileId = result.getString("fileId"); final long fileSize = result.getLong("fileSize"); updateUserQuota(user.getUserId(), -fileSize, new Handler<Void>() { public void handle(Void v) { renderJson(request, result); } }); if (deletionCheck) { storage.removeFile(fileId, new Handler<JsonObject>() { @Override public void handle(final JsonObject result) { if (!"ok".equals(result.getString("status"))) { log.error("[" + ConversationController.class.getSimpleName() + "] Error while tying to delete attachment file (_id: {" + fileId + "})"); } } }); } } }); } }; UserUtils.getUserInfos(eb, request, userInfosHandler); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Put("message/:id/forward/:forwardedId") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MessageUserFilter.class) public void forwardAttachments(final HttpServerRequest request) { final String messageId = request.params().get("id"); final String forwardedId = request.params().get("forwardedId"); //1 - get user infos Handler<UserInfos> userInfosHandler = new Handler<UserInfos>() { public void handle(final UserInfos user) { if (user == null) { unauthorized(request);/*from w w w.j a v a 2 s .co m*/ return; } //2 - get user quota getUserQuota(user.getUserId(), new Handler<JsonObject>() { public void handle(JsonObject j) { if (j == null || "error".equals(j.getString("status"))) { badRequest(request, j == null ? "" : j.getString("message")); return; } final long quotaLeft = j.getLong("quota", 0l) - j.getLong("storage", 0l); //3 - get forwarded message attachments conversationService.get(forwardedId, user, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { badRequest(request, event.left().getValue()); return; } if (event.isRight() && event.right().getValue() == null) { badRequest(request, event.right().getValue().toString()); return; } final JsonObject neoResult = event.right().getValue(); final JsonArray attachments = neoResult.getJsonArray("attachments"); long attachmentsSize = 0l; for (Object genericObj : attachments) { JsonObject attachment = (JsonObject) genericObj; attachmentsSize += attachment.getLong("size", 0l); } final long finalAttachmentsSize = attachmentsSize; // if total attachment size > quota left, return 403 if (attachmentsSize > quotaLeft) { forbidden(request, "forward.failed.quota"); return; } //4 - forward attachments, add relationships between the message and the already existing attachments conversationService.forwardAttachments(forwardedId, messageId, user, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { badRequest(request, event.left().getValue()); return; } //5 - update user quota updateUserQuota(user.getUserId(), finalAttachmentsSize, new Handler<Void>() { @Override public void handle(Void event) { ok(request); } }); } }); } }); } }); } }; UserUtils.getUserInfos(eb, request, userInfosHandler); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void send(final Message<JsonObject> message) { JsonObject m = message.body().getJsonObject("message"); if (m == null) { message.reply(new JsonObject().put("status", "error").put("message", "invalid.message")); }/* w w w . j a v a 2 s . c o m*/ final HttpServerRequest request = new JsonHttpServerRequest( message.body().getJsonObject("request", new JsonObject())); final UserInfos user = new UserInfos(); user.setUserId(message.body().getString("userId")); user.setUsername(message.body().getString("username")); if (!m.containsKey("from")) { m.put("from", user.getUserId()); } neoConversationService.addDisplayNames(m, null, new Handler<JsonObject>() { public void handle(final JsonObject m) { saveAndSend(null, m, user, null, null, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> event) { if (event.isRight()) { JsonObject result = event.right().getValue(); JsonObject timelineParams = new JsonObject().put("subject", result.getString("subject")) .put("id", result.getString("id")).put("sentIds", m.getJsonArray("allUsers", new fr.wseduc.webutils.collections.JsonArray())); timelineNotification(request, timelineParams, user); JsonObject s = new JsonObject().put("status", "ok").put("result", new fr.wseduc.webutils.collections.JsonArray().add(new JsonObject())); message.reply(s); } else { JsonObject error = new JsonObject().put("error", event.left().getValue()); message.reply(error); } } }); } }); }