List of usage examples for io.vertx.core.json JsonObject getJsonArray
public JsonArray getJsonArray(String key, JsonArray def)
From source file:org.entcore.directory.controllers.UserController.java
License:Open Source License
@Post("/user/delete") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(TeacherOfUser.class) public void deleteByPost(final HttpServerRequest request) { bodyToJson(request, new Handler<JsonObject>() { @Override//w ww . java 2s. c o m @SuppressWarnings("unchecked") public void handle(JsonObject event) { if (event != null) { userService.delete( event.getJsonArray("users", new fr.wseduc.webutils.collections.JsonArray()).getList(), defaultResponseHandler(request)); } else { badRequest(request, "invalid.json"); } } }); }
From source file:org.entcore.feeder.utils.Report.java
License:Open Source License
private JsonObject cloneAndFilterResults(Optional<String> prefixAcademy) { JsonObject results = this.result.copy(); if (prefixAcademy.isPresent()) { // filter each ignored object by externalId starting with academy name String prefix = prefixAcademy.get(); JsonObject ignored = results.getJsonObject("ignored"); Set<String> domains = ignored.fieldNames(); for (String domain : domains) { JsonArray filtered = ignored.getJsonArray(domain, new JsonArray()).stream().filter(ig -> { if (ig instanceof JsonObject && ((JsonObject) ig).containsKey("object")) { JsonObject object = ((JsonObject) ig).getJsonObject("object"); String externalId = object.getString("externalId"); return StringUtils.startsWithIgnoreCase(externalId, prefix); } else { // keep in list because it is not a concerned object return true; }/* w ww . ja va 2 s . c om*/ }).collect(JsonArray::new, JsonArray::add, JsonArray::addAll);// ignored.put(domain, filtered); } // userExternalIds FIltered JsonArray usersExternalIdsFiltered = results.getJsonArray("usersExternalIds", new JsonArray()).stream() .filter(value -> { return (value instanceof String && StringUtils.startsWithIgnoreCase((String) value, prefix)); }).collect(JsonArray::new, JsonArray::add, JsonArray::addAll);// results.put("usersExternalIds", usersExternalIdsFiltered); } return results; }
From source file:org.entcore.infra.controllers.EventStoreController.java
License:Open Source License
public EventStoreController(JsonObject eventConfig) { this.userBlackList = eventConfig.getJsonArray("user-blacklist", new fr.wseduc.webutils.collections.JsonArray()); }
From source file:org.entcore.portal.controllers.PortalController.java
License:Open Source License
@Get("/applications-list") @SecuredAction(value = "portal.auth", type = ActionType.AUTHENTICATED) public void applicationsList(final HttpServerRequest request) { UserUtils.getSession(eb, request, new Handler<JsonObject>() { @Override/*from ww w .j a v a 2s . co m*/ public void handle(JsonObject session) { JsonArray apps = session.getJsonArray("apps", new fr.wseduc.webutils.collections.JsonArray()); for (Object o : apps) { if (!(o instanceof JsonObject)) continue; JsonObject j = (JsonObject) o; String d = j.getString("displayName"); if (d == null || d.trim().isEmpty()) { d = j.getString("name"); } if (d != null) { j.put("displayName", d); } } JsonObject json = new JsonObject().put("apps", apps); renderJson(request, json); } }); }
From source file:org.entcore.registry.controllers.AppRegistryController.java
License:Open Source License
@Put("/role/:id") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(RoleFilter.class) public void updateRole(final HttpServerRequest request) { bodyToJson(request, new Handler<JsonObject>() { @Override//ww w .ja v a 2s . c o m public void handle(JsonObject body) { final String roleId = request.params().get("id"); if (roleId != null && !roleId.trim().isEmpty()) { final String roleName = body.getString("role"); final JsonArray actions = body.getJsonArray("actions", new fr.wseduc.webutils.collections.JsonArray()); final JsonObject role = new JsonObject(); if (roleName != null && !roleName.trim().isEmpty()) { role.put("name", roleName); } appRegistryService.updateRole(roleId, role, actions, notEmptyResponseHandler(request)); } else { badRequest(request, "invalid.id"); } } }); }
From source file:org.entcore.registry.services.impl.DefaultAppRegistryService.java
License:Open Source License
@Override public void listCasConnectors(final Handler<Either<String, JsonArray>> handler) { String query = "MATCH (app:Application) " + "WHERE has(app.casType) and app.casType <> '' " + "RETURN app.casType as service, app.address as address, COLLECT(app.pattern) as patterns"; neo.execute(query, (JsonObject) null, validResultHandler(new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isLeft()) { handler.handle(event);// w w w. j a v a2 s.c o m return; } JsonArray results = event.right().getValue(); for (Object o : results) { JsonObject app = (JsonObject) o; String address = app.getString("address", ""); JsonArray patterns = app.getJsonArray("patterns", new fr.wseduc.webutils.collections.JsonArray()); if (patterns.size() == 0 || patterns.size() > 0 && patterns.getString(0).isEmpty()) { final URL addressURL = checkCasUrl(address); if (addressURL != null) { String pattern = "^\\Q" + addressURL.getProtocol() + "://" + addressURL.getHost() + (addressURL.getPort() > 0 ? ":" + addressURL.getPort() : "") + "\\E.*"; patterns.add(pattern); } else { log.error("Url for registered service : " + app.getString("service", "") + " is malformed : " + address); } } } handler.handle(new Either.Right<String, JsonArray>(results)); } })); }
From source file:org.entcore.timeline.controllers.TimelineController.java
License:Open Source License
@Get("/lastNotifications") @SecuredAction(value = "timeline.events", type = ActionType.AUTHENTICATED) public void lastEvents(final HttpServerRequest request) { final boolean mine = request.params().contains("mine"); UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() { @Override/*from www. j av a 2s . c o m*/ public void handle(final UserInfos user) { if (user != null) { getExternalNotifications(new Handler<Either<String, JsonObject>>() { public void handle(Either<String, JsonObject> notifs) { if (notifs.isLeft()) { badRequest(request, notifs.left().getValue()); return; } String page = request.params().get("page"); List<String> types = request.params().getAll("type"); int offset = 0; try { offset = 25 * Integer.parseInt(page); } catch (NumberFormatException e) { } store.get(user, types, offset, 25, notifs.right().getValue(), mine, new Handler<JsonObject>() { public void handle(final JsonObject res) { if (res != null && "ok".equals(res.getString("status"))) { JsonArray results = res.getJsonArray("results", new fr.wseduc.webutils.collections.JsonArray()); final JsonArray compiledResults = new fr.wseduc.webutils.collections.JsonArray(); final AtomicInteger countdown = new AtomicInteger(results.size()); final Handler<Void> endHandler = new Handler<Void>() { public void handle(Void v) { if (countdown.decrementAndGet() <= 0) { res.put("results", compiledResults); renderJson(request, res); } } }; if (results.size() == 0) endHandler.handle(null); for (Object notifObj : results) { final JsonObject notif = (JsonObject) notifObj; if (!notif.getString("message", "").isEmpty()) { compiledResults.add(notif); endHandler.handle(null); continue; } String key = notif.getString("type", "").toLowerCase() + "." + notif.getString("event-type", "").toLowerCase(); String stringifiedRegisteredNotif = registeredNotifications .get(key); if (stringifiedRegisteredNotif == null) { log.error( "Failed to retrieve registered from the shared map notification with key : " + key); endHandler.handle(null); continue; } JsonObject registeredNotif = new JsonObject( stringifiedRegisteredNotif); StringReader reader = new StringReader( registeredNotif.getString("template", "")); processTemplate(request, notif.getJsonObject("params", new JsonObject()), key, reader, new Handler<Writer>() { public void handle(Writer writer) { notif.put("message", writer.toString()); compiledResults.add(notif); endHandler.handle(null); } }); } } else { renderError(request, res); } } }); } }); } else { unauthorized(request); } } }); }
From source file:org.entcore.timeline.events.DefaultTimelineEventStore.java
License:Open Source License
@Override public void get(final UserInfos user, List<String> types, int offset, int limit, JsonObject restrictionFilter, boolean mine, final Handler<JsonObject> result) { final String recipient = user.getUserId(); final String externalId = user.getExternalId(); if (recipient != null && !recipient.trim().isEmpty()) { final JsonObject query = new JsonObject().put("deleted", new JsonObject().put("$exists", false)) .put("date", new JsonObject().put("$lt", MongoDb.now())); if (externalId == null || externalId.trim().isEmpty()) { query.put(mine ? "sender" : "recipients.userId", recipient); } else {//from w w w . j a v a 2s . co m query.put(mine ? "sender" : "recipients.userId", new JsonObject().put("$in", new fr.wseduc.webutils.collections.JsonArray().add(recipient).add(externalId))); } query.put("reportAction.action", new JsonObject().put("$ne", "DELETE")); if (types != null && !types.isEmpty()) { if (types.size() == 1) { query.put("type", types.get(0)); } else { JsonArray typesFilter = new fr.wseduc.webutils.collections.JsonArray(); for (String t : types) { typesFilter.add(new JsonObject().put("type", t)); } query.put("$or", typesFilter); } } if (restrictionFilter != null && restrictionFilter.size() > 0) { JsonArray nor = new fr.wseduc.webutils.collections.JsonArray(); for (String type : restrictionFilter.getMap().keySet()) { for (Object eventType : restrictionFilter.getJsonArray(type, new fr.wseduc.webutils.collections.JsonArray())) { nor.add(new JsonObject().put("type", type).put("event-type", eventType.toString())); } query.put("$nor", nor); } } JsonObject sort = new JsonObject().put("created", -1); JsonObject keys = new JsonObject().put("message", 1).put("params", 1).put("date", 1).put("sender", 1) .put("comments", 1).put("type", 1).put("event-type", 1).put("resource", 1) .put("sub-resource", 1).put("add-comment", 1); if (!mine) { keys.put("recipients", new JsonObject().put("$elemMatch", new JsonObject().put("userId", user.getUserId()))); keys.put("reporters", new JsonObject().put("$elemMatch", new JsonObject().put("userId", user.getUserId()))); } mongo.find(TIMELINE_COLLECTION, query, sort, keys, offset, limit, 100, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> message) { result.handle(message.body()); } }); } else { result.handle(invalidArguments()); } }
From source file:org.entcore.workspace.security.WorkspaceResourcesProvider.java
License:Open Source License
private void isAdminFromUsers(HttpServerRequest request, UserInfos user, final Handler<Boolean> handler) { final UserInfos.Function adminLocal = getFunction(user, handler); if (adminLocal == null) return;/*from w ww . ja v a 2s . c om*/ RequestUtils.bodyToJson(request, new Handler<JsonObject>() { @Override public void handle(JsonObject object) { String query = "MATCH (s:Structure)<-[:DEPENDS]-(:ProfileGroup)<-[:IN]-(u:User) " + "WHERE s.id IN {structures} AND u.id IN {users} " + "RETURN count(distinct u) as nb "; final JsonArray users = object.getJsonArray("users", new fr.wseduc.webutils.collections.JsonArray()); JsonObject params = new JsonObject() .put("structures", new fr.wseduc.webutils.collections.JsonArray(adminLocal.getScope())) .put("users", users); Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> message) { JsonArray res = message.body().getJsonArray("result"); handler.handle( "ok".equals(message.body().getString("status")) && res != null && res.size() == 1 && res.getJsonObject(0).getInteger("nb", -1).equals(users.size())); } }); } }); }
From source file:org.entcore.workspace.service.impl.DefaultFolderService.java
License:Open Source License
public void getParentRights(final String parentName, final String parentFolder, final String owner, final Handler<Either<String, JsonArray>> result) { QueryBuilder parentFolderQuery = QueryBuilder.start("owner").is(owner).and("name").is(parentName) .and("folder").is(parentFolder); mongo.findOne(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(parentFolderQuery), new Handler<Message<JsonObject>>() { @Override/* ww w . j a v a 2 s.c o m*/ public void handle(Message<JsonObject> event) { if ("ok".equals(event.body().getString("status")) && event.body().containsKey("result")) { JsonObject parent = event.body().getJsonObject("result"); JsonArray parentSharedRights = parent != null ? parent.getJsonArray("shared", null) : null; result.handle(new Either.Right<String, JsonArray>(parentSharedRights)); } else { result.handle(new Either.Left<String, JsonArray>("workspace.folder.not.found")); } } }); }