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

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

Introduction

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

Prototype

public JsonArray getJsonArray(String key) 

Source Link

Document

Get the JsonArray value with the specified key

Usage

From source file:io.nitor.api.backend.auth.SetupAzureAdConnectAuth.java

License:Apache License

public static void setupAzureAd(JsonObject adAuth, Router router, String publicURI, boolean virtualHost,
        CookieSessionHandler sessionHandler, HttpClient httpClient) {
    final String callbackPath = adAuth.getString("callbackPath", "/oidc/callback");
    String redirectUri = publicURI + callbackPath;
    adAuth.put("redirectUri", redirectUri);

    String path = adAuth.getString("route", "/*");

    List<GraphQuery> graphQueries = new ArrayList<>();
    JsonArray queryNodes = adAuth.getJsonArray("graphQueries");
    if (queryNodes == null) {
        graphQueries.add(new GraphQuery(adAuth, "https://graph.microsoft.com/beta/me?$expand=memberOf"));
    } else {//w  ww .  j av  a2s.  c  o m
        queryNodes.stream().map(JsonObject.class::cast).map(GraphQuery::new).forEach(graphQueries::add);
    }
    Set<String> forbiddenHeaders = graphQueries.stream().flatMap(gq -> gq.headerMappings.keySet().stream())
            .collect(toSet());
    logger.info("Graph queries: "
            + graphQueries.stream().map(gq -> gq.graphQueryURI).collect(Collectors.joining(", ")));
    logger.info("Headers: " + forbiddenHeaders);

    HashMap<String, Pattern> requiredHeaderMatchers = new HashMap<>();
    adAuth.getJsonObject("requiredHeaders", new JsonObject()).forEach(mapping -> requiredHeaderMatchers
            .put(mapping.getKey(), Pattern.compile(mapping.getValue().toString())));

    RedirectTokenService redirectTokenService = new RedirectTokenService(sessionHandler.getCookieConverter());

    Handler<RoutingContext> securityHandler = authHandler(adAuth, forbiddenHeaders, requiredHeaderMatchers,
            publicURI, virtualHost, sessionHandler, redirectUri, redirectTokenService);

    router.get(FORBIDDEN_PATH).handler(ctx -> errorWithLogoutLink(ctx, FORBIDDEN));
    router.get(UNAUTHORIZED_PATH).handler(ctx -> errorWithLogoutLink(ctx, UNAUTHORIZED));

    router.get(callbackPath).handler(validateAuthCallback(adAuth, httpClient, sessionHandler, graphQueries,
            redirectUri, redirectTokenService));

    if (virtualHost) {
        router.options(PROXY_AUTH_REDIRECT_AFTER).handler(SetupAzureAdConnectAuth::optionsHandler);
        router.route(PROXY_AUTH_REDIRECT_AFTER).handler(ctx -> {
            // phase 3: executed when returning to virtual domain with cookie and original url inside token
            // -> jump to original locatin and set the cookie
            String token = ctx.request().getParam("t");
            Map<String, String> params = redirectTokenService.getParameters(ctx, token);
            if (params == null) {
                ctx.reroute(GET, UNAUTHORIZED_PATH);
                logger.warn("phase3: Could not decrypt parameters from 't'");
                return;
            }
            String originalUrl = params.get("u");
            String originalHost = getUriHostName(originalUrl);
            String host = getUriHostName(ctx.request().host());
            if (originalHost != null && originalHost.equals(host)) {
                ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, originalUrl)
                        .putHeader(SET_COOKIE, params.get("c")).end();
            } else {
                logger.warn("phase3: original host from cookie " + originalHost
                        + " does not match request host " + host);
                ctx.reroute(GET, FORBIDDEN_PATH);
            }
        });
    }

    router.route(path).handler(securityHandler);

    if (virtualHost) {
        router.options(PROXY_AUTH_REDIRECT_BEFORE).handler(SetupAzureAdConnectAuth::optionsHandler);
        router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(securityHandler);
        router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(ctx -> {
            // phase 2: executed when returning from authentication server with valid cookie
            // -> jump to original virtual host domain and pass the original url and auth cookie inside token
            String token = ctx.request().getParam("t");
            Map<String, String> params = redirectTokenService.getParameters(ctx, token);
            if (params == null) {
                ctx.reroute(GET, UNAUTHORIZED_PATH);
                logger.warn("phase2: Could not decrypt parameters from 't'");
                return;
            }
            String originalUrl = params.get("u");
            String originalHost = getUriHostNamePort(originalUrl);
            if (originalUrl == null || !originalUrl.startsWith("https://")) {
                ctx.reroute(GET, FORBIDDEN_PATH);
                logger.warn(
                        "phase2: original url from cookie " + originalUrl + " does not start with https://");
                return;
            }
            Cookie cookie = sessionHandler.getAuthCookie(ctx.cookies());
            params.put("c", cookie.encode());
            String newToken = redirectTokenService.createToken(ctx, params);
            StringBuilder sb = new StringBuilder();
            sb.append("https://").append(originalHost).append(PROXY_AUTH_REDIRECT_AFTER).append("?t=")
                    .append(urlEncode(newToken));
            ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, sb).end();
        });
    }
}

