Example usage for io.vertx.core.http HttpClientResponse bodyHandler

List of usage examples for io.vertx.core.http HttpClientResponse bodyHandler

Introduction

In this page you can find the example usage for io.vertx.core.http HttpClientResponse bodyHandler.

Prototype

@Fluent
HttpClientResponse bodyHandler(Handler<Buffer> bodyHandler);

Source Link

Document

Convenience method for receiving the entire request body in one piece.

Usage

From source file:com.hpe.sw.cms.verticle.ScanVerticle.java

License:Apache License

@Override
public void start() throws Exception {
    super.start();
    httpClient = vertx.createHttpClient();
    final String dricHost = config().getString("dric.host");
    final String swarmProtocol = config().getString("swarm.protocol");
    final String swarmHost = config().getString("swarm.host");
    final String swarmImage = config().getString("swarm.scan.image");
    final int scanMax = config().getInteger("scanner.max");

    getVertx().setPeriodic(config().getLong("scan.interval", INTERVAL), h -> {
        httpClient.getAbs(swarmProtocol + swarmHost + "/containers/json", new Handler<HttpClientResponse>() {
            @Override//from www .ja  v  a 2 s. c om
            public void handle(HttpClientResponse httpClientResponse) {
                httpClientResponse.bodyHandler(new Handler<Buffer>() {
                    @Override
                    public void handle(Buffer res) {
                        JsonArray containers = res.toJsonArray();
                        int currentRunning = 0;
                        for (Object obj : containers) {
                            JsonObject container = (JsonObject) obj;
                            if (swarmImage.equals(container.getString("Image"))) {
                                currentRunning++;
                            }
                        }
                        int fetchSize = scanMax - currentRunning;
                        if (fetchSize > 0) {
                            getVertx().eventBus().send(Events.IMAGES_UPDATED.name(), fetchSize, event -> {
                                Message msg = event.result();
                                if (msg != null) {
                                    JsonArray updates = (JsonArray) msg.body();
                                    for (Object obj : updates) {
                                        try {
                                            JsonObject image = (JsonObject) obj;
                                            processImage(dricHost, image.getString("host"),
                                                    image.getString("name"), image.getString("tag"));
                                        } catch (Exception e) {
                                            LOG.error("image sent to Scan error", e);
                                        }
                                    }
                                }
                            });
                        }

                    }
                });
            }
        }).end();
    });

    //delete exited containers of scan.
    getVertx().setPeriodic(config().getLong("scan.interval", INTERVAL), h -> {
        Set containerIds = getVertx().sharedData().getLocalMap("scanContainerIds").keySet();
        containerIds.forEach(containerId -> {
            httpClient.getAbs(swarmProtocol + swarmHost + "/containers/" + containerId + "/json",
                    new Handler<HttpClientResponse>() {
                        @Override
                        public void handle(HttpClientResponse httpClientResponse) {
                            httpClientResponse.bodyHandler(new Handler<Buffer>() {
                                @Override
                                public void handle(Buffer event) {
                                    if ("exited".equals(
                                            event.toJsonObject().getJsonObject("State").getString("Status"))) {
                                        String containerId = event.toJsonObject().getString("Id");
                                        httpClient
                                                .deleteAbs("http://" + swarmHost + "/containers/" + containerId,
                                                        new Handler<HttpClientResponse>() {
                                                            @Override
                                                            public void handle(HttpClientResponse event) {
                                                                LOG.info("delete container with response code :"
                                                                        + event.statusCode());
                                                                getVertx().sharedData()
                                                                        .getLocalMap("scanContainerIds")
                                                                        .remove(containerId);
                                                            }
                                                        })
                                                .end();
                                    }
                                }
                            });
                        }
                    }).end();
        });
    });

}

From source file:com.hpe.sw.cms.verticle.ScanVerticle.java

License:Apache License

