Java 类org.springframework.http.client.reactive.ClientHttpConnector 实例源码

项目:spring-vault    文件:ReactiveVaultTemplate.java   
/**
 * Create a new {@link ReactiveVaultTemplate} with a {@link VaultEndpointProvider},
 * {@link ClientHttpConnector} and {@link VaultTokenSupplier}.
 *
 * @param endpointProvider must not be {@literal null}.
 * @param connector must not be {@literal null}.
 * @param vaultTokenSupplier must not be {@literal null}.
 */
public ReactiveVaultTemplate(VaultEndpointProvider endpointProvider,
        ClientHttpConnector connector, VaultTokenSupplier vaultTokenSupplier) {

    Assert.notNull(endpointProvider, "VaultEndpointProvider must not be null");
    Assert.notNull(connector, "ClientHttpConnector must not be null");
    Assert.notNull(vaultTokenSupplier, "AuthenticationSupplier must not be null");

    ExchangeFilterFunction filter = ofRequestProcessor(request -> vaultTokenSupplier
            .getVaultToken().map(token -> {

                return ClientRequest.from(request).headers(headers -> {
                    headers.set(VaultHttpHeaders.VAULT_TOKEN, token.getToken());
                }).build();
            }));

    this.statelessClient = ReactiveVaultClients.createWebClient(endpointProvider,
            connector);
    this.sessionClient = ReactiveVaultClients
            .createWebClient(endpointProvider, connector).mutate().filter(filter)
            .build();
}
项目:spring-vault    文件:ClientHttpConnectorFactory.java   
/**
 * Create a {@link ClientHttpConnector} for the given {@link ClientOptions} and
 * {@link SslConfiguration}.
 *
 * @param options must not be {@literal null}
 * @param sslConfiguration must not be {@literal null}
 * @return a new {@link ClientHttpConnector}.
 */
public static ClientHttpConnector create(ClientOptions options,
        SslConfiguration sslConfiguration) {

    return new ReactorClientHttpConnector(builder -> {

        if (hasSslConfiguration(sslConfiguration)) {

            builder.sslSupport(sslContextBuilder -> {
                configureSsl(sslConfiguration, sslContextBuilder);
            }).poolResources(
                    PoolResources.elastic("vault-http-"
                            + POOL_COUNTER.incrementAndGet()));
        }

        builder.sslHandshakeTimeout(options.getConnectionTimeout());
        builder.option(ChannelOption.CONNECT_TIMEOUT_MILLIS,
                Math.toIntExact(options.getConnectionTimeout().toMillis()));
    });
}
项目:spring-vault    文件:AuthenticationStepsOperatorUnitTests.java   
@Test
public void justLoginRequestShouldLogin() {

    ClientHttpRequest request = new MockClientHttpRequest(HttpMethod.POST,
            "/auth/cert/login");
    MockClientHttpResponse response = new MockClientHttpResponse(HttpStatus.OK);
    response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
    response.setBody("{"
            + "\"auth\":{\"client_token\":\"my-token\", \"renewable\": true, \"lease_duration\": 10}"
            + "}");
    ClientHttpConnector connector = (method, uri, fn) -> fn.apply(request).then(
            Mono.just(response));

    WebClient webClient = WebClient.builder().clientConnector(connector).build();

    AuthenticationSteps steps = AuthenticationSteps.just(post("/auth/{path}/login",
            "cert").as(VaultResponse.class));

    StepVerifier.create(login(steps, webClient))
            .expectNext(VaultToken.of("my-token")).verifyComplete();
}
项目:spring-vault    文件:AuthenticationStepsOperatorUnitTests.java   
@Test
public void justLoginShouldFail() {

    ClientHttpRequest request = new MockClientHttpRequest(HttpMethod.POST,
            "/auth/cert/login");
    MockClientHttpResponse response = new MockClientHttpResponse(
            HttpStatus.BAD_REQUEST);
    ClientHttpConnector connector = (method, uri, fn) -> fn.apply(request).then(
            Mono.just(response));

    WebClient webClient = WebClient.builder().clientConnector(connector).build();

    AuthenticationSteps steps = AuthenticationSteps.just(post("/auth/{path}/login",
            "cert").as(VaultResponse.class));

    StepVerifier.create(login(steps, webClient)).expectError().verify();
}
项目:reactive-customer-service    文件:CustomerServiceTest.java   
private WebClient createSSLWebClient() throws IOException {

        /* Create a Reactor connector and tell it to trust our certificate */
        final File pemFile = pemResource.getFile();
        final ClientHttpConnector clientConnector = new ReactorClientHttpConnector(
                options -> options.sslSupport(builder -> builder.trustManager(pemFile)));

        /* Build a WebClient with the custom connector */
        return WebClient.builder()
                .baseUrl(String.format("https://127.0.0.1:%d", port))
                .clientConnector(clientConnector)
                .build();
    }