From source file:io.nitor.api.backend.lambda.LambdaHandler.java

License:Apache License

public LambdaHandler(JsonObject conf, int routeLength) {
    this.routeLength = routeLength;

    Region region = resolveRegion(conf);
    lambdaCl = LambdaAsyncClient.builder().region(region).credentialsProvider(resolveCredentialsProvider(conf))
            .build();/*from  w ww  .j a  v a 2 s  . c  o m*/
    pathTemplateMatcher = new PathTemplateMatcher<>();
    for (Object next : conf.getJsonArray("paths")) {
        if (next instanceof JsonObject) {
            JsonObject nextObj = (JsonObject) next;
            String lambdaFunction = nextObj.getString("function");
            String qualifier = conf.getString("qualifier", "$LATEST");
            Entry<String, String> value = new SimpleImmutableEntry<>(lambdaFunction, qualifier);
            pathTemplateMatcher.add(PathTemplate.create(nextObj.getString("template")), value);
        }
    }
}

From source file:io.nitor.api.backend.session.Encryptor.java

License:Apache License

public Encryptor(JsonObject cryptConf) {
    try {//ww  w  . j a v a 2s .  com
        Path secretFile = Paths.get(cryptConf.getString("secretFile", ".secret"));
        JsonArray secretGenerator = cryptConf.getJsonArray("secretGenerator");
        byte[] secret;
        if (isReadable(secretFile)) {
            logger.info("Reading existing secret from " + secretFile);
            secret = readAllBytes(secretFile);
            if (secret.length != AES_KEY_LENGTH + AES_AUTH_LENGTH) {
                throw new RuntimeException("Corrupted secret file '" + secretFile.toAbsolutePath() + "'");
            }
        } else if (secretGenerator != null) {
            logger.info("Generating a new secret using " + secretGenerator);
            secret = generateSecret(secretGenerator);
            if (secret.length < AES_KEY_LENGTH + AES_AUTH_LENGTH) {
                throw new RuntimeException("Too small secret generated");
            }
        } else {
            logger.info("Generating a new secret and writing it to " + secretFile);
            secret = new byte[AES_KEY_LENGTH + AES_AUTH_LENGTH];
            CRYPTO_POOL.get().random.nextBytes(secret);
            write(secretFile, secret, CREATE, TRUNCATE_EXISTING, DSYNC);
        }
        logger.info("Using secret " + toHexString(Arrays.hashCode(secret)));
        byte[] aesKey = copyOf(secret, AES_KEY_LENGTH);
        byte[] aesAuthData = copyOfRange(secret, AES_KEY_LENGTH, AES_KEY_LENGTH + AES_AUTH_LENGTH);
        if (aesKey.length != AES_KEY_LENGTH || aesAuthData.length != AES_AUTH_LENGTH) {
            throw new RuntimeException("Wrong length of key or auth data");
        }
        this.symmetricKey = new SecretKeySpec(aesKey, "AES");
        this.hmacSecret = new SecretKeySpec(aesAuthData, MAC_ALGORITHM);
    } catch (Exception e) {
        throw new RuntimeException("Could not create cipher", e);
    }
}

