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

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

Introduction

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

Prototype

@GenIgnore(GenIgnore.PERMITTED_TYPE)
String getHeader(CharSequence headerName);

Source Link

Document

Return the first header value with the specified name

Usage

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

License:Apache License

static void processGraphTokenResponse(HttpClientResponse resp, RoutingContext ctx, HttpClient httpClient,
        CookieSessionHandler sessionHandler, List<GraphQuery> graphQueries, String originalUrl) {
    if (resp.statusCode() != OK.code()) {
        resp.bodyHandler(body -> {//from  ww w  . j a va 2 s.c  o  m
            logger.warn("Failed to fetch graph access token: " + resp.statusMessage() + " - "
                    + resp.getHeader(WWW_AUTHENTICATE) + " ::: " + body);
            ctx.reroute(GET, UNAUTHORIZED_PATH);
        });
        return;
    }
    resp.bodyHandler(body -> {
        JsonObject json = body.toJsonObject();
        String token = json.getString("access_token");
        String refreshToken = json.getString("refresh_token");
        // clean out sensitive stuff
        json.put("access_token", "<censored>");
        json.put("refresh_token", "<censored>");

        logger.debug("Got graph access response: {}", json);
        final AtomicInteger pendingRequests = new AtomicInteger(graphQueries.size());
        final Map<String, String> sessionData = new HashMap<>();
        ofNullable(refreshToken).ifPresent(t -> sessionData.put(GRAPH_ACCESS_TOKEN_KEY, t));
        for (GraphQuery query : graphQueries) {
            String clientRequestId = UUID.randomUUID().toString();
            logger.debug("Requesting " + query.graphQueryURI + "[" + clientRequestId + "]");
            httpClient.getAbs(query.graphQueryURI).putHeader(AUTHORIZATION, "Bearer " + token)
                    .putHeader(ACCEPT, APPLICATION_JSON).putHeader("client-request-id", clientRequestId)
                    .setTimeout(SECONDS.toMillis(10)).exceptionHandler(err -> {
                        if (pendingRequests.getAndSet(-1) != -1) {
                            logger.error("Failed to fetch user information [" + clientRequestId + "]", err);
                            ctx.reroute(GET, UNAUTHORIZED_PATH);
                        }
                    }).handler(r -> processMicrosoftUserInformation(r, ctx, sessionHandler,
                            query.headerMappings, originalUrl, pendingRequests, sessionData, clientRequestId))
                    .end();
        }
    });
}

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

License:Apache License

static void processMicrosoftUserInformation(HttpClientResponse resp, RoutingContext ctx,
        CookieSessionHandler sessionHandler, Map<String, String> headerMappings, String originalUrl,
        AtomicInteger pendingRequests, Map<String, String> sessionData, String clientRequestId) {
    if (resp.statusCode() != OK.code()) {
        if (pendingRequests.getAndSet(-1) != -1) {
            logger.warn("Failed to fetch graph information [" + clientRequestId + "]: " + resp.statusMessage()
                    + " - " + resp.getHeader(WWW_AUTHENTICATE));
            ctx.reroute(GET, UNAUTHORIZED_PATH);
            return;
        }/*from w w  w  .  ja v a 2s .c  om*/
    }

    resp.bodyHandler(body -> {
        JsonObject response = body.toJsonObject();
        logger.debug("Got graph response [" + clientRequestId + "]: {}", response);
        synchronized (sessionData) {
            headerMappings.forEach((header, pointer) -> ofNullable(JsonPointer.fetch(response, pointer))
                    .ifPresent(val -> sessionData.put(header, val)));
        }
        if (pendingRequests.decrementAndGet() == 0) {
            sessionHandler.setSessionData(ctx, sessionData);
            ctx.response().setStatusCode(TEMPORARY_REDIRECT.code())
                    .putHeader(CACHE_CONTROL, "no-cache, no-store, must-revalidate").putHeader(EXPIRES, "0")
                    .putHeader(LOCATION, originalUrl).end();
        }
    });
}

From source file:org.apache.servicecomb.foundation.vertx.http.ReadStreamPart.java

License:Apache License

public ReadStreamPart(Context context, HttpClientResponse httpClientResponse) {
    this(context, (ReadStream<Buffer>) httpClientResponse);

    setSubmittedFileName(HttpUtils//from w  w w.j av a 2 s.  c om
            .parseFileNameFromHeaderValue(httpClientResponse.getHeader(HttpHeaders.CONTENT_DISPOSITION)));

    String contentType = httpClientResponse.getHeader(HttpHeaders.CONTENT_TYPE);
    if (StringUtils.isNotEmpty(contentType)) {
        this.contentType(contentType);
    }
}

From source file:org.apache.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.java

License:Apache License

private Handler<RestResponse> syncHandlerForInstances(CountDownLatch countDownLatch,
        MicroserviceInstances mInstances) {
    return restResponse -> {
        RequestContext requestContext = restResponse.getRequestContext();
        HttpClientResponse response = restResponse.getResponse();
        if (response == null) {
            // ?SC
            if (requestContext.getRetryTimes() <= ipPortManager.getMaxRetryTimes()) {
                retry(requestContext, syncHandlerForInstances(countDownLatch, mInstances));
            } else {
                countDownLatch.countDown();
            }//w w  w .j  a va 2s .c  om
            return;
        }
        response.bodyHandler(bodyBuffer -> {
            try {
                mInstances.setRevision(response.getHeader("X-Resource-Revision"));
                switch (response.statusCode()) {
                case 304:
                    mInstances.setNeedRefresh(false);
                    break;
                case 200:
                    mInstances.setInstancesResponse(
                            JsonUtils.readValue(bodyBuffer.getBytes(), FindInstancesResponse.class));
                    break;
                case 400: {
                    @SuppressWarnings("unchecked")
                    Map<String, Object> error = JsonUtils.readValue(bodyBuffer.getBytes(), Map.class);
                    if ("400012".equals(error.get("errorCode"))) {
                        mInstances.setMicroserviceNotExist(true);
                        mInstances.setNeedRefresh(false);
                    }
                    LOGGER.warn("failed to findInstances: " + bodyBuffer.toString());
                }
                    break;
                default:
                    LOGGER.warn("failed to findInstances: " + bodyBuffer.toString());
                    break;
                }
            } catch (Exception e) {
                LOGGER.warn("read value failed and response message is {}", bodyBuffer.toString());
            }
            countDownLatch.countDown();
        });
    };
}