项目:spring-vault    文件:ReactiveVaultClients.java   
/**
 * Create a {@link WebClient} configured with {@link VaultEndpoint} and
 * {@link ClientHttpConnector}. The client accepts relative URIs without a leading
 * slash that are expanded to use {@link VaultEndpoint}.
 * <p>
 * Requires Jackson 2 for Object-to-JSON mapping.
 *
 * @param endpointProvider must not be {@literal null}.
 * @param connector must not be {@literal null}.
 * @return the configured {@link WebClient}.
 */
public static WebClient createWebClient(VaultEndpointProvider endpointProvider,
        ClientHttpConnector connector) {

    Assert.notNull(endpointProvider, "VaultEndpointProvider must not be null");
    Assert.notNull(connector, "ClientHttpConnector must not be null");

    UriBuilderFactory uriBuilderFactory = VaultClients
            .createUriBuilderFactory(endpointProvider);

    ExchangeStrategies strategies = ExchangeStrategies.builder()
            .codecs(configurer -> {

                CustomCodecs cc = configurer.customCodecs();

                cc.decoder(new ByteArrayDecoder());
                cc.decoder(new Jackson2JsonDecoder());
                cc.decoder(StringDecoder.allMimeTypes(false));

                cc.encoder(new ByteArrayEncoder());
                cc.encoder(new Jackson2JsonEncoder());

            }).build();

    return WebClient.builder().uriBuilderFactory(uriBuilderFactory)
            .exchangeStrategies(strategies).clientConnector(connector).build();
}
项目:spring-vault    文件:ReactiveVaultClients.java   
/**
 * Create a {@link WebClient} configured with {@link VaultEndpoint} and
 * {@link ClientHttpConnector}. The client accepts relative URIs without a leading
 * slash that are expanded to use {@link VaultEndpoint}.
 * <p>
 * Requires Jackson 2 for Object-to-JSON mapping.
 *
 * @param endpoint must not be {@literal null}.
 * @param connector must not be {@literal null}.
 * @return the configured {@link WebClient}.
 */
public static WebClient createWebClient(VaultEndpoint endpoint,
        ClientHttpConnector connector) {
    return createWebClient(SimpleVaultEndpointProvider.of(endpoint), connector);
}
项目:spring-vault    文件:AbstractReactiveVaultConfiguration.java   
/**
 * Create a {@link ClientHttpConnector} configured with {@link ClientOptions} and
 * {@link org.springframework.vault.support.SslConfiguration}.
 *
 * @return the {@link ClientHttpConnector} instance.
 * @see #clientOptions()
 * @see #sslConfiguration()
 */
protected ClientHttpConnector clientHttpConnector() {
    return ClientHttpConnectorFactory.create(clientOptions(), sslConfiguration());
}
项目:spring-vault    文件:ReactiveVaultTemplate.java   
/**
 * Create a new {@link ReactiveVaultTemplate} with a {@link VaultEndpoint},
 * {@link ClientHttpConnector} and {@link VaultTokenSupplier}.
 *
 * @param vaultEndpoint must not be {@literal null}.
 * @param connector must not be {@literal null}.
 * @param vaultTokenSupplier must not be {@literal null}.
 */
public ReactiveVaultTemplate(VaultEndpoint vaultEndpoint,
        ClientHttpConnector connector, VaultTokenSupplier vaultTokenSupplier) {
    this(SimpleVaultEndpointProvider.of(vaultEndpoint), connector, vaultTokenSupplier);
}