From source file:io.nonobot.core.handlers.GiphyHandler.java

License:Apache License

public void handle(Message msg) {
    String query = msg.matchedGroup(1);
    HttpClientRequest req = client.get(80, "api.giphy.com",
            "/v1/gifs/search?q=" + query + "&api_key=" + "dc6zaTOxFJmzC", resp -> {
                if (resp.statusCode() == 200 && resp.getHeader("Content-Type").equals("application/json")) {
                    System.out.println(resp.statusCode());
                    System.out.println(resp.statusMessage());
                    System.out.println(resp.getHeader("Content-Type"));
                    resp.exceptionHandler(err -> {
                        msg.reply("Error: " + err.getMessage());
                    });/*  www  .j  a v a2s.  c om*/
                    Buffer buf = Buffer.buffer();
                    resp.handler(buf::appendBuffer);
                    resp.endHandler(v -> {
                        JsonObject json = new JsonObject(buf.toString());
                        JsonArray images = json.getJsonArray("data");
                        if (images.size() > 0) {
                            JsonObject image = images.getJsonObject(0); // Should be random !!!
                            String url = image.getJsonObject("images").getJsonObject("original")
                                    .getString("url");
                            msg.reply(url);
                        }
                        msg.reply("got response " + json);
                    });
                } else {
                    msg.reply("Error");
                }
            });
    req.exceptionHandler(err -> {
        msg.reply("Error: " + err.getMessage());
    });
    req.end();
}

From source file:io.nonobot.core.handlers.GitHubVerticle.java

License:Apache License

@Override
public void start() throws Exception {
    super.start();
    Router router = Router.router(vertx);
    bot.webRouter().mountSubRouter("/github", router);
    router.post().handler(ctx -> {// ww w.ja  va2 s  . c o m
        HttpServerRequest req = ctx.request();
        String event = req.getHeader("X-Github-Event");
        if (!"push".equals(event)) {
            req.response().setStatusCode(400).end("X-Github-Event " + event + " not handled");
            return;
        }
        String contentType = req.getHeader("Content-Type");
        if (!"application/json".equals(contentType)) {
            req.response().setStatusCode(400).end("Content-Type " + contentType + " not handled");
            return;
        }
        req.bodyHandler(body -> {
            JsonObject json = body.toJsonObject();
            req.response().end();
            String chatId = req.getParam("chat");
            JsonArray commits = json.getJsonArray("commits");
            if (chatId != null && commits != null && commits.size() > 0) {
                String commitWord = commits.size() > 1 ? "commits" : "commit";
                bot.chatRouter().sendMessage(new SendOptions().setChatId(chatId),
                        "Got " + commits.size() + " new " + commitWord + " from "
                                + json.getJsonObject("pusher").getString("name") + " on "
                                + json.getJsonObject("repository").getString("full_name"));
                for (int index = 0; index < commits.size(); index++) {
                    JsonObject commit = commits.getJsonObject(index);
                    bot.chatRouter().sendMessage(new SendOptions().setChatId(chatId),
                            "  * " + commit.getString("message") + " " + commit.getString("url"));
                }
            }
        });
    });
}

From source file:io.rebind.vertx.orientdb.model.RecordConverter.java

License:Apache License