private void processImage(String dricHost, String reigstryHost, String image, String tag) throws Exception {
    final String swarmProtocol = config().getString("swarm.protocol");
    final String swarmHost = config().getString("swarm.host");

    JsonObject hostConfig = new JsonObject();
    hostConfig.put("Privileged", true);

    JsonObject restartPolicy = new JsonObject();
    restartPolicy.put("Name", "no");

    JsonObject createContinaerJson = new JsonObject();
    createContinaerJson.put("AttachStdin", true);
    createContinaerJson.put("AttachStdout", true);
    createContinaerJson.put("AttachStderr", true);
    createContinaerJson.put("Tty", true);
    createContinaerJson.put("OpenStdin", true);
    createContinaerJson.put("StdinOnce", true);
    JsonArray cmds = new JsonArray();
    cmds.add("-l=file").add(dricHost).add(reigstryHost).add(image).add(tag);
    createContinaerJson.put("Cmd", cmds);
    createContinaerJson.put("Image", config().getString("swarm.scan.image"));
    createContinaerJson.put("StopSignal", "SIGTERM");
    createContinaerJson.put("", true);

    hostConfig.put("RestartPolicy", restartPolicy);
    createContinaerJson.put("HostConfig", hostConfig);

    httpClient.postAbs(swarmProtocol + swarmHost + "/containers/create", new Handler<HttpClientResponse>() {
        @Override/*w  ww. j  a  v  a  2s .  c  o m*/
        public void handle(HttpClientResponse event) {
            event.bodyHandler(new Handler<Buffer>() {
                @Override
                public void handle(Buffer buffer) {
                    JsonObject retVal = buffer.toJsonObject();
                    String containerId = retVal.getString("Id");
                    getVertx().sharedData().getLocalMap("scanContainerIds").put(containerId, containerId);
                    httpClient.postAbs(swarmProtocol + swarmHost + "/containers/" + containerId + "/start",
                            new Handler<HttpClientResponse>() {
                                @Override
                                public void handle(HttpClientResponse event) {
                                    LOG.info("start container with response code :" + event.statusCode());
                                }
                            }).end();
                }
            });
        }
    }).putHeader("content-type", "application/json")
            .putHeader("content-length", String.valueOf(createContinaerJson.toString().length()))
            .write(createContinaerJson.toString()).end();
}

From source file:com.hpe.sw.cms.verticle.WatcherVerticle.java

License:Apache License

@Override
public void start() throws Exception {
    httpClient = vertx.createHttpClient();
    getVertx().setPeriodic(config().getLong("registry.interval", INTERVAL), this::handler);
    vertx.eventBus().consumer(Events.EVENT_IMAGES_UPDATED.name(), msg -> {
        JsonArray images = (JsonArray) msg.body();
        if (images.size() > 0) {
            for (Object image : images) {
                JsonObject imageObj = (JsonObject) image;
                try {
                    String url = imageObj.getString("eventUrl");
                    httpClient.getAbs(url, new Handler<HttpClientResponse>() {
                        @Override
                        public void handle(HttpClientResponse httpClientResponse) {
                            httpClientResponse.bodyHandler(new Handler<Buffer>() {
                                @Override
                                public void handle(Buffer buffer) {
                                    JsonObject maniFestLib = buffer.toJsonObject();
                                    String tag = maniFestLib.getString("tag");
                                    LOG.debug("populateTagToImage " + tag);
                                    imageObj.put(Image.TAG, tag);
                                    populateAndSendImage(imageObj);
                                }//  w ww.j  a v  a 2  s. c  om
                            });
                        }
                    }).end();

                } catch (Exception e) {
                    LOG.error("error in populateTagToImage", e);
                }
            }

        }
    });
}

From source file:com.hpe.sw.cms.verticle.WatcherVerticle.java

License:Apache License

private void handler(Long h) {
    try {/*from www.j av  a 2  s  . com*/
        String protocol = config().getString("registry.protocol");
        String host = config().getString("registry.host");
        httpClient.getAbs(protocol + host + "/v2/_catalog", new Handler<HttpClientResponse>() {
            @Override
            public void handle(HttpClientResponse httpClientResponse) {
                httpClientResponse.bodyHandler(new Handler<Buffer>() {
                    @Override
                    public void handle(Buffer buffer) {
                        JsonObject repositoryLib = buffer.toJsonObject();
                        JsonArray repos = repositoryLib.getJsonArray("repositories");
                        repos.forEach(repo -> {
                            if (repo != null && !((String) repo).trim().equals("")) {
                                try {
                                    repo = ((String) repo).trim();
                                    String[] imagePart = ((String) repo).split("/");
                                    String imageName = String.join("/", imagePart);
                                    httpClient.getAbs(protocol + host + "/v2/" + imageName + "/tags/list",
                                            new Handler<HttpClientResponse>() {
                                                @Override
                                                public void handle(HttpClientResponse httpClientResponse) {
                                                    httpClientResponse.bodyHandler(new Handler<Buffer>() {
                                                        @Override
                                                        public void handle(Buffer buffer) {
                                                            JsonObject tagLib = buffer.toJsonObject();
                                                            JsonArray tags = tagLib.getJsonArray("tags");
                                                            for (Object tag : tags) {
                                                                if (tag != null
                                                                        && !((String) tag).trim().equals("")) {
                                                                    JsonObject imageObj = new JsonObject();
                                                                    imageObj.put("name", imageName);
                                                                    imageObj.put("tag", tag);
                                                                    String dest = host;
                                                                    imageObj.put("host", dest);
                                                                    populateAndSendImage(imageObj);
                                                                }
                                                            }
                                                        }
                                                    });
                                                }
                                            }).end();

                                } catch (Exception e) {
                                    LOG.error("error in reading registry", e);
                                }
                            }
                        });
                    }
                });
            }
        }).end();
    } catch (Exception e) {
        LOG.error("error in registry handler", e);
    }
}

