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

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

Introduction

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

Prototype

public String encode() 

Source Link

Document

Encode this JSON object as a string.

Usage

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

            });
}