
io.mosip.preregistration.captcha.config.SwaggerConfig Maven / Gradle / Ivy
package io.mosip.preregistration.captcha.config;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.util.Collections;
import java.util.Map;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.servers.Server;
@Configuration
@ConfigurationProperties("mosip.preregistration.captcha")
public class SwaggerConfig {
@Value("${preregistration.captchaservice.httpclient.connections.max.per.host:20}")
private int maxConnectionPerRoute;
@Value("${preregistration.captchaservice.httpclient.connections.max:100}")
private int totalMaxConnection;
/** The id. */
private Map id;
/**
* Sets the id.
*
* @param id the id
*/
public void setId(Map id) {
this.id = id;
}
/**
* Id.
*
* @return the map
*/
@Bean
public Map ic() {
return Collections.unmodifiableMap(id);
}
/**
* Application Title
*/
private static final String TITLE = "Captcha Service";
/**
* Captcha Service
*/
private static final String DESCRIPTION = " Captcha Service for Generating and validating captcha";
@Bean
public RestTemplate restTemplateBean() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
var connnectionManagerBuilder = PoolingHttpClientConnectionManagerBuilder.create()
.setMaxConnPerRoute(maxConnectionPerRoute)
.setMaxConnTotal(totalMaxConnection);
var connectionManager = connnectionManagerBuilder.build();
HttpClientBuilder httpClientBuilder = HttpClients.custom()
.setConnectionManager(connectionManager)
.disableCookieManagement();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClientBuilder.build());
return new RestTemplate(requestFactory);
}
@Bean
public OpenAPI openApi(@Autowired OpenApiProperties openApiProperties) {
OpenAPI api = new OpenAPI().components(new Components())
.info(new Info().title(openApiProperties.getInfo().getTitle())
.version(openApiProperties.getInfo().getVersion())
.description(openApiProperties.getInfo().getDescription())
.license(new License().name(openApiProperties.getInfo().getLicense().getName())
.url(openApiProperties.getInfo().getLicense().getUrl())));
openApiProperties.getService().getServers().forEach(
server -> api.addServersItem(new Server().description(server.getDescription()).url(server.getUrl())));
return api;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy