Example usage for io.vertx.core.json JsonObject getString

List of usage examples for io.vertx.core.json JsonObject getString

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getString.

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

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);
                    }
                }
            });
        }
    });

}