.headers(theHeaders -> {
.method(method) .uri(uri) .headers(h -> h.addAll(filterHeaders(headers)));
.headers(httpHeaders -> { httpHeaders.addAll(request.getHeaders());
RequestBodySpec reqBodySpec = webClient.method(httpMethod). uri(backendServiceUrlPrefix.concat(path)). headers(httpHeaders ->
}).headers(headers -> {
.uri(tokenUri) .accept(MediaType.APPLICATION_JSON) .headers(headers(clientRegistration)) .body(body) .exchange()
private Mono<TokenWrapper> doRenew(TokenWrapper tokenWrapper) { Mono<VaultResponse> exchange = webClient .post() .uri("auth/token/renew-self") .headers( httpHeaders -> httpHeaders.putAll(VaultHttpHeaders .from(tokenWrapper.token))).retrieve() .bodyToMono(VaultResponse.class); return exchange .flatMap(response -> { LoginToken renewed = LoginTokenUtil.from(response.getRequiredAuth()); if (!isExpired(renewed)) { return Mono .just(new TokenWrapper(renewed, tokenWrapper.revocable)); } if (logger.isDebugEnabled()) { Duration validTtlThreshold = getRefreshTrigger() .getValidTtlThreshold(renewed); logger.info(String .format("Token TTL (%s) exceeded validity TTL threshold (%s). Dropping token.", renewed.getLeaseDuration(), validTtlThreshold)); } else { logger.info("Token TTL exceeded validity TTL threshold. Dropping token."); } dropCurrentToken(); return EMPTY; }); }
@Override public Mono<OAuth2AccessTokenResponse> getTokenResponse(OAuth2AuthorizationCodeGrantRequest authorizationGrantRequest) { return Mono.defer(() -> { ClientRegistration clientRegistration = authorizationGrantRequest.getClientRegistration(); OAuth2AuthorizationExchange authorizationExchange = authorizationGrantRequest.getAuthorizationExchange(); String tokenUri = clientRegistration.getProviderDetails().getTokenUri(); BodyInserters.FormInserter<String> body = body(authorizationExchange); return this.webClient.post() .uri(tokenUri) .accept(MediaType.APPLICATION_JSON) .headers(headers -> headers.setBasicAuth(clientRegistration.getClientId(), clientRegistration.getClientSecret())) .body(body) .exchange() .flatMap(response -> response.body(oauth2AccessTokenResponse())) .map(response -> { if (response.getAccessToken().getScopes().isEmpty()) { response = OAuth2AccessTokenResponse.withResponse(response) .scopes(authorizationExchange.getAuthorizationRequest().getScopes()) .build(); } return response; }); }); }
/** * Revoke a {@link VaultToken}. * * @param token the token to revoke, must not be {@literal null}. */ protected Mono<Void> revoke(VaultToken token) { return webClient.post().uri("auth/token/revoke-self").headers(httpHeaders -> { httpHeaders.addAll(VaultHttpHeaders.from(token)); }).retrieve().bodyToMono(String.class).then() .onErrorResume(WebClientResponseException.class, e -> { logger.warn(format("Could not revoke token", e)); return Mono.empty(); }).onErrorResume(Exception.class, e -> { logger.warn("Could not revoke token", e); return Mono.empty(); }).then(); }
@Override public Publisher<Object> executeRequest(ReactiveHttpRequest request) { ReactiveHttpRequest requestPreprocessed = requestInterceptor.apply(request); logger.logRequest(methodTag, requestPreprocessed); long start = System.currentTimeMillis(); WebClient.ResponseSpec response = webClient.method(requestPreprocessed.method()) .uri(requestPreprocessed.uri()) .headers(httpHeaders -> setUpHeaders(requestPreprocessed, httpHeaders)) .body(provideBody(requestPreprocessed)) .retrieve() .onStatus(httpStatus -> true, resp -> handleResponseStatus(metadata.configKey(), resp, start)); if (returnPublisherType == Mono.class) { return response.bodyToMono(returnActualType).map(responseLogger(start)); } else { return response.bodyToFlux(returnActualType).map(responseLogger(start)); } }
private Mono<ClientResponse> post(URI uri, String destination, Object value) { Mono<ClientResponse> result = client.post().uri(uri) .headers(headers -> headers(headers, destination, value)) .body(BodyInserters.fromObject(value)).exchange(); if (this.debug) { result = result.log(); } return result; }
@Override public Mono<ReactiveHttpResponse> executeRequest(ReactiveHttpRequest request) { return webClient.method(HttpMethod.valueOf(request.method())) .uri(request.uri()) .headers(httpHeaders -> setUpHeaders(request, httpHeaders)) .body(provideBody(request)) .exchange() .onErrorMap(ex -> ex instanceof io.netty.handler.timeout.ReadTimeoutException, ReadTimeoutException::new) .map(response -> new WebReactiveHttpResponse(response, returnPublisherType, returnActualType)); }
private Mono<ClientResponse> post(URI uri, String destination, Object value) { Mono<ClientResponse> result = client.post().uri(uri) .headers(headers -> headers(headers, destination, value)) .body(BodyInserters.fromObject(value)).exchange(); if (this.debug) { result = result.log(); } return result; }
this.webClient.method(httpMethod) .uri(b -> uriSupplier.get()) .headers(headers -> headers.putAll(httpRequest.getHeaders()));
private Mono<Void> doHttpInvoke() { if (requestDTO.getHttpMethod().equals(HttpMethodEnum.GET.getName())) { String uri = buildRealURL(); if (StringUtils.isNoneBlank(requestDTO.getExtInfo())) { uri = uri + "?" + GSONUtils.getInstance().toGetParam(requestDTO.getExtInfo()); } return WEB_CLIENT.get().uri(uri) .headers(httpHeaders -> { httpHeaders.addAll(exchange.getRequest().getHeaders()); httpHeaders.remove(HttpHeaders.HOST); }) .exchange() .doOnError(e -> LogUtils.error(LOGGER, e::getMessage)) .timeout(Duration.ofMillis(timeout)) .flatMap(this::doNext); } else if (requestDTO.getHttpMethod().equals(HttpMethodEnum.POST.getName())) { return WEB_CLIENT.post().uri(buildRealURL()) .headers(httpHeaders -> { httpHeaders.addAll(exchange.getRequest().getHeaders()); httpHeaders.remove(HttpHeaders.HOST); }) .contentType(buildMediaType()) .body(BodyInserters.fromDataBuffers(exchange.getRequest().getBody())) .exchange() .doOnError(e -> LogUtils.error(LOGGER, e::getMessage)) .timeout(Duration.ofMillis(timeout)) .flatMap(this::doNext); } return Mono.empty(); }
private Mono<ResponseEntity<T>> exchange(RequestEntity<?> requestEntity) { Type type = this.responseType; RequestBodySpec builder = rest.method(requestEntity.getMethod()) .uri(requestEntity.getUrl()) .headers(headers -> addHeaders(headers, requestEntity.getHeaders())); Mono<ClientResponse> result; if (requestEntity.getBody() instanceof Publisher) { @SuppressWarnings("unchecked") Publisher<Object> publisher = (Publisher<Object>) requestEntity.getBody(); result = builder.body(publisher, Object.class).exchange(); } else if (requestEntity.getBody() != null) { result = builder.body(BodyInserters.fromObject(requestEntity.getBody())) .exchange(); } else { if (hasBody) { result = builder.headers( headers -> addHeaders(headers, exchange.getRequest().getHeaders())) .body(exchange.getRequest().getBody(), DataBuffer.class) .exchange(); } else { result = builder.headers( headers -> addHeaders(headers, exchange.getRequest().getHeaders())) .exchange(); } } return result.flatMap(response -> response.toEntity(ParameterizedTypeReference.forType(type))); }
.uri(tokenUri) .accept(MediaType.APPLICATION_JSON) .headers(headers(clientRegistration)) .body(body) .exchange()
@Override public Mono<OAuth2AccessTokenResponse> getTokenResponse(OAuth2AuthorizationCodeGrantRequest authorizationGrantRequest) { return Mono.defer(() -> { ClientRegistration clientRegistration = authorizationGrantRequest.getClientRegistration(); OAuth2AuthorizationExchange authorizationExchange = authorizationGrantRequest.getAuthorizationExchange(); String tokenUri = clientRegistration.getProviderDetails().getTokenUri(); BodyInserters.FormInserter<String> body = body(authorizationExchange); return this.webClient.post() .uri(tokenUri) .accept(MediaType.APPLICATION_JSON) .headers(headers -> headers.setBasicAuth(clientRegistration.getClientId(), clientRegistration.getClientSecret())) .body(body) .exchange() .flatMap(response -> response.body(oauth2AccessTokenResponse())) .map(response -> { if (response.getAccessToken().getScopes().isEmpty()) { response = OAuth2AccessTokenResponse.withResponse(response) .scopes(authorizationExchange.getAuthorizationRequest().getScopes()) .build(); } return response; }); }); }