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

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

Introduction

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

Prototype

HttpClientRequest postAbs(String absoluteURI);

Source Link

Document

Create an HTTP POST request to send to the server using an absolute URI

Usage

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

License:Apache License

private static void finalizeAuthentication(RoutingContext ctx, JsonObject adAuth, HttpClient httpClient,
        CookieSessionHandler sessionHandler, List<GraphQuery> graphQueries, String redirectUri,
        RedirectTokenService redirectTokenService) {
    Map<String, String> params = redirectTokenService.getParameters(ctx, ctx.request().getParam("state"));
    if (params == null || params.get("a") == null) {
        logger.error("Missing state parameter");
        ctx.reroute(GET, UNAUTHORIZED_PATH);
        return;/*from  ww w  . j  a v  a  2 s.  co m*/
    }
    String originalUrl = params.get("a");
    String code = ctx.request().getParam("code");
    String graphScopes = adAuth.getString("scope");
    Buffer form = Buffer
            .buffer("code=" + urlEncode(code) + "&client_id=" + urlEncode(adAuth.getString("clientId"))
                    + "&scope=" + urlEncode(graphScopes) + "&grant_type=authorization_code" + "&client_secret="
                    + urlEncode(adAuth.getString("clientSecret")) + "&redirect_uri=" + urlEncode(redirectUri));
    String tokenUrl = adAuth.getJsonObject("openIdConfig").getString("token_endpoint");
    logger.debug("Requesting graph access token from " + tokenUrl + " with [ " + form + "]");
    httpClient.postAbs(tokenUrl).putHeader(ACCEPT, APPLICATION_JSON)
            .putHeader(CONTENT_TYPE, APPLICATION_X_WWW_FORM_URLENCODED)
            .putHeader(CONTENT_LENGTH, String.valueOf(form.length())).setTimeout(SECONDS.toMillis(10))
            .exceptionHandler(err -> {
                logger.error("Failed to fetch graph access token", err);
                ctx.reroute(GET, UNAUTHORIZED_PATH);
            }).handler(resp -> processGraphTokenResponse(resp, ctx, httpClient, sessionHandler, graphQueries,
                    originalUrl))
            .end(form);
}

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 -> {//w w  w.  ja v  a  2 s.  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;
}