List of usage examples for io.vertx.core.eventbus Message body
@CacheReturn T body();
From source file:org.entcore.directory.controllers.ClassController.java
License:Open Source License
private void initPostCreate(final String classId, final JsonArray userIds, final boolean welcomeMessage, final HttpServerRequest request) { ApplicationUtils.sendModifiedUserGroup(eb, userIds, handlerToAsyncHandler(new Handler<Message<JsonObject>>() { @Override/*from w w w .ja va2 s. co m*/ public void handle(Message<JsonObject> message) { schoolService.getByClassId(classId, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> s) { if (s.isRight()) { JsonObject j = new JsonObject().put("action", "setDefaultCommunicationRules") .put("schoolId", s.right().getValue().getString("id")); eb.send("wse.communication", j, handlerToAsyncHandler(new Handler<Message<JsonObject>>() { public void handle(Message<JsonObject> event) { if ("error".equals(event.body().getString("status", ""))) { log.error( "[initPostCreate] Set communication rules failed."); } else if (welcomeMessage) { JsonObject params = new JsonObject(); conversationNotification.notify(request, "", userIds, null, "welcome.subject", "email/welcome.html", params, new Handler<Either<String, JsonObject>>() { public void handle( Either<String, JsonObject> r) { if (r.isLeft()) { log.error(r.left().getValue()); } } }); } } })); } } }); } })); }
From source file:org.entcore.directory.controllers.DirectoryController.java
License:Open Source License
@Post("/transition") @SecuredAction("directory.transition") @IgnoreCsrf/*w w w. jav a 2 s.c o m*/ public void launchTransition(final HttpServerRequest request) { JsonObject t = new JsonObject().put("action", "transition"); String structureId = request.params().get("structureExternalId"); if (structureId != null) { t.put("structureExternalId", structureId); } eb.send("entcore.feeder", t, new DeliveryOptions().setSendTimeout(getOrElse(config.getLong("transitionTimeout"), 300000l)), handlerToAsyncHandler(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { renderJson(request, event.body()); } })); }
From source file:org.entcore.directory.controllers.DirectoryController.java
License:Open Source License
@Post("/duplicates/mark") @SecuredAction("directory.duplicates.mark") @IgnoreCsrf//from w w w .j a v a 2s . c om public void markDuplicates(final HttpServerRequest request) { eb.send("entcore.feeder", new JsonObject().put("action", "mark-duplicates"), new DeliveryOptions().setSendTimeout(getOrElse(config.getLong("markDuplicatesTimeout"), 300000l)), handlerToAsyncHandler(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { renderJson(request, event.body()); } })); }
From source file:org.entcore.directory.controllers.DirectoryController.java
License:Open Source License
@Get("/api/export") @SecuredAction(value = "", type = ActionType.RESOURCE) public void export(final HttpServerRequest request) { String neoRequest = ""; Map<String, Object> params = new HashMap<>(); if (request.params().get("id").equals("all")) { neoRequest = "MATCH (m:User)-[:IN]->g " + "WHERE NOT(m.activationCode IS NULL) " + "OPTIONAL MATCH g-[:DEPENDS*0..1]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) " + "RETURN distinct m.lastName as lastName, m.firstName as firstName, " + "m.login as login, m.activationCode as activationCode, " + "p.name as type " + "ORDER BY type, login "; } else if (request.params().get("id") != null) { neoRequest = "MATCH (m:User)-[:IN]->g-[:DEPENDS]->n " + "WHERE (n:Structure OR n:Class) AND n.id = {id} AND NOT(m.activationCode IS NULL) " + "OPTIONAL MATCH g-[:DEPENDS*0..1]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) " + "RETURN distinct m.lastName as lastName, m.firstName as firstName, " + "m.login as login, m.activationCode as activationCode, " + "p.name as type " + "ORDER BY type, login "; params.put("id", request.params().get("id")); } else {/*from ww w . ja v a 2 s . co m*/ notFound(request); } neo.send(neoRequest, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> res) { if ("ok".equals(res.body().getString("status"))) { JsonArray r = Neo.resultToJsonArray(res.body().getJsonObject("result")); processTemplate(request, "text/export.txt", new JsonObject().put("list", r), new Handler<String>() { @Override public void handle(String export) { if (export != null) { request.response().putHeader("Content-Type", "application/csv"); request.response().putHeader("Content-Disposition", "attachment; filename=activation_de_comptes.csv"); request.response().end(export); } else { renderError(request); } } }); } else { renderError(request); } } }); }
From source file:org.entcore.directory.controllers.DirectoryController.java
License:Open Source License
@BusAddress("directory") public void directoryHandler(final Message<JsonObject> message) { String action = message.body().getString("action", ""); String userId = message.body().getString("userId"); switch (action) { case "usersInProfilGroup": boolean itSelf2 = message.body().getBoolean("itself", false); String excludeUserId = message.body().getString("excludeUserId"); userService.list(userId, itSelf2, excludeUserId, responseHandler(message)); break;//www . j a va 2s. c om case "getUser": userService.get(userId, false, BusResponseHandler.busResponseHandler(message)); break; case "getUserInfos": userService.getInfos(userId, BusResponseHandler.busResponseHandler(message)); break; case "list-users": JsonArray userIds = message.body().getJsonArray("userIds", new fr.wseduc.webutils.collections.JsonArray()); JsonArray groupIds = message.body().getJsonArray("groupIds", new fr.wseduc.webutils.collections.JsonArray()); boolean itSelf = message.body().getBoolean("itself", false); String excludeId = message.body().getString("excludeUserId"); userService.list(groupIds, userIds, itSelf, excludeId, busArrayHandler(message)); break; case "list-structures": schoolService.list(message.body().getJsonArray("fields"), busArrayHandler(message)); break; case "list-groups": String structureId = message.body().getString("structureId"); String type = message.body().getString("type"); boolean subGroups = message.body().getBoolean("subGroups", false); groupService.list(structureId, type, subGroups, busArrayHandler(message)); break; case "list-adml": String sId = message.body().getString("structureId"); userService.listAdml(sId, responseHandler(message)); break; default: message.reply(new JsonObject().put("status", "error").put("message", "Invalid action.")); } }
From source file:org.entcore.directory.controllers.StructureController.java
License:Open Source License
private void massMailTypePdf(final HttpServerRequest request, final String templatePath, final String baseUrl, final String filename, final JsonArray users) { final JsonObject templateProps = new JsonObject().put("users", users); vertx.fileSystem().readFile(templatePath + "massmail.pdf.xhtml", new Handler<AsyncResult<Buffer>>() { @Override//from ww w. jav a 2s.com public void handle(AsyncResult<Buffer> result) { if (!result.succeeded()) { badRequest(request); return; } StringReader reader = new StringReader(result.result().toString("UTF-8")); processTemplate(request, templateProps, "massmail.pdf.xhtml", reader, new Handler<Writer>() { public void handle(Writer writer) { String processedTemplate = ((StringWriter) writer).getBuffer().toString(); if (processedTemplate == null) { badRequest(request); return; } JsonObject actionObject = new JsonObject(); actionObject.put("content", processedTemplate.getBytes()).put("baseUrl", baseUrl); eb.send(node + "entcore.pdf.generator", actionObject, new DeliveryOptions().setSendTimeout(600000l), handlerToAsyncHandler(new Handler<Message<JsonObject>>() { public void handle(Message<JsonObject> reply) { JsonObject pdfResponse = reply.body(); if (!"ok".equals(pdfResponse.getString("status"))) { badRequest(request, pdfResponse.getString("message")); return; } byte[] pdf = pdfResponse.getBinary("content"); request.response().putHeader("Content-Type", "application/pdf"); request.response().putHeader("Content-Disposition", "attachment; filename=" + filename + ".pdf"); request.response().end(Buffer.buffer(pdf)); } })); } }); } }); }
From source file:org.entcore.directory.controllers.StructureController.java
License:Open Source License
private void massMailTypeMail(final HttpServerRequest request, final String templatePath, final JsonArray users) { vertx.fileSystem().readFile(templatePath + "massmail.mail.txt", new Handler<AsyncResult<Buffer>>() { @Override//from w w w . ja va 2 s . co m public void handle(AsyncResult<Buffer> result) { if (!result.succeeded()) { badRequest(request); return; } StringReader reader = new StringReader(result.result().toString("UTF-8")); final JsonArray mailHeaders = new JsonArray().add( new JsonObject().put("name", "Content-Type").put("value", "text/html; charset=\"UTF-8\"")); for (Object userObj : users) { final JsonObject user = (JsonObject) userObj; final String userMail = user.getString("email"); if (userMail == null || userMail.trim().isEmpty()) { continue; } final String mailTitle = !user.containsKey("activationCode") || user.getString("activationCode") == null || user.getString("activationCode").trim().isEmpty() ? "directory.massmail.mail.subject.activated" : "directory.massmail.mail.subject.not.activated"; try { reader.reset(); } catch (IOException exc) { log.error("[MassMail] Error on StringReader (" + exc.toString() + ")"); } processTemplate(request, user, "massmail.mail.txt", reader, new Handler<Writer>() { public void handle(Writer writer) { String processedTemplate = ((StringWriter) writer).getBuffer().toString(); if (processedTemplate == null) { badRequest(request); return; } notifHelper.sendEmail(request, userMail, null, null, mailTitle, processedTemplate, null, true, mailHeaders, handlerToAsyncHandler(new Handler<Message<JsonObject>>() { public void handle(Message<JsonObject> event) { if ("error".equals(event.body().getString("status"))) { log.error("[MassMail] Error while sending mail (" + event.body().getString("message", "") + ")"); } } })); } }); } ok(request); } }); }
From source file:org.entcore.directory.controllers.TimetableController.java
License:Open Source License
@BusAddress("timetable") @SuppressWarnings("unchecked") public void getTimetable(final Message<JsonObject> message) { final String action = message.body().getString("action"); if (action == null) { log.warn("[@BusAddress](timetable) Invalid action."); message.reply(new JsonObject().put("status", "error").put("message", "Invalid action.")); return;//from ww w . j a va 2 s .c om } final String structureId = message.body().getString("structureId"); switch (action) { case "get.course": final String teacherId = message.body().getString("teacherId"); final List<String> groupNames = message.body().getJsonArray("group", new JsonArray()).getList(); final String beginDate = message.body().getString("begin"); final String endDate = message.body().getString("end"); if (beginDate != null && endDate != null && beginDate.matches("\\d{4}-\\d{2}-\\d{2}") && endDate.matches("\\d{4}-\\d{2}-\\d{2}")) { timetableService.listCoursesBetweenTwoDates(structureId, teacherId, groupNames, beginDate, endDate, getBusResultHandler(message)); } else { message.reply(new JsonObject().put("status", "error").put("message", "timetable.invalid.dates")); } break; case "get.subjects": final List<String> teachers = message.body() .getJsonArray("teacherIds", new fr.wseduc.webutils.collections.JsonArray()).getList(); final String externalGroupId = message.body().getString("externalGroupId"); final boolean classes = message.body().getBoolean("classes", false); final boolean groups = message.body().getBoolean("groups", false); if (StringUtils.isEmpty(externalGroupId)) { timetableService.listSubjects(structureId, teachers, classes, groups, getBusResultHandler(message)); } else { timetableService.listSubjectsByGroup(structureId, externalGroupId, getBusResultHandler(message)); } break; default: message.reply(new JsonObject().put("status", "error").put("message", "Invalid action.")); break; } }
From source file:org.entcore.directory.controllers.UserBookController.java
License:Open Source License
@Get("/api/person") @SecuredAction(value = "userbook.authent", type = ActionType.AUTHENTICATED) public void person(final HttpServerRequest request) { UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() { @Override// w w w . j a v a2 s . c o m public void handle(final UserInfos user) { if (user != null) { String hobbyVisibility; String personnalInfos; Map<String, Object> params = new HashMap<>(); if (request.params().get("id") == null) { Object person = user.getAttribute(PERSON_ATTRIBUTE); if (person != null) { renderJson(request, new JsonObject(person.toString())); return; } params.put("userId", user.getUserId()); hobbyVisibility = "PUBLIC|PRIVE"; personnalInfos = "OPTIONAL MATCH u-[r0:SHOW_EMAIL]->() " + "OPTIONAL MATCH u-[r1:SHOW_BIRTHDATE]->() " + "OPTIONAL MATCH u-[r2:SHOW_PHONE]->() " + "OPTIONAL MATCH u-[r3:SHOW_MAIL]->() " + "OPTIONAL MATCH u-[r4:SHOW_HEALTH]->u " + "OPTIONAL MATCH u-[r5:SHOW_MOBILE]->() " + "WITH DISTINCT h, s, c, n, v, u, n2, p, n.address as address, " + "n.email as email, u.health as health, " + "n.homePhone as tel, n.birthDate as birthdate, n.mobile as mobile, " + "COLLECT(distinct [type(r0),type(r1),type(r2),type(r3),type(r4),type(r5)]) as r "; } else { params.put("userId", request.params().get("id")); hobbyVisibility = "PUBLIC"; personnalInfos = "OPTIONAL MATCH u-[:SHOW_EMAIL]->e " + "OPTIONAL MATCH u-[:SHOW_MAIL]->a " + "OPTIONAL MATCH u-[:SHOW_PHONE]->ph " + "OPTIONAL MATCH u-[:SHOW_MOBILE]->mo " + "OPTIONAL MATCH u-[:SHOW_BIRTHDATE]->b " + "OPTIONAL MATCH u-[:SHOW_HEALTH]->st " + "WITH h, s, c, n, v, u, n2, p, a.address as address, " + "e.email as email, st.health as health, " + "ph.homePhone as tel, b.birthDate as birthdate, mo.mobile as mobile, " + "COLLECT([]) as r "; } String query = "MATCH (n:User) " + "WHERE n.id = {userId} " + "OPTIONAL MATCH n-[:IN]->(:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) " + "OPTIONAL MATCH n-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s:Structure) " + "OPTIONAL MATCH n-[:IN]->(:ProfileGroup)-[:DEPENDS]->(c:Class)-[:BELONGS]->(s) " + "OPTIONAL MATCH (n)-[:USERBOOK]->(u) " + "OPTIONAL MATCH (u)-[v:" + hobbyVisibility + "]->(h1) " + "OPTIONAL MATCH (n)-[:RELATED]-(n2) " + "WITH DISTINCT h1 as h, s, collect(distinct c.name) as c, n, v, u, n2, p " + personnalInfos + "WITH COLLECT(DISTINCT {name: s.name, id: s.id, classes: c}) as schools, " + "n, u, n2, address, email, health, tel, mobile, birthdate, r, COLLECT(p.name) as type, " + "COLLECT(DISTINCT {visibility: type(v), category: h.category, values: h.values}) as hobbies " + "RETURN DISTINCT " + "n.id as id," + "n.login as login, " + "n.displayName as displayName," + "type," + "address," + "email, " + "tel, " + "mobile, " + "birthdate, " + "HEAD(r) as visibleInfos, " + "schools, " + "n2.displayName as relatedName, " + "n2.id as relatedId," + "n2.type as relatedType," + "u.userid as userId," + "u.motto as motto," + "COALESCE(u.picture, {defaultAvatar}) as photo," + "COALESCE(u.mood, {defaultMood}) as mood," + "health," + "hobbies"; params.put("defaultAvatar", userBookData.getString("default-avatar")); params.put("defaultMood", userBookData.getString("default-mood")); neo.send(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> message) { JsonObject r = message.body(); if (request.params().get("id") == null) { UserUtils.addSessionAttribute(eb, user.getUserId(), PERSON_ATTRIBUTE, r.encode(), null); } renderJson(request, r); } }); } else { unauthorized(request); } } }); }
From source file:org.entcore.directory.controllers.UserBookController.java
License:Open Source License
@Get("/api/edit-userbook-info") @SecuredAction(value = "userbook.authent", type = ActionType.AUTHENTICATED) public void editUserBookInfo(final HttpServerRequest request) { UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() { @Override//from w w w. j ava 2 s .co m public void handle(final UserInfos user) { if (user != null) { String prop = request.params().get("prop"); if (prop != null && (prop.startsWith("theme") || "userPreferencesBirthdayClass".equals(prop))) { String attr = prop.replaceAll("\\W+", ""); String neoRequest = "MATCH (n:User)-[:USERBOOK]->(m:UserBook)" + "WHERE n.id = {id} SET m." + attr + "={value}"; Map<String, Object> params = new HashMap<>(); params.put("id", user.getUserId()); params.put("value", request.params().get("value")); neo.send(neoRequest, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> res) { renderJson(request, res.body()); } }); UserUtils.removeSessionAttribute(eb, user.getUserId(), THEME_ATTRIBUTE + getHost(request), null); } else { badRequest(request); } } else { unauthorized(request); } } }); }