From source file:com.hpe.sw.cms.verticle.WatcherVerticle.java

License:Apache License

private void populateAndSendImage(JsonObject imageObj) {
    try {/*w  ww.  jav  a 2 s .  c o m*/
        String protocol = config().getString("registry.protocol");
        String host = config().getString("registry.host");
        httpClient.getAbs(protocol + host + "/v2/" + imageObj.getString("name") + "/manifests/"
                + imageObj.getString("tag"), new Handler<HttpClientResponse>() {
                    @Override
                    public void handle(HttpClientResponse httpClientResponse) {
                        httpClientResponse.bodyHandler(new Handler<Buffer>() {
                            @Override
                            public void handle(Buffer buffer) {
                                JsonObject maniFestLib = buffer.toJsonObject();
                                JsonArray signs = maniFestLib.getJsonArray("signatures");
                                if (signs != null && signs.size() > 0) {
                                    StringBuffer fullSign = new StringBuffer();
                                    for (Object sign : signs.getList()) {
                                        fullSign.append(((Map) sign).get("signature")).append("|");
                                    }
                                    imageObj.put(Image.SIGN, fullSign);
                                    imageObj.put(Image.IS_SCANNED, false);
                                    imageObj.put(Image.IS_ENRICHED, false);
                                    imageObj.put(Image.IS_SCANNED_FAILED, false);
                                    if (imageObj.getLong(Image.TIMESTAMP) == null) {
                                        imageObj.put(Image.TIMESTAMP, new Date().getTime());
                                    }
                                    vertx.eventBus().publish(Events.NEW_IMAGE.name(), imageObj);
                                    LOG.info("Event Image with populateSignToImage", imageObj);
                                }
                            }
                        });
                    }
                }).end();
    } catch (Exception e) {
        LOG.error("error in populateSignToImage", e);
    }
}

From source file:com.hubrick.vertx.rest.impl.DefaultRestClientRequest.java

License:Apache License

private void handleResponse(HttpClientResponse httpClientResponse, Class clazz) {
    final Integer firstStatusDigit = httpClientResponse.statusCode() / 100;
    if (firstStatusDigit == 4 || firstStatusDigit == 5) {
        httpClientResponse.bodyHandler((buffer) -> {
            httpClientResponse.exceptionHandler(null);
            if (log.isWarnEnabled()) {
                final String body = new String(buffer.getBytes(), Charsets.UTF_8);
                log.warn("Http request to {} FAILED. Return status: {}, message: {}, body: {}", new Object[] {
                        uri, httpClientResponse.statusCode(), httpClientResponse.statusMessage(), body });
            }/*  w w  w .java  2 s . co  m*/

            RuntimeException exception = null;
            switch (firstStatusDigit) {
            case 4:
                exception = new HttpClientErrorException(httpClientResponse, httpMessageConverters,
                        buffer.getBytes());
                break;
            case 5:
                exception = new HttpServerErrorException(httpClientResponse, httpMessageConverters,
                        buffer.getBytes());
                break;
            }
            handleException(exception);
        });
    } else {
        httpClientResponse.bodyHandler((buffer) -> {
            httpClientResponse.exceptionHandler(null);
            if (log.isDebugEnabled()) {
                final String body = new String(buffer.getBytes(), Charsets.UTF_8);
                log.debug("Http request to {} {} SUCCESSFUL. Return status: {}, message: {}, body: {}",
                        new Object[] { method, uri, httpClientResponse.statusCode(),
                                httpClientResponse.statusMessage(), body });
            }

            final RestClientResponse<T> restClientResponse = new DefaultRestClientResponse(
                    httpMessageConverters, clazz, buffer.getBytes(), httpClientResponse, exceptionHandler);

            handleResponse(restClientResponse);
        });
    }
}

From source file:fr.wseduc.smsproxy.providers.ovh.OVHSmsProvider.java

License:Apache License

