List of usage examples for io.vertx.core.json JsonObject encode
public String encode()
From source file:org.entcore.workspace.service.impl.WorkspaceRepositoryEvents.java
License:Open Source License
@Override public void exportResources(final String exportId, final String userId, JsonArray g, final String exportPath, final String locale, String host, final Handler<Boolean> handler) { log.debug("Workspace export resources."); List<DBObject> groups = new ArrayList<>(); groups.add(QueryBuilder.start("userId").is(userId).get()); for (Object o : g) { if (!(o instanceof String)) continue; String gpId = (String) o; groups.add(QueryBuilder.start("groupId").is(gpId).get()); }//from w ww . jav a2 s .c o m QueryBuilder b = new QueryBuilder().or(QueryBuilder.start("owner").is(userId).get(), QueryBuilder.start("shared") .elemMatch(new QueryBuilder().or(groups.toArray(new DBObject[groups.size()])).get()).get(), QueryBuilder.start("old_shared") .elemMatch(new QueryBuilder().or(groups.toArray(new DBObject[groups.size()])).get()).get()) .put("file").exists(true); final JsonObject keys = new JsonObject().put("file", 1).put("name", 1); final JsonObject query = MongoQueryBuilder.build(b); mongo.find(DocumentDao.DOCUMENTS_COLLECTION, query, null, keys, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { final AtomicBoolean exported = new AtomicBoolean(false); final JsonArray documents = event.body().getJsonArray("results"); if ("ok".equals(event.body().getString("status")) && documents != null) { QueryBuilder b = QueryBuilder.start("to").is(userId).put("file").exists(true); final JsonObject q = MongoQueryBuilder.build(b); mongo.find(RackDao.RACKS_COLLECTION, q, null, keys, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { JsonArray racks = event.body().getJsonArray("results"); if ("ok".equals(event.body().getString("status")) && racks != null) { final Set<String> usedFileName = new HashSet<>(); final JsonObject alias = new JsonObject(); final String[] ids = new String[racks.size() + documents.size()]; for (int i = 0; i < documents.size(); i++) { JsonObject j = documents.getJsonObject(i); ids[i] = j.getString("file"); String fileName = j.getString("name"); if (fileName != null && fileName.contains("/")) { fileName = fileName.replaceAll("/", "-"); } if (usedFileName.add(fileName)) { alias.put(ids[i], fileName); } else { alias.put(ids[i], ids[i] + "_" + fileName); } } for (int i = 0; i < racks.size(); i++) { JsonObject j = racks.getJsonObject(i); ids[i] = j.getString("file"); String fileName = j.getString("name"); if (fileName != null && fileName.contains("/")) { fileName = fileName.replaceAll("/", "-"); } if (usedFileName.add(fileName)) { alias.put(ids[i], fileName); } else { alias.put(ids[i], ids[i] + "_" + fileName); } } exportFiles(alias, ids, exportPath, locale, exported, handler); } else { log.error("Rack " + q.encode() + " - " + event.body().getString("message")); handler.handle(exported.get()); } } }); } else { log.error("Documents " + query.encode() + " - " + event.body().getString("message")); handler.handle(exported.get()); } } }); }
From source file:org.entcore.workspace.service.impl.WorkspaceRepositoryEvents.java
License:Open Source License
private void exportFiles(final JsonObject alias, final String[] ids, String exportPath, String locale, final AtomicBoolean exported, final Handler<Boolean> handler) { createExportDirectory(exportPath, locale, new Handler<String>() { @Override// www. j av a2 s. c o m public void handle(String path) { if (path != null) { if (ids.length == 0) { handler.handle(true); return; } storage.writeToFileSystem(ids, path, alias, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if ("ok".equals(event.getString("status"))) { exported.set(true); handler.handle(exported.get()); } else { JsonArray errors = event.getJsonArray("errors", new fr.wseduc.webutils.collections.JsonArray()); boolean ignoreErrors = errors.size() > 0; for (Object o : errors) { if (!(o instanceof JsonObject)) continue; if (((JsonObject) o).getString("message") == null || (!((JsonObject) o) .getString("message").contains("NoSuchFileException") && !((JsonObject) o).getString("message") .contains("FileAlreadyExistsException"))) { ignoreErrors = false; break; } } if (ignoreErrors) { exported.set(true); handler.handle(exported.get()); } else { log.error("Write to fs : " + new fr.wseduc.webutils.collections.JsonArray(Arrays.asList(ids)) .encode() + " - " + event.encode()); handler.handle(exported.get()); } } } }); } else { log.error("Create export directory error."); handler.handle(exported.get()); } } }); }
From source file:org.entcore.workspace.service.impl.WorkspaceRepositoryEvents.java
License:Open Source License
private void deleteFiles(final JsonObject query, final String collection) { mongo.find(collection, query, null, new JsonObject().put("file", 1), new Handler<Message<JsonObject>>() { @Override//from w ww. j a va 2 s . c o m public void handle(Message<JsonObject> res) { String status = res.body().getString("status"); JsonArray results = res.body().getJsonArray("results"); if ("ok".equals(status) && results != null && results.size() > 0) { JsonArray fileIds = new fr.wseduc.webutils.collections.JsonArray(); for (Object o : results) { if (o instanceof JsonObject) { fileIds.add(((JsonObject) o).getString("file")); } } storage.removeFiles(fileIds, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if (event == null) { log.error("Error deleting files "); } else if (!"ok".equals(event.getString("status"))) { log.error("Error deleting files : " + event.encode()); } } }); mongo.delete(collection, query, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if (!"ok".equals(event.body().getString("status"))) { log.error("Error deleting documents : " + event.body().encode()); } else { log.info("Documents deleted : " + event.body().getInteger("number")); } } }); } } }); }
From source file:org.entcore.workspace.service.WorkspaceService.java
License:Open Source License
private void updateStorage(JsonArray addeds, JsonArray removeds, final Handler<Either<String, JsonObject>> handler) { Map<String, Long> sizes = new HashMap<>(); if (addeds != null) { for (Object o : addeds) { if (!(o instanceof JsonObject)) continue; JsonObject added = (JsonObject) o; Long size = added.getJsonObject("metadata", new JsonObject()).getLong("size", 0l); String userId = (added.containsKey("to")) ? added.getString("to") : added.getString("owner"); if (userId == null) { log.info("UserId is null when update storage size"); log.info(added.encode()); continue; }/*from w w w. j a va 2 s . c o m*/ Long old = sizes.get(userId); if (old != null) { size += old; } sizes.put(userId, size); } } if (removeds != null) { for (Object o : removeds) { if (!(o instanceof JsonObject)) continue; JsonObject removed = (JsonObject) o; Long size = removed.getJsonObject("metadata", new JsonObject()).getLong("size", 0l); String userId = (removed.containsKey("to")) ? removed.getString("to") : removed.getString("owner"); if (userId == null) { log.info("UserId is null when update storage size"); log.info(removed.encode()); continue; } Long old = sizes.get(userId); if (old != null) { old -= size; } else { old = -1l * size; } sizes.put(userId, old); } } for (final Map.Entry<String, Long> e : sizes.entrySet()) { quotaService.incrementStorage(e.getKey(), e.getValue(), threshold, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> r) { if (r.isRight()) { JsonObject j = r.right().getValue(); UserUtils.addSessionAttribute(eb, e.getKey(), "storage", j.getLong("storage"), null); if (j.getBoolean("notify", false)) { notifyEmptySpaceIsSmall(e.getKey()); } } else { log.error(r.left().getValue()); } if (handler != null) { handler.handle(r); } } }); } }
From source file:org.etourdot.vertx.marklogic.http.impl.request.DefaultMarklogicRequest.java
License:Open Source License
@Override public MarkLogicRequest withBody(JsonObject jsonObject) { return withBody(jsonObject.encode(), Format.JSON); }
From source file:org.folio.auth.login_module.impl.ModuleUserSource.java
@Override public Future<UserResult> getUser(String username) { if (okapiUrl == null || vertx == null || requestToken == null || tenant == null) { throw new RuntimeException( "You must call setOkapiUrl, setVertx, setRequestToken and setTenant before calling this method"); }//from ww w .j a v a 2 s . c o m Future<UserResult> future = Future.future(); HttpClientOptions options = new HttpClientOptions(); options.setConnectTimeout(10); options.setIdleTimeout(10); HttpClient client = vertx.createHttpClient(options); JsonObject query = new JsonObject().put("username", username); String requestUrl = null; try { requestUrl = okapiUrl + "/users/?query=" + URLEncoder.encode(query.encode(), "UTF-8"); } catch (Exception e) { future.fail(e); return future; } logger.debug("Requesting userdata from URL at " + requestUrl); client.getAbs(requestUrl, res -> { if (res.statusCode() != 200) { future.fail("Got status code " + res.statusCode()); } else { res.bodyHandler(buf -> { logger.debug("Got content from server: " + buf.toString()); JsonObject result = buf.toJsonObject(); if (result.getInteger("total_records") > 1) { future.fail("Not unique username"); } else if (result.getInteger("total_records") == 0) { UserResult userResult = new UserResult(username, false); future.complete(userResult); } else { UserResult userResult = new UserResult(username, true, result.getJsonArray("users").getJsonObject(0).getBoolean("active")); future.complete(userResult); } }); } }).putHeader("X-Okapi-Tenant", tenant).putHeader("Authorization", "Bearer " + requestToken) .putHeader("Content-type", "application/json").putHeader("Accept", "application/json").end(); return future; }
From source file:org.folio.auth.login_module.MainVerticle.java
private Future<String> fetchToken(JsonObject payload, String url, String requestToken, String tenant) { Future<String> future = Future.future(); HttpClient client = vertx.createHttpClient(); logger.debug("Attempting to request token from url " + url + " for claims " + payload.encode()); logger.debug("Using token: Bearer " + requestToken); HttpClientRequest request = client.postAbs(url); request.putHeader("Authorization", "Bearer " + requestToken); request.putHeader("X-Okapi-Tenant", tenant); request.handler(result -> {/*from www.jav a 2s . c om*/ if (result.statusCode() != 200) { future.fail("Got error " + result.statusCode() + " fetching token"); logger.debug("Fetching token trace: " + result.getHeader("X-Okapi-Trace")); result.bodyHandler(buf -> { logger.debug("Output from token fetch is: " + buf.toString()); }); } else { String token = result.getHeader("Authorization"); future.complete(token); } }); request.end(new JsonObject().put("payload", payload).encode()); return future; }
From source file:org.folio.auth.permissions_module.impl.MongoPermissionsStore.java
@Override public Future<Boolean> addPermissionToUser(String user, String permission, String tenant) { logger.debug("Permissions> Adding permission '" + permission + "' to user '" + user + "'"); JsonObject query = new JsonObject().put("username", user).put("tenant", tenant); Future<Boolean> future = Future.future(); mongoClient.find("users", query, res -> { if (res.failed()) { future.fail(res.cause().getMessage()); } else {// ww w. j av a2s. co m logger.debug("Permissions> Found user successfully"); JsonArray currentPermissions = res.result().get(0).getJsonArray("permissions"); if (res.result().size() < 0) { future.complete(false); } else { this.getPermissionsForUser(user, tenant, false).setHandler(res2 -> { if (res2.failed()) { future.fail("Error querying current permissions: " + res2.cause().getMessage()); } else { JsonArray currentPerms = res2.result(); if (currentPerms.contains(permission)) { future.fail("Permission already exists in user"); } else { JsonObject push = new JsonObject().put("$push", new JsonObject().put("permissions", permission)); logger.debug("Permissions> Using user query '" + query.encode() + "' and update query '" + push.encode() + "'"); mongoClient.updateCollection("users", query, push, res3 -> { if (res3.failed()) { future.fail("Unable to add permission:" + res3.cause().getMessage()); } else { logger.debug("Permissions> Permission '" + permission + "' added to user '" + user + "'"); future.complete(true); } }); } } }); } } }); return future; }
From source file:org.folio.auth.permissions_module.impl.MongoPermissionsStore.java
public Future<JsonArray> getPermissionsForUser(String user, String tenant, Boolean expand) { JsonObject query = new JsonObject().put("username", user).put("tenant", tenant); Future<JsonArray> future = Future.future(); mongoClient.find("users", query, (AsyncResult<List<JsonObject>> res) -> { if (res.result().size() < 1) { future.fail("No such user"); } else {//from w ww . ja v a2s . c o m JsonObject userObject = res.result().get(0); logger.debug("Permissions> Permissions for user " + user + ": " + userObject.encode()); JsonArray permissions = userObject.getJsonArray("permissions"); if (expand) { ArrayList<Future> futureList = new ArrayList<>(); for (Object o : permissions) { String permissionName = (String) o; Future<JsonArray> expandPermissionFuture = this.getExpandedPermissions(permissionName, tenant); futureList.add(expandPermissionFuture); } logger.debug("Permissions> Assembling CompositeFuture of " + futureList.size() + " permissions to expand"); CompositeFuture compositeFuture = CompositeFuture.all(futureList); compositeFuture.setHandler(res2 -> { if (res2.failed()) { future.fail(res2.cause()); } else { JsonArray allPermissions = new JsonArray(); for (Future f : futureList) { JsonArray arr = (JsonArray) f.result(); for (Object o : arr) { String perm = (String) o; if (!allPermissions.contains(perm)) { allPermissions.add(perm); } } } logger.debug( "Permissions> Returning list of " + allPermissions.size() + " permissions"); future.complete(allPermissions); } }); } else { future.complete(permissions); } } }); return future; }
From source file:org.jadala.auth.jwt.JsonWebTokenHandler.java
/** * Creates a JWT token for further requests. request params must contain valid * email and password combination.//from w w w . j a va2 s . co m * * json request body: * {"email":<EMAIL>, "password":<PASSWORD>} * * responses with * status BAD_REQUEST: missing parameter * or status UNAUTHORIZED: email/password not valid * or status CREATED with content-type "application/json" and response body: * {"jwt":<JWT_TOKEN>} * * * @param routingContext */ @Override public void handle(RoutingContext routingContext) { HttpServerResponse response = routingContext.response(); JsonObject loginForm = null; try { loginForm = routingContext.getBodyAsJson(); } catch (DecodeException de) { de.printStackTrace(); response.setStatusCode(HttpResponseStatus.BAD_REQUEST.code()).end(); return; } String email = loginForm.getString("email"); String password = loginForm.getString("password"); if (email == null || email.length() == 0 || password == null || password.length() == 0) { response.setStatusCode(HttpResponseStatus.BAD_REQUEST.code()).end(); return; } String query = "{ \"_source\":true," + " \"query\" : " + "{\"filtered\" : " + "{\"filter\" : " + "{\"bool\" : " + "{\"must\": [" + "{\"term\":{\"email\":\"" + email + "\"}}," + "{\"term\":{ \"password\":\"" + password + "\"}}]}}}}}"; JsonObject msg = new JsonObject(query); vertx.eventBus().send("elastic", msg, ElasticClient.commandOptions("usermanager", "users", "_search"), (AsyncResult<Message<JsonObject>> async) -> { if (async.failed() || async.result() == null) { response.setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()).end(); } else { JsonObject msgBody = async.result().body(); JsonObject hits = msgBody.getJsonObject("hits"); if (hits == null) { response.setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()).end(); return; } int total = hits.getInteger("total"); switch (total) { case 0: response.setStatusCode(HttpResponseStatus.UNAUTHORIZED.code()).end(); break; case 1: JsonObject hit = hits.getJsonArray("hits").getJsonObject(0); String token = this.signer.sign(hit.getString("_id"), email); String responseBody; if (hit.containsKey("_source")) { JsonObject source = hit.getJsonObject("_source"); source.put("jwt", token); responseBody = source.encode(); } else { responseBody = "{\"jwt\":\"" + token + "\"}"; } response.setStatusCode(HttpResponseStatus.CREATED.code()) .putHeader("content-type", "application/json").end(responseBody); break; default: response.setStatusCode(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()).end(); } } }); }