public static void fromJson(JsonObject json, Record obj) {
    if (json.getValue("connections") instanceof JsonArray) {
        java.util.ArrayList<io.rebind.vertx.orientdb.model.Connection> list = new java.util.ArrayList<>();
        json.getJsonArray("connections").forEach(item -> {
            if (item instanceof JsonObject)
                list.add(new io.rebind.vertx.orientdb.model.Connection((JsonObject) item));
        });// w  w  w . j  a v  a  2s .  c o  m
        obj.setConnections(list);
    }
    if (json.getValue("iClass") instanceof String) {
        obj.setIClass((String) json.getValue("iClass"));
    }
    if (json.getValue("properties") instanceof JsonObject) {
        obj.setProperties(((JsonObject) json.getValue("properties")).copy());
    }
    if (json.getValue("rid") instanceof String) {
        obj.setRid((String) json.getValue("rid"));
    }
    if (json.getValue("version") instanceof Number) {
        obj.setVersion(((Number) json.getValue("version")).intValue());
    }
}

From source file:io.sqp.proxy.ServerVerticle.java

License:Open Source License

@Override
public void start() {
    // TODO: set subprotocols

    JsonObject config = config();

    String path = config.getString("path", DEFAULT_PATH);
    int port = config.getInteger("port", DEFAULT_PORT);
    int poolSize = config.getInteger("connectionPoolSize", DEFAULT_POOL_SIZE);
    JsonArray backendConfs = config.getJsonArray("backends");
    _executorService = Executors.newFixedThreadPool(10); // TODO: set this reasonably

    // Initialize the backend connection pool
    BackendConnectionPool connectionPool = new VertxBackendConnectionPool(vertx, poolSize, backendConfs);

    try {/*from  ww  w . j ava 2s. c  o  m*/
        connectionPool.init();
    } catch (ServerErrorException e) {
        _logger.log(Level.SEVERE, "Failed to create the connection pool", e);
        throw new RuntimeException(e.getMessage(), e.getCause());
    }

    HttpServerOptions options = new HttpServerOptions();
    int maxFrameSize = options.getMaxWebsocketFrameSize();

    // Create the actual server
    HttpServer server = vertx.createHttpServer(options);

    // For each incoming websocket connection: create a client connection object
    server.websocketHandler(socket -> {
        if (!socket.path().equals(path)) {
            socket.reject();
            return;
        }
        // TODO: check sub protocols
        new VertxClientConnection(_executorService, socket, connectionPool, maxFrameSize);
    });
    // start to listen
    server.listen(port, result -> {
        if (result.succeeded()) {
            _logger.log(Level.INFO, "Listening on port " + port + " and path '" + path + "'...");
            setStarted(true);
        } else {
            _logger.log(Level.SEVERE, "Failed to listen", result.cause());
            setStartingError(result.cause());
        }
    });
}

From source file:net.kuujo.vertigo.network.impl.NetworkImpl.java

License:Apache License

@Override
public void update(JsonObject network) {
    this.name = network.getString(NETWORK_NAME);
    if (this.name == null) {
        throw new NetworkFormatException("Network name is mandatory.");
    }//from  w w  w.  j a  v a2  s.  c  om
    JsonObject components = network.getJsonObject(NETWORK_COMPONENTS);
    if (components != null) {
        for (String name : components.fieldNames()) {
            this.components.add(
                    NetworkConfig.component(components.getJsonObject(name)).setName(name).setNetwork(this));
        }
    }
    JsonArray connections = network.getJsonArray(NETWORK_CONNECTIONS);
    if (connections != null) {
        for (Object connection : connections) {
            ConnectionConfig connectionConfig = NetworkConfig.connection((JsonObject) connection);
            SourceConfig source = connectionConfig.getSource();
            if (!source.getIsNetwork()) {
                String componentName = connectionConfig.getSource().getComponent();
                if (componentName == null) {
                    throw new NetworkFormatException("A connection source does not specify a component.");
                }
                ComponentConfig component = this.getComponent(componentName);
                if (component == null) {
                    throw new NetworkFormatException("No component with name " + componentName
                            + " was found while trying to create source vertigo connection.");
                }
                OutputConfig output = component.getOutput();
                if (output.getPort(source.getPort()) == null) {
                    output.addPort(source.getPort());
                }
            }
            TargetConfig target = connectionConfig.getTarget();
            if (!target.getIsNetwork()) {
                String componentName = connectionConfig.getTarget().getComponent();
                if (componentName == null) {
                    throw new NetworkFormatException("A connection target does not specify a component.");
                }
                ComponentConfig component = this.getComponent(componentName);
                if (component == null) {
                    throw new NetworkFormatException("No target component with name " + componentName
                            + " was found while trying to create target vertigo connection.");
                }
                InputConfig input = component.getInput();
                if (input.getPort(target.getPort()) == null) {
                    input.addPort(target.getPort());
                }
            }
            this.connections.add(connectionConfig);
        }
    }
}

