List of usage examples for io.vertx.core.http HttpClientResponse getHeader
@GenIgnore(GenIgnore.PERMITTED_TYPE) String getHeader(CharSequence headerName);
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(); }); }; }