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

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

Introduction

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

Prototype

public Long getLong(String key, Long def) 

Source Link

Document

Like #getLong(String) but specifying a default value to return if there is no entry.

Usage

From source file:org.entcore.auth.services.impl.FranceConnectServiceProvider.java

License:Open Source License

@Override
public void executeFederate(final JsonObject payload, final Handler<Either<String, Object>> handler) {
    if (iss.equals(payload.getString("iss")) && payload.getLong("exp", 0l) > (System.currentTimeMillis() / 1000)
            && isNotEmpty(payload.getString("sub"))) {
        neo4j.execute(QUERY_SUB_FC, payload,
                validUniqueResultHandler(new Handler<Either<String, JsonObject>>() {
                    @Override/*www .  j  a  va  2  s. co  m*/
                    public void handle(final Either<String, JsonObject> event) {
                        if (event.isRight() && event.right().getValue().getBoolean("blockedProfile", false)) {
                            handler.handle(new Either.Left<String, Object>("blocked.profile"));
                        } else if (event.isRight() && event.right().getValue().size() > 0) {
                            handler.handle(new Either.Right<String, Object>(event.right().getValue()));
                        } else {
                            federateWithPivot(payload, handler);
                        }
                    }
                }));
    } else {
        handler.handle(new Either.Left<String, Object>("invalid.openid.payload"));
    }
}

From source file:org.entcore.common.neo4j.Neo4j.java

License:Open Source License

public void init(Vertx vertx, JsonObject config) {
    this.eb = Server.getEventBus(vertx);
    JsonArray serverUris = config.getJsonArray("server-uris");
    String serverUri = config.getString("server-uri");
    if (serverUris == null && serverUri != null) {
        serverUris = new fr.wseduc.webutils.collections.JsonArray().add(serverUri);
    }/*from  w  w  w  .j  a  va2 s .com*/

    if (serverUris != null) {
        try {
            URI[] uris = new URI[serverUris.size()];
            for (int i = 0; i < serverUris.size(); i++) {
                uris[i] = new URI(serverUris.getString(i));
            }
            database = new Neo4jRest(uris, config.getBoolean("slave-readonly", false), vertx,
                    config.getLong("checkDelay", 3000l), config.getInteger("poolSize", 16),
                    config.getBoolean("keepAlive", true), config);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    } else {
        log.error("Invalid Neo4j URI");
    }
}

From source file:org.entcore.common.sql.SqlResult.java

License:Open Source License

private static Either<String, JsonObject> validRows(JsonObject body) {
    if ("ok".equals(body.getString("status"))) {
        long rows = body.getLong("rows", 0l);
        JsonObject result = new JsonObject();
        if (rows > 0) {
            result.put("rows", rows);
        }//from www  .ja va2  s. c o m
        return new Either.Right<>(result);
    } else {
        return new Either.Left<>(body.getString("message", ""));
    }
}

From source file:org.entcore.common.storage.impl.GridfsStorage.java

License:Open Source License

private void writeBuffer(String id, Buffer buff, Long maxSize, String contentType, String filename,
        final JsonObject m, Handler<JsonObject> handler) {
    JsonObject save = new JsonObject();
    save.put("action", "save");
    save.put("content-type", contentType);
    save.put("filename", filename);
    if (id != null && !id.trim().isEmpty()) {
        save.put("_id", id);
    }/*from ww w .  j  a v  a 2 s .com*/
    final JsonObject metadata = (m != null) ? m
            : new JsonObject().put("content-type", contentType).put("filename", filename);
    if (metadata.getLong("size", 0l).equals(0l)) {
        metadata.put("size", buff.length());
    }
    if (maxSize != null && maxSize < metadata.getLong("size", 0l)) {
        handler.handle(new JsonObject().put("status", "error").put("message", "file.too.large"));
        return;
    }
    byte[] header = null;
    try {
        header = save.toString().getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        JsonObject json = new JsonObject().put("status", "error").put("message", e.getMessage());
        handler.handle(json);
    }
    if (header != null) {
        buff.appendBytes(header).appendInt(header.length);
        eb.send(gridfsAddress, buff, handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> message) {
                handler.handle(message.body().put("metadata", metadata));
            }
        }));
    }
}

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);//  w w  w  .j av a 2s.c o 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

@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  ww . 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.infra.controllers.MonitoringController.java

License:Open Source License

