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

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