From source file:net.sf.sgsimulator.sgsrest.vertx.services.GridLabSimulatorService.java

License:Open Source License

private void onInit(Vertx vertx, JsonObject config) throws IOException {
    config = config.getJsonObject("gridlab");
    int cycleTimeInMillis = config.getInteger("cycleTimeInMillis");// 60000;
    boolean intelligence = config.getBoolean("intelligence");// true;
    int moments = config.getInteger("moments");// 30;
    Double minRange = config.getDouble("minRange", null);
    Double maxRange = config.getDouble("maxRange", null);
    millisperwebpoll = config.getDouble("millisperwebpoll", null);
    boolean activeClients = config.getBoolean("activeClients");// true;
    // TODO parametrize
    Tariff tariff = new TariffExample();

    JsonArray sdjson = config.getJsonArray("startDate");
    JsonArray edjson = config.getJsonArray("endDate");
    Calendar calendarStart = Calendar.getInstance();
    calendarStart.set(sdjson.getInteger(0), sdjson.getInteger(1), sdjson.getInteger(2), sdjson.getInteger(3),
            sdjson.getInteger(4), sdjson.getInteger(5));

    Calendar calendarEnd = Calendar.getInstance();
    calendarEnd.set(edjson.getInteger(0), edjson.getInteger(1), edjson.getInteger(2), edjson.getInteger(3),
            edjson.getInteger(4), edjson.getInteger(5));

    String configurationFile = config.getString("configurationFile");
    String gridFile = config.getString("gridFile");
    // definition
    String scenarioFile = config.getString("scenarioFile");
    String gridLabFolder = config.getString("gridLabFolder");
    PATHS paths = new PATHS(configurationFile, gridFile, scenarioFile, gridLabFolder);

    Date[] dates = readSimulationTime(paths.getNetXmlSrcFile());
    long diffInMillies = calendarEnd.getTimeInMillis() - calendarStart.getTimeInMillis();

    int hoursOfSimulation = (int) TimeUnit.HOURS.convert(diffInMillies, TimeUnit.MILLISECONDS);
    startDate = calendarStart.getTime();
    init(title, startDate, cycleTimeInMillis, paths, intelligence, hoursOfSimulation, tariff, moments, minRange,
            maxRange, activeClients);/*from   w ww  . j  av  a2s.c om*/
}

From source file:org.apache.servicecomb.config.client.MemberDiscovery.java

License:Apache License

public void refreshMembers(JsonObject members) {
    List<String> newServerAddresses = new ArrayList<>();
    members.getJsonArray("instances").forEach(m -> {
        JsonObject instance = (JsonObject) m;
        if ("UP".equals(instance.getString("status", "UP"))) {
            String endpoint = instance.getJsonArray("endpoints").getString(0);
            String scheme = instance.getBoolean("isHttps", false) ? "https" : "http";
            newServerAddresses.add(scheme + SCHEMA_SEPRATOR
                    + endpoint.substring(endpoint.indexOf(SCHEMA_SEPRATOR) + SCHEMA_SEPRATOR.length()));
        }/*from www  .  j  a v  a  2s. co  m*/
    });

    synchronized (lock) {
        this.configServerAddresses.clear();
        this.configServerAddresses.addAll(newServerAddresses);
        Collections.shuffle(this.configServerAddresses);
    }
    LOGGER.info("New config center members: {}", this.configServerAddresses);
}