All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.gravitee.am.authdevice.notifier.http.provider.spring.HttpAuthenticationDeviceProviderSpringConfiguration Maven / Gradle / Ivy

There is a newer version: 4.6.0-alpha.2
Show newest version
/**
 * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.gravitee.am.authdevice.notifier.http.provider.spring;

import io.gravitee.am.authdevice.notifier.http.HttpAuthenticationDeviceNotifierConfiguration;
import io.gravitee.am.service.http.WebClientBuilder;
import io.vertx.ext.web.client.WebClientOptions;
import io.vertx.rxjava3.core.Vertx;
import io.vertx.rxjava3.ext.web.client.WebClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

/**
 * @author Eric LELEU (eric.leleu at graviteesource.com)
 * @author GraviteeSource Team
 */
@Configuration
public class HttpAuthenticationDeviceProviderSpringConfiguration {

    private static final String DEFAULT_USER_AGENT = "Gravitee.io-AM/3";
    private static final TimeUnit DEFAULT_IDLE_TIMEOUT_UNIT = TimeUnit.MILLISECONDS;

    @Autowired
    private Vertx vertx;

    @Autowired
    private HttpAuthenticationDeviceNotifierConfiguration configuration;

    @Bean
    public WebClientBuilder webClientBuilder() {
        return new WebClientBuilder();
    }

    @Bean
    @Qualifier("authDeviceNotifierWebClient")
    public WebClient httpClient(WebClientBuilder webClientBuilder) {
        WebClientOptions httpClientOptions = new WebClientOptions();
        httpClientOptions
                .setUserAgent(DEFAULT_USER_AGENT)
                .setConnectTimeout(configuration.getConnectTimeout())
                .setIdleTimeout(configuration.getIdleTimeout())
                .setIdleTimeoutUnit(DEFAULT_IDLE_TIMEOUT_UNIT)
                .setMaxPoolSize(configuration.getMaxPoolSize())
                .setSsl(true); // require TLS.

        return webClientBuilder.createWebClient(vertx, httpClientOptions, configuration.getEndpoint());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy