Example usage for io.vertx.core.http HttpClient getAbs

List of usage examples for io.vertx.core.http HttpClient getAbs

Introduction

In this page you can find the example usage for io.vertx.core.http HttpClient getAbs.

Prototype

HttpClientRequest getAbs(String absoluteURI, Handler<AsyncResult<HttpClientResponse>> responseHandler);

Source Link

Document

Create an HTTP GET request to send to the server using an absolute URI, specifying a response handler to receive the response

Usage

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 w w  w. j  a  va 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;
}