private void retrieveSmsService(final Message<JsonObject> message, final Handler<String> callBack) {
    ovhRestClient.get("/sms/", new JsonObject(), new Handler<HttpClientResponse>() {
        public void handle(final HttpClientResponse response) {
            logger.debug("[OVH][retrieveSmsService] /sms/ call returned : " + response);
            if (response == null) {
                logger.error("[OVH][retrieveSmsService] /sms/ call response is null.");
                sendError(message, "ovh.apicall.error", null);
                return;
            }//from   w w  w .j  a va2s .c  om
            response.bodyHandler(new Handler<Buffer>() {
                public void handle(Buffer body) {
                    if (response.statusCode() == 200) {
                        logger.debug("[OVH][retrieveSmsService] Ok with body : " + body);
                        JsonArray smsServices = new JsonArray(body.toString("UTF-8"));
                        callBack.handle(smsServices.getString(0));
                    } else {
                        logger.error("[OVH][retrieveSmsService] /sms/ reponse code [" + response.statusCode()
                                + "] : " + body.toString("UTF-8"));
                        sendError(message, body.toString("UTF-8"), null);
                    }
                }
            });
        }
    });
}

From source file:fr.wseduc.smsproxy.providers.ovh.OVHSmsProvider.java

License:Apache License

@Override
public void sendSms(final Message<JsonObject> message) {
    final JsonObject parameters = message.body().getJsonObject("parameters");
    logger.debug("[OVH][sendSms] Called with parameters : " + parameters);

    final Handler<HttpClientResponse> resultHandler = new Handler<HttpClientResponse>() {
        public void handle(HttpClientResponse response) {
            if (response == null) {
                sendError(message, "ovh.apicall.error", null);
            } else {
                response.bodyHandler(new Handler<Buffer>() {
                    public void handle(Buffer body) {
                        final JsonObject response = new JsonObject(body.toString());
                        final JsonArray invalidReceivers = response.getJsonArray("invalidReceivers",
                                new JsonArray());
                        final JsonArray validReceivers = response.getJsonArray("validReceivers",
                                new JsonArray());

                        if (validReceivers.size() == 0) {
                            sendError(message, "invalid.receivers.all", null, new JsonObject(body.toString()));
                        } else if (invalidReceivers.size() > 0) {
                            sendError(message, "invalid.receivers.partial", null,
                                    new JsonObject(body.toString()));
                        } else {
                            message.reply(response);
                        }/*from  w  w  w.j a v a  2 s .  c o m*/
                    }
                });
            }
        }
    };

    Handler<String> serviceCallback = new Handler<String>() {
        public void handle(String service) {
            if (service == null) {
                sendError(message, "ovh.apicall.error", null);
            } else {
                ovhRestClient.post("/sms/" + service + "/jobs/", parameters, resultHandler);
            }
        }
    };

    retrieveSmsService(message, serviceCallback);
}

From source file:fr.wseduc.smsproxy.providers.ovh.OVHSmsProvider.java

License:Apache License

@Override
public void getInfo(final Message<JsonObject> message) {
    final JsonObject parameters = message.body().getJsonObject("parameters");
    logger.debug("[OVH][getInfo] Called with parameters : " + parameters);

    retrieveSmsService(message, new Handler<String>() {
        public void handle(String service) {
            if (service == null) {
                sendError(message, "ovh.apicall.error", null);
            } else {
                ovhRestClient.get("/sms/" + service, parameters, new Handler<HttpClientResponse>() {
                    public void handle(HttpClientResponse response) {
                        if (response == null) {
                            sendError(message, "ovh.apicall.error", null);
                            return;
                        }/*w ww  .j  ava  2 s. c om*/
                        response.bodyHandler(new Handler<Buffer>() {
                            public void handle(Buffer body) {
                                final JsonObject response = new JsonObject(body.toString());
                                message.reply(response);
                            }
                        });
                    }
                });
            }
        }
    });
}

From source file:io.advantageous.qbit.vertx.http.client.HttpVertxClient.java

License:Apache License

private void handleResponse(final HttpRequest request, final HttpClientResponse httpClientResponse) {
    final int statusCode = httpClientResponse.statusCode();
    final MultiMap<String, String> headers = httpClientResponse.headers().size() == 0 ? MultiMap.empty()
            : new MultiMapWrapper(httpClientResponse.headers());

    if (debug) {/*from ww  w  .jav  a  2  s  .  c  o m*/
        responseCount++;
        puts("status code", httpClientResponse.statusCode(), responseCount);
    }

    httpClientResponse.bodyHandler(buffer -> {

        if (request.getReceiver().isText()) {
            final String body = buffer.toString("UTF-8");

            if (debug) {
                puts("got body", "BODY");
            }

            handleResponseFromServer(request, statusCode, headers, body);
        } else {
            final byte[] body = buffer.getBytes();
            handleResponseFromServerBytes(request, statusCode, headers, body);

        }
    });
}