@Override
public void init(Vertx vertx, JsonObject config, RouteMatcher rm,
        Map<String, fr.wseduc.webutils.security.SecuredAction> securedActions) {
    super.init(vertx, config, rm, securedActions);
    dbCheckTimeout = config.getLong("dbCheckTimeout", 5000l);
    postgresql = config.getBoolean("sql", true);
}

From source file:org.entcore.timeline.controllers.TimelineController.java

License:Open Source License

public void init(Vertx vertx, JsonObject config, RouteMatcher rm,
        Map<String, fr.wseduc.webutils.security.SecuredAction> securedActions) {
    super.init(vertx, config, rm, securedActions);
    store = new DefaultTimelineEventStore();
    timelineHelper = new TimelineHelper(vertx, eb, config);
    antiFlood = new TTLSet<>(config.getLong("antiFloodDelay", 3000l), vertx,
            config.getLong("antiFloodClear", 3600 * 1000l));
    refreshTypesCache = config.getBoolean("refreshTypesCache", false);
}

From source file:org.entcore.workspace.service.impl.DefaultFolderService.java

License:Open Source License

@Override
public void copy(final String id, final String n, final String p, final UserInfos owner, final long emptySize,
        final Handler<Either<String, JsonArray>> result) {
    if (owner == null) {
        result.handle(new Either.Left<String, JsonArray>("workspace.invalid.user"));
        return;/*  w  ww . j a  v  a 2s .co  m*/
    }
    if (id == null || id.trim().isEmpty()) {
        result.handle(new Either.Left<String, JsonArray>("workspace.folder.not.found"));
        return;
    }
    final String path = getOrElse(p, "");
    //If the folder has a parent folder, replicate sharing rights
    String[] splittedPath = path.split("_");
    String parentName = splittedPath[splittedPath.length - 1];
    String parentFolder = path;

    getParentRights(parentName, parentFolder, owner, new Handler<Either<String, JsonArray>>() {
        public void handle(Either<String, JsonArray> event) {
            final JsonArray parentSharedRights = event.right() == null || event.isLeft() ? null
                    : event.right().getValue();

            QueryBuilder query = QueryBuilder.start("_id").is(id).put("owner").is(owner.getUserId());
            JsonObject keys = new JsonObject().put("folder", 1).put("name", 1);

            mongo.findOne(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(query), keys,
                    new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> event) {
                            final String folder = event.body().getJsonObject("result", new JsonObject())
                                    .getString("folder");
                            final String n1 = event.body().getJsonObject("result", new JsonObject())
                                    .getString("name");
                            if ("ok".equals(event.body().getString("status")) && folder != null
                                    && !folder.trim().isEmpty() && n1 != null && !n1.trim().isEmpty()) {
                                final String folderAttr = "folder";
                                QueryBuilder q = QueryBuilder.start("owner").is(owner.getUserId())
                                        .put(folderAttr)
                                        .regex(Pattern.compile("^" + Pattern.quote(folder) + "($|_)"));
                                mongo.find(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(q),
                                        new Handler<Message<JsonObject>>() {
                                            @Override
                                            public void handle(Message<JsonObject> src) {
                                                final JsonArray origs = src.body().getJsonArray("results",
                                                        new fr.wseduc.webutils.collections.JsonArray());
                                                if ("ok".equals(src.body().getString("status"))
                                                        && origs.size() > 0) {
                                                    long size = 0;
                                                    for (Object o : origs) {
                                                        if (!(o instanceof JsonObject))
                                                            continue;
                                                        JsonObject metadata = ((JsonObject) o)
                                                                .getJsonObject("metadata");
                                                        if (metadata != null) {
                                                            size += metadata.getLong("size", 0l);
                                                        }
                                                    }
                                                    if (size > emptySize) {
                                                        result.handle(new Either.Left<String, JsonArray>(
                                                                "files.too.large"));
                                                        return;
                                                    }
                                                    final AtomicInteger number = new AtomicInteger(
                                                            origs.size());
                                                    final JsonArray insert = new fr.wseduc.webutils.collections.JsonArray();
                                                    String name = (n != null && !n.trim().isEmpty()) ? n : n1;
                                                    final String destFolderName = (path != null
                                                            && !path.trim().isEmpty()) ? path + "_" + name
                                                                    : name;
                                                    QueryBuilder alreadyExist = QueryBuilder.start("owner")
                                                            .is(owner.getUserId()).put("folder")
                                                            .is(destFolderName);
                                                    mongo.count(DOCUMENTS_COLLECTION,
                                                            MongoQueryBuilder.build(alreadyExist),
                                                            new Handler<Message<JsonObject>>() {
                                                                @Override
                                                                public void handle(Message<JsonObject> event) {
                                                                    String destFolder;
                                                                    if ("ok".equals(
                                                                            event.body().getString("status"))
                                                                            && event.body()
                                                                                    .getInteger("count") == 0) {
                                                                        destFolder = destFolderName;
                                                                    } else {
                                                                        destFolder = destFolderName + "-"
                                                                                + format.format(new Date());
                                                                    }
                                                                    for (Object o : origs) {
                                                                        if (!(o instanceof JsonObject))
                                                                            continue;
                                                                        JsonObject orig = (JsonObject) o;
                                                                        final JsonObject dest = orig.copy();
                                                                        String now = MongoDb
                                                                                .formatDate(new Date());
                                                                        dest.remove("_id");
                                                                        dest.put("created", now);
                                                                        dest.put("modified", now);
                                                                        dest.put("folder", dest
                                                                                .getString("folder", "")
                                                                                .replaceFirst(
                                                                                        "^" + Pattern
                                                                                                .quote(folder),
                                                                                        Matcher.quoteReplacement(
                                                                                                destFolder)));
                                                                        dest.put("shared", parentSharedRights);
                                                                        insert.add(dest);
                                                                        String filePath = orig
                                                                                .getString("file");
                                                                        if (filePath != null) {
                                                                            storage.copyFile(filePath,
                                                                                    new Handler<JsonObject>() {
                                                                                        @Override
                                                                                        public void handle(
                                                                                                JsonObject event) {
                                                                                            if (event != null
                                                                                                    && "ok".equals(
                                                                                                            event.getString(
                                                                                                                    "status"))) {
                                                                                                dest.put("file",
                                                                                                        event.getString(
                                                                                                                "_id"));
                                                                                                persist(insert,
                                                                                                        number.decrementAndGet());
                                                                                            }
                                                                                        }
                                                                                    });
                                                                        } else {
                                                                            persist(insert,
                                                                                    number.decrementAndGet());
                                                                        }
                                                                    }
                                                                }
                                                            });
                                                } else {
                                                    result.handle(new Either.Left<String, JsonArray>(
                                                            "workspace.folder.not.found"));
                                                }
                                            }

                                            private void persist(final JsonArray insert, int remains) {
                                                if (remains == 0) {
                                                    mongo.insert(DOCUMENTS_COLLECTION, insert,
                                                            new Handler<Message<JsonObject>>() {
                                                                @Override
                                                                public void handle(
                                                                        Message<JsonObject> inserted) {
                                                                    if ("ok".equals(inserted.body()
                                                                            .getString("status"))) {
                                                                        result.handle(
                                                                                new Either.Right<String, JsonArray>(
                                                                                        insert));
                                                                    } else {
                                                                        result.handle(
                                                                                new Either.Left<String, JsonArray>(
                                                                                        inserted.body()
                                                                                                .getString(
                                                                                                        "message")));
                                                                    }
                                                                }
                                                            });
                                                }
                                            }
                                        });
                            } else {
                                result.handle(new Either.Left<String, JsonArray>("workspace.folder.not.found"));
                            }
                        }
                    });
        }
    });
}

From source file:org.entcore.workspace.service.WorkspaceService.java

License:Open Source License

private void emptySize(final UserInfos userInfos, final Handler<Long> emptySizeHandler) {
    try {//from   www  . jav  a  2s.c om
        long quota = Long.valueOf(userInfos.getAttribute("quota").toString());
        long storage = Long.valueOf(userInfos.getAttribute("storage").toString());
        emptySizeHandler.handle(quota - storage);
    } catch (Exception e) {
        quotaService.quotaAndUsage(userInfos.getUserId(), new Handler<Either<String, JsonObject>>() {
            @Override
            public void handle(Either<String, JsonObject> r) {
                if (r.isRight()) {
                    JsonObject j = r.right().getValue();
                    if (j != null) {
                        long quota = j.getLong("quota", 0l);
                        long storage = j.getLong("storage", 0l);
                        for (String attr : j.fieldNames()) {
                            UserUtils.addSessionAttribute(eb, userInfos.getUserId(), attr, j.getLong(attr),
                                    null);
                        }
                        emptySizeHandler.handle(quota - storage);
                    }
                }
            }
        });
    }
}